From 3a0f75ec136b4ecc86643ff9fd6961353db3b61b Mon Sep 17 00:00:00 2001 From: kappa Date: Sun, 15 Mar 2026 10:40:21 +0900 Subject: [PATCH] =?UTF-8?q?KR=EC=A1=B4=203=EC=A4=91=20=EB=B3=B4=EC=95=88?= =?UTF-8?q?=20=EA=B5=AC=EC=A1=B0=20=EB=B0=8F=20=EA=B3=B5=EA=B2=A9=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EA=B2=B0=EA=B3=BC=20=EC=A0=95?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit BunnyCDN WAF + SafeLine + CrowdSec 연동 현황, sandbox-tokyo에서 실시한 공격 테스트 결과 기록 Co-Authored-By: Claude Opus 4.6 (1M context) --- infra/crowdsec-safeline.md | 50 +++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/infra/crowdsec-safeline.md b/infra/crowdsec-safeline.md index 417582c..c8015a3 100644 --- a/infra/crowdsec-safeline.md +++ b/infra/crowdsec-safeline.md @@ -1,6 +1,6 @@ --- title: CrowdSec 및 SafeLine WAF -updated: 2026-03-12 +updated: 2026-03-15 --- ## DB 테이블 @@ -14,3 +14,51 @@ DB 테이블은 blocklist (ip PK, reason, origin, expires_at), verified_ips, met ## Bouncer Bouncer 목록: [[apisix]]-waf-bouncer, bunny-cdn-bouncer, cs-[[cloudflare|cf]]-worker-bouncer + +## 3중 보안 구조 (KR존, 2026-03-15) + +``` +클라이언트 → BunnyCDN WAF (1차) → APISIX + SafeLine WAF (2차) → CrowdSec (분석/3차) +``` + +### 1차: BunnyCDN WAF (OWASP CRS) +- 위치: CDN 에지 (오리진 도달 전 차단) +- 차단: SQLi, XSS, CMDi, SSRF, Shellshock, Log4j +- 비활성화한 룰: DATA LEAKAGES SQL (id=911) — NocoDB API 응답 오탐 방지 +- 통과: Request Smuggling, NoSQLi, 일반 경로 스캔 + +### 2차: SafeLine WAF (chaitin-waf 플러그인) +- 위치: APISIX 내부 플러그인 +- BunnyCDN을 통과한 공격 차단 +- 글로벌 적용 (global_rules로 chaitin-waf 설정) + +### 3차: CrowdSec (로그 분석) +- 위치: jp1 CrowdSec (10.253.100.240:8085) +- APISIX http-logger → CrowdSec HTTP acquisition (global_rules) +- 파서: custom/apisix-json-logs (APISIX http-logger JSON 파싱) +- 반복 공격자 패턴 탐지 (시나리오 매칭) +- 인증: `Authorization: apisix-crowdsec-log-2024` + +### 공격 테스트 결과 (sandbox-tokyo → nocodb.inouter.com) + +| 공격 | 결과 | 차단 위치 | +|------|------|----------| +| SQLi (`OR 1=1`) | 403 | BunnyCDN WAF | +| SQLi (대소문자 혼합) | 403 | BunnyCDN WAF | +| SQLi (더블 인코딩) | 403 | BunnyCDN WAF | +| SQLi (POST body) | 403 | BunnyCDN WAF | +| XSS (`