diff --git a/projects/netbis-sigmatch.md b/projects/netbis-sigmatch.md index fef6602..7f4fc0c 100644 --- a/projects/netbis-sigmatch.md +++ b/projects/netbis-sigmatch.md @@ -13,7 +13,7 @@ Netbis NPM 로그(VictoriaLogs)를 실시간 분석해 **사람 개입 없이 - **배포 예정**: jp1 Incus `ai-sigmatch` 컨테이너 (systemd timer 1분) - **책임자**: kappa 직접 개발 (Heimdall 위임 X, 개발 단계) -## 핵심 설계 (v2.3, 2026-04-24 CF Access Rules LIVE 모드 추가) +## 핵심 설계 (v2.4, 2026-04-25 A4 Matrix Profile 트리거 제거) ### 탐지 트리거 (OR 조건, 하나라도 충족 시 attack mode ON) @@ -38,16 +38,7 @@ g_t > μ × 2.0 → trigger → reset g=0 - entropy 계산은 `min_entropy_baseline_samples=20` 확보 후부터 - `uniq_ips < entropy_min_uniq_ips=30` 이면 판정 스킵 (트래픽 자체가 너무 적을 때) -**A4. Matrix Profile discord** (패턴 이상) -``` -stumpy.stump(최근 7일 total_reqs 시계열, m=12) -현재 서브시퀀스의 MP > 과거 MP 분포의 p99 → discord -``` -- m=12 (1시간 subsequence length) -- 완전 비파라메트릭. 학습 불필요, 자기 과거와 직접 비교 -- z-normalized euclidean distance라 스케일 차이 무시, **형태 차이**만 봄 -- CUSUM은 "크기 이상"만, MP는 "패턴/형태 이상" 담당 → 상보적 -- 첫 사이클은 numba JIT로 ~7s, 이후 ms 단위 +**A4. Matrix Profile discord** ~~(v2.2~v2.3)~~ — **v2.4에서 제거** (사유 아래 참조) → attack mode ON: top N contributor IP 일괄 challenge @@ -136,8 +127,9 @@ uv run python cf_client.py purge [--yes] # sigmatch prefix 전 - [x] Phase 8 (v2.1): CUSUM Page-Hinkley + global src IP entropy drop - [x] Phase 9 (v2.2): Matrix Profile discord (stumpy.stump) 추가 - [x] Phase 10: bootstrap_baseline.py — 과거 24h seed로 모든 hour samples_ok 즉시 충족 -- [x] **Phase 11 (v2.3): CF Access Rules 호출 (managed_challenge/block)** ← 현재 DRY로 검증 -- [ ] Phase 11 LIVE 전환: `--live` 플래그로 실 운영 (환경변수 CF credentials 주입) +- [x] Phase 11 (v2.3): CF Access Rules 호출 (managed_challenge/block) — DRY 검증 단계 +- [x] **Phase 11.6 (v2.4): A4 Matrix Profile 트리거 제거** ← 현재 (false positive 누적 사고 회피) +- [ ] Phase 11 LIVE 전환: `--live` 플래그로 실 운영 - [ ] Phase 12: jp1 Incus 배포 (systemd timer) ## 파라미터 (사람 조정 가능) @@ -177,6 +169,14 @@ uv run python cf_client.py purge [--yes] # sigmatch prefix 전 - ~~IsolationForest + DBSCAN per-IP anomaly~~ → 정상 폴링 유저를 outlier로 잡아 오탐 위험 - ~~Persistence 단독 트리거~~ → 페이지 오래 열어둔 유저 6 사이클 지속 시 오탐 - ~~사전 정의 hard rule (R1~R6)~~ → 공격 패턴 종속, 자동 시그니처 생성 취지 어긋남 +- ~~Matrix Profile discord (attack 트리거 용도, v2.2~v2.3)~~ → **v2.4 제거**. 사유: + - threshold p99 = 정의상 1% false positive. 매 5분 사이클 평가 → 하루 ~14회 발동 + - MP의 self-similar 시계열 가정이 우리 트래픽과 안 맞음. m=12 (1시간) 윈도우는 + daily seasonality(낮/저녁/새벽 패턴 변동)보다 짧아 자연스러운 시간대 변동을 discord로 잡음 + - 단일 시그널이 attack_mode 트리거가 되어 attack_contributor에서 reqs 순 top 20을 + 무차별 차단 → 18시간 동안 99 distinct IP 차단 누적 (webhook 4~5개 + KR 활발 유저 + + IPv6 모바일 240/4 가짜 IP). LIVE였으면 베팅 콜백 중단 사고 + - matrix_profile.py 모듈은 보존 (관찰/연구용 수동 호출 가능). attack 트리거에서만 제거 ## 폐기 후보 (검토 후 불채택)