anomaly-detect: E2E 검증 완료 + DRY_RUN=0 활성화 기록

- 코드 커밋 해시 3개(a702870/af2873d/d7789ad) 기록
- simulate.py 5/5 PASS 결과
- vlogs 주입 270 rows → 31 IP 정확 탐지
- LAPI POST 201 Created, cscli cleanup 정상
- 운영 중 주의사항 (injected 로그 잔재, 재테스트 시 cleanup 절차)
This commit is contained in:
2026-04-09 00:28:32 +09:00
parent c1eb9b9375
commit a6aac74520

View File

@@ -85,7 +85,26 @@ LLM 프롬프트가 무시되어도 실수로 사설망이 ban되지 않음.
### 코드 커밋 해시 ### 코드 커밋 해시
코드 재작성이 병렬로 진행 중 — 이 문서는 코드 완료 전에 커밋됨. 코드 커밋 해시는 별도 커밋으로 추가 예정. - `a702870` — agentic rewrite (OpenRouter + Grok-4-fast) 초기 구현
- `af2873d``simulate.py` mock 기반 smoke test (5/5 시나리오 PASS)
- `d7789ad``DRY_RUN=0` 활성화 (E2E 검증 후)
### E2E 검증 (2026-04-08)
`simulate.py` 로컬 mock 테스트 5개 시나리오 전원 PASS 후, 실 VictoriaLogs `/insert/jsonline`에 270 rows 주입해 end-to-end 검증:
- **시나리오**: sqlmap single IP (`91.92.93.100`, 60건) + distributed brute force (`91.92.94.10~39`, 150건) + 정상 노이즈 (`185.100.200.1~20`, 60건)
- **결과**: Grok-4-fast가 5턴에 **31개 공격 IP 정확 식별**, 정상 IP 0건 ban
- **지연**: ~18초 / **토큰**: 3939 prompt / 223 completion / **비용**: ~$0.001
- **LAPI**: POST 201 Created, `cscli decisions list -s anomaly-detect/distributed-wp-bruteforce` 에서 31 decisions 확인, scenario 단위 일괄 삭제 cleanup 정상
- **DRY_RUN=1 안전장치**: 첫 수동 실행은 DRY_RUN=1로 돌려 `"would ban 31 IPs"` 로그만 확인, 실제 LAPI 호출 없음
검증 완료 후 systemd unit에 `Environment=DRY_RUN=0` 추가, daemon-reload, 다음 5분 timer 사이클부터 실운영 개시.
### 운영 중 주의사항
- **injected 로그 잔재**: E2E 테스트 중 주입한 270 rows가 vlogs retention 기간 동안 남음. `sim_e2e` 마커 필드로 식별 가능. 다음 cycle에서 다시 탐지될 수 있으나 dedup 24h으로 재ban 차단됨.
- **재테스트 시**: 테스트 후 반드시 `cscli decisions delete -s anomaly-detect/<scenario>` + `/var/lib/anomaly-detect/dedup.json` 업데이트 (해당 IP 추가하거나 리셋)
[[crowdsec-safeline#~~ddos-detect (AI 행위 분석)~~ — 폐기 (2026-04-08)|폐기된 ddos-detect]] 후속. [[victorialogs|VictoriaLogs]]에 적재된 K3s 서울 APISIX access log를 5분마다 분석하여 봇/공격성 IP를 [[crowdsec-safeline|CrowdSec]]에 자동 ban으로 등록한다. [[crowdsec-safeline#~~ddos-detect (AI 행위 분석)~~ — 폐기 (2026-04-08)|폐기된 ddos-detect]] 후속. [[victorialogs|VictoriaLogs]]에 적재된 K3s 서울 APISIX access log를 5분마다 분석하여 봇/공격성 IP를 [[crowdsec-safeline|CrowdSec]]에 자동 ban으로 등록한다.