Files
obsidian/projects/netbis-sigmatch.md

3.0 KiB

title, updated, tags
title updated tags
Netbis Sigmatch — VL 기반 자동 시그니처 생성 + CF 차단 2026-04-24
netbis
security
ai-defense
wip

개요

Netbis NPM 로그(VictoriaLogs)를 실시간 분석해 사람 개입 없이 자동으로 공격 시그니처를 생성하고 CF IP Access Rules에 차단 반영. LAPI·CrowdSec·LLM 모두 사용 안 함 — 통계/ML 기반.

  • 저장소: https://gitea.inouter.com/kaffa/netbis-sigmatch
  • 로컬 개발: ~/netbis-sigmatch/ (Mac)
  • 배포 예정: jp1 Incus ai-sigmatch 컨테이너 (systemd timer 1분)
  • 책임자: kappa 직접 개발 (Heimdall 위임 X, 개발 단계)

설계 결정

결정 근거
탐지 주기 1분 (슬라이딩 윈도우 5분) 5분 내 방어 개시 목표
분석 대상 5분 요청 100+ IP만 통계적 유의성 확보, 노이즈 제거
LLM 사용 없음 이전 ddos-detect 실패 원인(매 요청 LLM 동기 호출) 교훈
LAPI 경유 없음 Netbis는 로그 파이프라인이 독립, LAPI 중간 레이어 불필요
차단 저장소 CF IP Access Rules 직접 한도 50k (vs Custom List 10k)
Feature 13종 + 메타 (경로 문자열·UA 문자열 비의존) 공격 path·UA가 매번 바뀌어도 시그니처 재사용 가능

Feature 확정

5분 윈도우, 요청 100+ IP.

카테고리 Feature
볼륨 reqs, rate_per_min
경로 shape path_entropy, top_path_ratio, uniq_paths
UA ua_count
응답 status_2xx_ratio, status_4xx_ratio
간격 iri_mean, iri_p50, iri_p90, iri_cv
행동 static_ratio, ref_count, ref_top_ratio, active_sec, has_post
메타 is_reserved (240/4 플래그)

제거된 후보

  • top_path·top_ua 문자열 — 공격자가 매번 바꿈. 시그니처가 종속되면 재생성 부담
  • ref_none_ratio, ref_external_ratio — 봇도 referer 세팅, 실측 전부 0
  • UA 문자열 기반 봇 분류 — 정교한 봇은 정상 Chrome/Safari UA 사용

개발 단계

  • Phase 1: feature 추출 파이프라인 (fetch_features.py)
  • Phase 2: 24h baseline 수집기 (정상 분포 학습용)
  • Phase 3: IsolationForest 기반 anomaly detection
  • Phase 4: DBSCAN 클러스터링 → 시그니처 자동 합성
  • Phase 5: dry-run (매치 기록만, ban X)
  • Phase 6: CF IP Access Rules 호출 (ban + TTL)
  • Phase 7: jp1 Incus 배포 (systemd timer)

관찰된 공격 유형 (2026-04-24 실측)

유형 A — 리소스 크롤러: static_ratio > 0.5, iri_p90 < 0.1, uniq_paths > 50, 짧은 active

유형 B — API/HTML 봇: static_ratio < 0.05, iri_p90 58s, path_entropy < 5, top_path_ratio 0.20.3, active 200s+

루프 봇: ref_top_ratio >= 0.9 + reqs >= 100 (단독 ban 기준 후보)

연관 정본