BunnyCDN 보안 섹션을 bunnycdn-security.md로 분리
This commit is contained in:
66
services/bunnycdn-security.md
Normal file
66
services/bunnycdn-security.md
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
---
|
||||||
|
title: BunnyCDN 엣지 보안 (CrowdSec + 국가 차단)
|
||||||
|
updated: 2026-03-23
|
||||||
|
tags: [cdn, bunnycdn, security, crowdsec, edge-script]
|
||||||
|
---
|
||||||
|
|
||||||
|
## 구성
|
||||||
|
|
||||||
|
- 엣지 스크립트: `crowdsec-bouncer-middleware` (ID: 64811)
|
||||||
|
- 연결된 Pull Zone: inouter (5316471), actions (5330178)
|
||||||
|
- 관리: cfb-manager (K3s tools ns)
|
||||||
|
- 소스: [[crowdsec-safeline|CrowdSec]] bloom filter + Cloudflare Turnstile 캡차
|
||||||
|
|
||||||
|
## 동작 순서
|
||||||
|
|
||||||
|
```
|
||||||
|
요청 → BunnyCDN 엣지
|
||||||
|
1. 국가 차단 (Cdn-RequestCountryCode 헤더)
|
||||||
|
- 차단 시 403 반환
|
||||||
|
2. CrowdSec bloom filter (악성 IP 판별)
|
||||||
|
- bloom filter hit → 캡차 또는 403
|
||||||
|
- cfb-manager가 주기적으로 bloom filter 업데이트
|
||||||
|
3. 캡차 (Cloudflare Turnstile)
|
||||||
|
- bloom hit된 IP에게 캡차 제시
|
||||||
|
- 통과 시 4시간 허용 (DB + 쿠키)
|
||||||
|
4. 정상 → Origin으로 전달
|
||||||
|
```
|
||||||
|
|
||||||
|
## 차단 국가
|
||||||
|
|
||||||
|
US, CA, GB, DE, FR, IT, ES, NL, BE, AT, CH, SE, NO, DK, FI, PL, CZ, PT, IE, RO, HU, BG, HR, SK, SI, LT, LV, EE, LU, MT, CY, GR, IS, UA, RU, BY
|
||||||
|
|
||||||
|
(북미 + 유럽 + 구소련)
|
||||||
|
|
||||||
|
## 주의사항
|
||||||
|
|
||||||
|
- **BunnyCDN Traffic Manager 국가 차단은 사용하지 않음** — Let's Encrypt 검증 및 Origin Shield fetch를 막아서 Free SSL 발급 실패 + 500 에러 유발
|
||||||
|
- 엣지 스크립트의 국가 차단은 `Cdn-RequestCountryCode` 헤더 기반 → CDN 내부 요청(Let's Encrypt, Origin Shield)에는 이 헤더가 없으므로 영향 없음
|
||||||
|
- Free SSL 자동 발급/갱신 정상 동작
|
||||||
|
|
||||||
|
## Pull Zone 설정
|
||||||
|
|
||||||
|
| Pull Zone | Origin | 비고 |
|
||||||
|
|-----------|--------|------|
|
||||||
|
| inouter (5316471) | https://172.233.93.180 (오사카) | |
|
||||||
|
| actions (5330178) | https://220.120.65.245 (서울) | |
|
||||||
|
|
||||||
|
- VerifyOriginSSL: false
|
||||||
|
- BlockedCountries: 비어있음 (엣지 스크립트에서 처리)
|
||||||
|
- Origin Shield: 비활성화
|
||||||
|
|
||||||
|
## CrowdSec Bouncer 구조
|
||||||
|
|
||||||
|
```
|
||||||
|
CrowdSec (jp1 Incus) → 악성 IP 탐지
|
||||||
|
↓
|
||||||
|
cfb-manager (K3s tools ns) → bloom filter 생성 → BunnyCDN API로 엣지 스크립트 코드에 삽입
|
||||||
|
↓
|
||||||
|
엣지 스크립트 → 요청 IP를 bloom filter로 체크 → hit 시 캡차/차단
|
||||||
|
```
|
||||||
|
|
||||||
|
## 관련 문서
|
||||||
|
|
||||||
|
- [[bunnycdn]] — BunnyCDN API 레퍼런스
|
||||||
|
- [[crowdsec-safeline]] — CrowdSec 및 SafeLine WAF 설정
|
||||||
|
- [[cloudflare]] — Cloudflare DNS/CDN (Turnstile 캡차 키 관리)
|
||||||
@@ -598,38 +598,9 @@ Origin Shield는 CDN 엣지 PoP와 Origin 사이의 **2차 캐싱 레이어**.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 15. 엣지 스크립트 보안 (CrowdSec + 국가 차단)
|
## 15. 엣지 스크립트 보안
|
||||||
|
|
||||||
### 구성
|
→ [[bunnycdn-security]] 참조 (CrowdSec bouncer + 국가 차단 + 캡차)
|
||||||
- 스크립트: `crowdsec-bouncer-middleware` (ID: 64811)
|
|
||||||
- 연결된 Pull Zone: inouter (5316471), actions (5330178)
|
|
||||||
- 관리: cfb-manager (K3s tools ns)
|
|
||||||
|
|
||||||
### 동작 순서
|
|
||||||
```
|
|
||||||
요청 → BunnyCDN 엣지
|
|
||||||
1. 국가 차단 (Cdn-RequestCountryCode 헤더)
|
|
||||||
- 차단: US,CA,GB,DE,FR,IT,ES,NL,BE,AT,CH,SE,NO,DK,FI,PL,CZ,PT,IE,RO,HU,BG,HR,SK,SI,LT,LV,EE,LU,MT,CY,GR,IS,UA,RU,BY
|
|
||||||
- 차단 시 403 반환
|
|
||||||
2. CrowdSec bloom filter (악성 IP 판별)
|
|
||||||
- bloom filter에 hit → 캡차 또는 403
|
|
||||||
- cfb-manager가 주기적으로 bloom filter 업데이트
|
|
||||||
3. 캡차 (Cloudflare Turnstile)
|
|
||||||
- bloom hit된 IP에게 캡차 제시
|
|
||||||
- 통과 시 4시간 허용 (DB + 쿠키)
|
|
||||||
4. 정상 → Origin으로 전달
|
|
||||||
```
|
|
||||||
|
|
||||||
### 주의사항
|
|
||||||
- BunnyCDN Traffic Manager 국가 차단은 사용하지 않음 (Let's Encrypt/Origin Shield 문제 유발)
|
|
||||||
- 엣지 스크립트의 국가 차단은 `Cdn-RequestCountryCode` 헤더 기반이라 내부 요청에 영향 없음
|
|
||||||
- Free SSL 발급: 국가 차단이 엣지 스크립트에 있으므로 Let's Encrypt 검증 통과 가능
|
|
||||||
|
|
||||||
### Pull Zone 설정
|
|
||||||
- Origin: HTTPS (서울 220.120.65.245, 오사카 172.233.93.180)
|
|
||||||
- VerifyOriginSSL: false
|
|
||||||
- 국가 차단(BlockedCountries): 비어있음 (엣지 스크립트에서 처리)
|
|
||||||
- Origin Shield: 비활성화
|
|
||||||
|
|
||||||
## 참고 링크
|
## 참고 링크
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user