deprecate anomaly-detect (오탐 다수로 인스턴스까지 제거)

원인: Grok-4-fast agentic 분석기가 더미 IP(1.1.1.1, 1.2.3.4 시퀀스),
Cloudflare 엣지 IP(172.70.x), 자체 Linode IDC 대역(45.79.x)을
path-enumeration으로 오탐 ban. 같은 기간 hub 시나리오는 진짜 스캐너
1건(India SoloRDP)을 정확히 잡음.

작업:
- infra/platform/anomaly-detect.md → deprecated stub
- history/2026-04-25-anomaly-detect-removal.md 신규 (폐기 사유, 재가동 조건 정리)
- crowdsec-safeline.md acquisition 다이어그램에서 anomaly-detect 분기 제거
- infra/compute/infra-hosts.md hp2 default 5→4 갱신
- infra/platform/_index.md, history/_index.md 인덱스 갱신
- infra/security/vault.md apps 목록에서 항목 제거 (apps/anomaly-detect 경로는 비어있음, 유지)

보존:
- Vault secret/ai/openrouter (다른 서비스 공용 가능성)
- Gitea kaffa/anomaly-detect repo (재구축 reference)
This commit is contained in:
kaffa
2026-04-25 15:00:13 +09:00
parent ffdabc994b
commit 46cb3236d3
7 changed files with 94 additions and 171 deletions

View File

@@ -0,0 +1,62 @@
---
title: anomaly-detect 폐기 (오탐 다수)
updated: 2026-04-25
tags: [security, crowdsec, anomaly-detect, deprecation]
---
# anomaly-detect 인스턴스 완전 제거 (2026-04-25)
## 결정
[[../infra/platform/anomaly-detect|anomaly-detect]] (Grok-4-fast agentic 분석기)를 컨테이너 포함 완전 제거.
## 폐기 사유
CrowdSec active decision 점검 중 anomaly-detect가 발급한 ban이 사실상 모두 오탐임을 확인.
### 오탐 사례 (2026-04-19 ~ 2026-04-24 alerts metrics 기준)
| ban된 IP | 시나리오 | 의심 사유 |
|---|---|---|
| `1.1.1.1`, `2.2.2.2`, `3.3.3.3`, `4.4.4.4`, `5.5.5.5` | path-enumeration | 명백한 시퀀스/예시 IP. 1.1.1.1은 Cloudflare DNS |
| `1.2.3.4`, `5.6.7.8`, `9.10.11.12`, `13.14.15.16` | path-enumeration | 튜토리얼/예제용 더미 IP 패턴 |
| `172.70.242.122` | path-enumeration | **Cloudflare 엣지 IP 대역** (172.70.0.0/16). real IP 추출 실패 의심 |
| `45.79.164.218`, `45.79.207.123`, `45.79.218.123/124`, `45.79.245.123` | path-enumeration | **Linode 도쿄 IDC 대역** — Netbis NPM 오리진과 같은 IDC. 자체 인프라 가능성 |
| `203.133.168.226/227/228` | path-enumeration | 동일 ASN 연속 IP — NAT 통합 환경과 공격 구분 실패 |
같은 기간 hub 시나리오는 단 1건(`103.215.74.213`, India SoloRDP)만 잡았고 그것이 진짜 스캐너였음 (`http-probing` + `http-sensitive-files` + `http-crawl-non_statics` 동시 매칭).
### 추정 원인
1. **Grok-4-fast의 LogSQL 결과 해석 오류**: APISIX access log에 합성/health-check/tutorial 트래픽이 섞여있고, agent가 이를 "여러 IP가 같은 path 열거"로 분류
2. **real IP 추출 검증 부재**: `172.70.x.x` ban이 통과한 건 Cloudflare 엣지 IP를 client_ip로 받았다는 의미. APISIX `real_ip_from`에 CF 엣지 대역이 빠진 가능성
3. **자체 인프라 whitelist 부재**: Linode IDC `45.79.x` 대역이 화이트리스트에 없음
## 작업 내역 (헤임달 위임)
| 단계 | 명령 | 위치 |
|---|---|---|
| 1 | `systemctl stop anomaly-detect.timer anomaly-detect.service` + `disable` | incus-hp2 / `anomaly-detect` 컨테이너 |
| 2 | `cscli decisions delete --origin crowdsec` (활성 2건 해제: `45.94.31.74`, `45.76.123.45`) | jp1 incus / `crowdsec` 컨테이너 |
| 3 | `incus stop anomaly-detect; incus delete anomaly-detect` | incus-hp2 |
| 4 | `cscli machines delete <anomaly-detect watcher>` | jp1 incus / `crowdsec` 컨테이너 |
## 보존 항목
- **Vault `secret/ai/openrouter`**: OpenRouter API 키. 다른 서비스가 공용으로 사용할 가능성이 있어 삭제하지 않고 보존.
- **Gitea `kaffa/anomaly-detect` private repo**: 코드 reference로 보존 (재구축 시 참고).
## 향후 재가동 조건
재도입 시 다음 항목 선행 필수:
1. APISIX access log 합성/health-check 트래픽 사전 필터링 (Vector transform 단계)
2. APISIX `real_ip_from`에 Cloudflare 엣지 대역 (`173.245.48.0/20`, `103.21.244.0/22`, `103.22.200.0/22`, `103.31.4.0/22`, `141.101.64.0/18`, `108.162.192.0/18`, `190.93.240.0/20`, `188.114.96.0/20`, `197.234.240.0/22`, `198.41.128.0/17`, `162.158.0.0/15`, `104.16.0.0/13`, `104.24.0.0/14`, `172.64.0.0/13`, `131.0.72.0/22`) 추가 검증
3. Linode 도쿄 IDC 대역 (45.79.x 등 자체 인프라 IDC) whitelist 등록
4. dry_run으로 최소 1주 운영 후 임계값 조정
## 참고
- 정본 stub: [[../infra/platform/anomaly-detect]] (deprecated marker만 남김)
- 이전 설계 반복 이력: [[2026-04-08-anomaly-detect-iterations]]
- CrowdSec LAPI 정본: [[../infra/security/crowdsec-safeline]]