Files
obsidian/services/bunnycdn-security.md
kaffa d25dc3e52f obsidian 정합성 정정 — bouncer 단일화 잔존 stale 정리
- infra/compute/infra-hosts.md: jp1 default 20→19, cs-cf-worker-bouncer 컨테이너 라인에서 제거
- services/bunnycdn-security.md: Edge Script 64811 / bloom filter / 국가차단 / Turnstile inouter-bunny 폐기 반영. 현재 layer (Bunny Shield + Rate Limit + 대역폭 한도) 중심 재작성
- infra/network/apisix.md: Edge Script 64811 attach 라인 폐기 표시
- infra/security/cloudflare.md: Workers 인벤토리 + Worker 라우트 + CF proxy 패턴 + cfb-manager 절 모두 폐기 반영
- infra/security/crowdsec-safeline.md: cs-cf-worker-bouncer 운영 중 문장 폐기 표시
- ops-agents/overview.md: Syn 영역 정의에서 폐기 자산 명시
- history/_index.md: 누락된 2026-04-25-netbis-npm-vector-msg-rewrite, 2026-04-26-bouncer-consolidation 등록 + frontmatter updated
2026-04-26 10:33:48 +09:00

6.7 KiB

title, updated, tags
title updated tags
BunnyCDN 엣지 보안 (Shield + Rate Limit + 대역폭 한도) 2026-04-26 bouncer 단일화로 Edge Script 64811 + bloom filter + Turnstile inouter-bunny 모두 폐기 반영
cdn
bunnycdn
security

[!warning] 2026-04-26 bouncer 단일화로 다음 layer 폐기

  • Edge Script 64811 (crowdsec-bouncer-middleware) — 전 풀존에서 detach + 스크립트 자체 삭제
  • CrowdSec bloom filter 동기화infra-tool 컨테이너의 /opt/crowdsec-bouncer/bouncer.py 정지 + 삭제
  • 국가 차단 layer — Edge Script 64811 안에 구현됐던 분기라 함께 사라짐
  • Turnstile inouter-bunny-middleware 위젯 — 미들웨어 env에서만 사용했어서 함께 폐기

정리 경과: ../history/2026-04-26-bouncer-consolidation CrowdSec ban은 이제 netbis-cf-firewall (Cloudflare Firewall Rule, netbis 6 zone에만 적용) 만 enforce. BunnyCDN 풀존 (iron-jp / iron-kr 등)에는 IP-list 기반 차단 layer 없음.

현재 보호 layer (2026-04-26 기준)

요청 → BunnyCDN 엣지
  1. Bunny Shield WAF (OWASP CRS)         — 모든 풀존 활성
  2. Bunny Shield Rate Limiting            — 풀존당 1개 (IPBurst200per10s)
  3. MonthlyBandwidthLimit                 — 풀존당 100GB (i-gate 10GB)
  4. Origin 전달

IP-list 기반 차단/국가 차단은 현재 layer에 없음. CrowdSec 시나리오 발동 IP는 netbis-cf-firewall 경로 (netbis 6 zone) 또는 SafeLine WAF / APISIX limit-req 경로로만 차단.

Pull Zone

ID 이름 OriginUrl Smart Cache IgnoreQS BlockNoRef 비고
5555227 iron-kr https://220.120.65.245 false true 메인 inouter.com 계열
5555247 iron-jp https://172.233.93.180 false true 미사용 (2026-04-17 호스트네임 전부 제거)
5555224 iron-kr-waf https://220.120.65.245:9443 true true SafeLine WAF 다운스트림 보호
5584382 iron-git https://220.120.65.245 true false git smart HTTP — Rate Limit 미적용
5557897 i-gate https://172.233.93.180 true true idle 슬롯

전 풀존 MiddlewareScriptId: null (2026-04-26 Edge Script 64811 폐기 후 자동 정리). 공통 설정: EnableLogging: true, EnableWebSockets: true (max 500), EnableGeoZone*: true, BlockedCountries: [], BlockedIps: [], EdgeRules: [], OriginType: 0 (URL), VerifyOriginSSL: false, EnableOriginShield: false.

호스트네임 인벤토리

