APISIX WAF 연동 완료: plugin_metadata, Juice Shop 테스트, waf-kr zone, DNAT 규칙
This commit is contained in:
@@ -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 노드를 읽음 — 주의
|
||||
|
||||
Reference in New Issue
Block a user