netbis-sigmatch v2.4: A4 Matrix Profile 트리거 제거
18h DRY 가동 결과 99 distinct IP 차단 누적. attack_contributor 2,668건 중 97.5%가 MP only 시그널 발동. MP threshold p99 (1% 오탐) × 매 5분 사이클 평가 = 누적 폭주. attack_contributor의 단순 volume top이 webhook + heavy normal user 항상 잡음. LIVE였으면 베팅 콜백 4~5개 차단 + KR 활발 유저 + IPv6 모바일 240/4 가짜 IP 99개 차단 = 서비스 사고. matrix_profile.py 모듈은 보존 (관찰/연구용). loop.py에서 호출만 제거. 폐기 사유: MP의 self-similar 시계열 가정이 daily seasonality 있는 트래픽과 안 맞음 + 단일 시그널이 contributor 단계로 무차별 차단 증폭
This commit is contained in:
@@ -13,7 +13,7 @@ Netbis NPM 로그(VictoriaLogs)를 실시간 분석해 **사람 개입 없이
|
|||||||
- **배포 예정**: jp1 Incus `ai-sigmatch` 컨테이너 (systemd timer 1분)
|
- **배포 예정**: jp1 Incus `ai-sigmatch` 컨테이너 (systemd timer 1분)
|
||||||
- **책임자**: kappa 직접 개발 (Heimdall 위임 X, 개발 단계)
|
- **책임자**: kappa 직접 개발 (Heimdall 위임 X, 개발 단계)
|
||||||
|
|
||||||
## 핵심 설계 (v2.3, 2026-04-24 CF Access Rules LIVE 모드 추가)
|
## 핵심 설계 (v2.4, 2026-04-25 A4 Matrix Profile 트리거 제거)
|
||||||
|
|
||||||
### 탐지 트리거 (OR 조건, 하나라도 충족 시 attack mode ON)
|
### 탐지 트리거 (OR 조건, 하나라도 충족 시 attack mode ON)
|
||||||
|
|
||||||
@@ -38,16 +38,7 @@ g_t > μ × 2.0 → trigger → reset g=0
|
|||||||
- entropy 계산은 `min_entropy_baseline_samples=20` 확보 후부터
|
- entropy 계산은 `min_entropy_baseline_samples=20` 확보 후부터
|
||||||
- `uniq_ips < entropy_min_uniq_ips=30` 이면 판정 스킵 (트래픽 자체가 너무 적을 때)
|
- `uniq_ips < entropy_min_uniq_ips=30` 이면 판정 스킵 (트래픽 자체가 너무 적을 때)
|
||||||
|
|
||||||
**A4. Matrix Profile discord** (패턴 이상)
|
**A4. Matrix Profile discord** ~~(v2.2~v2.3)~~ — **v2.4에서 제거** (사유 아래 참조)
|
||||||
```
|
|
||||||
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 단위
|
|
||||||
|
|
||||||
→ attack mode ON: top N contributor IP 일괄 challenge
|
→ 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 8 (v2.1): CUSUM Page-Hinkley + global src IP entropy drop
|
||||||
- [x] Phase 9 (v2.2): Matrix Profile discord (stumpy.stump) 추가
|
- [x] Phase 9 (v2.2): Matrix Profile discord (stumpy.stump) 추가
|
||||||
- [x] Phase 10: bootstrap_baseline.py — 과거 24h seed로 모든 hour samples_ok 즉시 충족
|
- [x] Phase 10: bootstrap_baseline.py — 과거 24h seed로 모든 hour samples_ok 즉시 충족
|
||||||
- [x] **Phase 11 (v2.3): CF Access Rules 호출 (managed_challenge/block)** ← 현재 DRY로 검증
|
- [x] Phase 11 (v2.3): CF Access Rules 호출 (managed_challenge/block) — DRY 검증 단계
|
||||||
- [ ] Phase 11 LIVE 전환: `--live` 플래그로 실 운영 (환경변수 CF credentials 주입)
|
- [x] **Phase 11.6 (v2.4): A4 Matrix Profile 트리거 제거** ← 현재 (false positive 누적 사고 회피)
|
||||||
|
- [ ] Phase 11 LIVE 전환: `--live` 플래그로 실 운영
|
||||||
- [ ] Phase 12: jp1 Incus 배포 (systemd timer)
|
- [ ] 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로 잡아 오탐 위험
|
- ~~IsolationForest + DBSCAN per-IP anomaly~~ → 정상 폴링 유저를 outlier로 잡아 오탐 위험
|
||||||
- ~~Persistence 단독 트리거~~ → 페이지 오래 열어둔 유저 6 사이클 지속 시 오탐
|
- ~~Persistence 단독 트리거~~ → 페이지 오래 열어둔 유저 6 사이클 지속 시 오탐
|
||||||
- ~~사전 정의 hard rule (R1~R6)~~ → 공격 패턴 종속, 자동 시그니처 생성 취지 어긋남
|
- ~~사전 정의 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 트리거에서만 제거
|
||||||
|
|
||||||
## 폐기 후보 (검토 후 불채택)
|
## 폐기 후보 (검토 후 불채택)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user