Pull Zone Hostname 시스템?
iron-kr iron-kr.b-cdn.net
iron-kr actions.it.com
iron-kr n8n.inouter.com
iron-kr jarvis.inouter.com
iron-kr telegram-webhook.inouter.com
iron-kr vault.inouter.com
iron-kr-nowaf iron-kr-nowaf.b-cdn.net
iron-kr-nowaf outline.inouter.com (WAF 제외용, 2026-04-21 이전)
iron-jp iron-jp.b-cdn.net (시스템만 남음, 사용자 호스트 전부 제거 2026-04-17)
iron-kr-waf iron-kr-waf.b-cdn.net
iron-kr-waf juiceshop.keepanker.cv
iron-git iron-git.b-cdn.net
iron-git gitea.inouter.com
i-gate i-gate.b-cdn.net

총 13 (사용자 8 + 시스템 5). 전부 HasCertificate: true (Let's Encrypt 자동 발급/갱신).

DDoS 과금 정책 (2026-04-17 지원팀 확인, Ticket #386429)

  • WAF 차단 요청: 과금됨. 차단 응답도 outgoing bandwidth로 집계. 단 Origin 응답보다 크기가 작아 비용은 적음
  • DDoS PoW 챌린지 페이지: 과금 안 됨. 챌린지는 Bunny 소유 별도 도메인에서 호스팅되어 내 계정 대역폭 미포함
  • DDoS 크레딧/보호: 공식 보장 없음. Shield가 정상 동작했음에도 피해가 큰 경우 케이스별 goodwill 크레딧 검토 가능 (보장 아님)
  • 대응: Rate Limiting으로 불필요한 차단 응답 자체를 줄이고, MonthlyBandwidthLimit으로 비용 상한 설정

대역폭 한도 (2026-04-17 설정)

Pull Zone MonthlyBandwidthLimit
iron-kr 100 GB
iron-jp 100 GB
iron-kr-waf 100 GB
iron-git 100 GB
i-gate 10 GB

DDoS 비용 폭탄 방지용. 정상 월 사용량 ~1.2GB 대비 약 40배 여유.

⚠️ MonthlyBandwidthLimit 초과 시 동작 (2026-04-17 지원팀 확인):

  • 503이 아니라 Pull Zone 자체가 비활성화 — 모든 요청에 응답 불가
  • DNS를 Bunny 밖으로 돌려야 복구됨
  • 실시간 적용 아님 — cron job이 수 시간 간격으로 실행되어 초과 후에도 트래픽이 한동안 흐를 수 있음
  • Rate Limiting 규칙: Shield 무료 플랜(planType: 0)은 풀존당 2개. 증가하려면 플랜 업그레이드 필요
  • 무료 플랜 제한: timeframe 최대 10초, blockTime 최대 60초. Advanced 플랜 필요 시 더 긴 윈도우/차단 가능

Rate Limiting 규칙 (2026-04-17 설정, 전 풀존 동일)

규칙 requestCount timeframe blockTime actionType 용도
IPBurst200per10s 200 10s 60s 1 (Block) 순간 폭주 (초당 20+) → 즉시 차단

무료 플랜 1/2 슬롯 사용. MidRate 규칙은 NAT/공유기 환경 오탐 + 비브라우저 클라이언트(git, API) 호환 문제로 삭제 (2026-04-17).

⚠️ iron-git (5584382)은 rate limit 규칙 없음 — git smart HTTP는 push/pull 시 단기간에 대량 요청을 보내므로 rate limit에 걸림. git 클라이언트는 Challenge도 통과 불가. 2026-04-17 rate limit으로 인한 접속 장애 발생 후 규칙 전부 삭제.

폐기된 자산 (참고 — 재가동 시 history 참조)

자산 폐기일 비고
Edge Script 64811 crowdsec-bouncer-middleware 2026-04-26 DELETE /compute/script/64811 HTTP 204. iron-jp/iron-kr/iron-kr-waf/iron-git MiddlewareScriptId 자동 null
infra-tool:/opt/crowdsec-bouncer/bouncer.py (bloom sync) 2026-04-26 cron + 디렉토리 삭제
Turnstile inouter-bunny-middleware (0x4AAAAAAC3otPWhldI96Aks) 2026-04-26 env baked-in, 미들웨어 폐기와 함께
국가 차단 layer (Edge Script 코드 내 분기) 2026-04-26 미들웨어 코드 자체가 사라짐
Vault secret/cloud/cloudflare/turnstile-inouter-bunny 보존 폐기 결정 후속
Gitea kaffa/crowdsec-bunny-bouncer (소스) 보존 재구축 reference

상세: ../history/2026-04-26-bouncer-consolidation

관련 문서