APISIX WAF 연동 완료: plugin_metadata, Juice Shop 테스트, waf-kr zone, DNAT 규칙

This commit is contained in:
kappa
2026-03-25 18:19:26 +09:00
parent 4f75b9dffb
commit bc147e3f91
3 changed files with 57 additions and 0 deletions

View File

@@ -83,7 +83,33 @@ Bouncer 목록: [[apisix]]-waf-bouncer, bunny-cdn-bouncer, cs-[[cloudflare|cf]]-
| NoSQLi (JSON) | 401 | 통과 (PostgreSQL이라 무효, 인증에서 차단) |
| WP scan | 404 | 통과 (존재하지 않는 경로) |
### waf-kr BunnyCDN Pull Zone (2026-03-25)
APISIX SafeLine WAF 전용 CDN zone.
| 항목 | 값 |
|------|-----|
| Zone ID | 5554681 |
| Name | waf-kr |
| Origin | https://220.120.65.245:9443 |
| 경로 | 인터넷 → BunnyCDN(waf-kr) → OpenWrt HAProxy(:9443) → APISIX NodePort(31137) → SafeLine WAF → K3s 서비스 |
등록된 호스트: `juiceshop.keepanker.cv` (OWASP Juice Shop, WAF 테스트용)
### Juice Shop WAF 테스트 결과 (2026-03-25)
| 요청 | 결과 | WAF Action |
|------|------|------------|
| 일반 GET / | 200 | pass |
| SQLi (`?id=1 OR 1=1`) | 403 | reject (SafeLine) |
| XSS (`?q=<script>alert(1)</script>`) | 403 | reject (SafeLine) |
### 다음 단계: CrowdSec 자동 차단
계획: SafeLine WAF 차단 로그 → APISIX http-logger → jp1 CrowdSec → 커스텀 시나리오 (3회 차단 시 ban) → bouncer로 APISIX ip-restriction 적용
### 참고
- BunnyCDN WAF 차단 시 오리진에 로그 안 옴 → CrowdSec에 미수신
- 리얼 IP: 외부 트래픽은 `X-Forwarded-For`로 정상 전달, LAN은 `127.0.0.1`
- OpenWrt에 CrowdSec firewall bouncer 설치 가능하나 DNAT 구조라 리얼 IP 매칭 불가
- chaitin-waf 플러그인은 `plugin_attr`이 아닌 **`plugin_metadata`(etcd)**에서 detector 노드를 읽음 — 주의