From a6aac7452098fefac25fed053644ff89bb00ba3f Mon Sep 17 00:00:00 2001 From: kaffa Date: Thu, 9 Apr 2026 00:28:32 +0900 Subject: [PATCH] =?UTF-8?q?anomaly-detect:=20E2E=20=EA=B2=80=EC=A6=9D=20?= =?UTF-8?q?=EC=99=84=EB=A3=8C=20+=20DRY=5FRUN=3D0=20=ED=99=9C=EC=84=B1?= =?UTF-8?q?=ED=99=94=20=EA=B8=B0=EB=A1=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 코드 커밋 해시 3개(a702870/af2873d/d7789ad) 기록 - simulate.py 5/5 PASS 결과 - vlogs 주입 270 rows → 31 IP 정확 탐지 - LAPI POST 201 Created, cscli cleanup 정상 - 운영 중 주의사항 (injected 로그 잔재, 재테스트 시 cleanup 절차) --- infra/anomaly-detect.md | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/infra/anomaly-detect.md b/infra/anomaly-detect.md index 7924369..8d9a657 100644 --- a/infra/anomaly-detect.md +++ b/infra/anomaly-detect.md @@ -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/` + `/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으로 등록한다.