From 03ef7874445626727825d03dc53321ff3cd315a2 Mon Sep 17 00:00:00 2001 From: kaffa Date: Sat, 23 May 2026 14:00:25 +0900 Subject: [PATCH] =?UTF-8?q?cf-bouncer:=20fall-mvp.com=20zone=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0=20=E2=80=94=20netbis=20CF=20bouncer=2021=EC=9D=BC=20?= =?UTF-8?q?=EB=A7=8C=EC=97=90=20=EB=8F=99=EA=B8=B0=ED=99=94=20=EC=9E=AC?= =?UTF-8?q?=EA=B0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fall-mvp.com zone이 CF에서 삭제되어 bouncer가 2026-05-02부터 fatal 루프로 정지. config에서 2줄 제거 후 enable+start. LAPI pull 2026-05-23T04:56:28Z로 갱신 확인. - infra/security/crowdsec-safeline.md: 적용 zone 6 → 5 - history/2026-05-23-cf-bouncer-fall-mvp-removal.md: 인시던트 기록 --- .../2026-05-23-cf-bouncer-fall-mvp-removal.md | 44 +++++++++++++++++++ infra/security/crowdsec-safeline.md | 10 ++--- 2 files changed, 49 insertions(+), 5 deletions(-) create mode 100644 history/2026-05-23-cf-bouncer-fall-mvp-removal.md diff --git a/history/2026-05-23-cf-bouncer-fall-mvp-removal.md b/history/2026-05-23-cf-bouncer-fall-mvp-removal.md new file mode 100644 index 0000000..3a2f392 --- /dev/null +++ b/history/2026-05-23-cf-bouncer-fall-mvp-removal.md @@ -0,0 +1,44 @@ +--- +date: 2026-05-23 +topic: cf-bouncer config에서 fall-mvp.com zone 제거 — netbis CF bouncer 21일 만에 동기화 재개 +areas: [infra/security/crowdsec-safeline] +tags: [history, cloudflare, crowdsec, bouncer, netbis] +--- + +# 2026-05-23 / cf-bouncer fall-mvp.com 제거 + 동기화 재개 + +## 배경 + +- `cs-cloudflare-bouncer-1777082222` (= [[../infra/security/crowdsec-safeline#netbis-cf-firewall-cloudflare-firewall-rule-bouncer-재구축-2026-04-25|netbis-cf-firewall]]) 가 2026-05-02 00:21:58Z 정지 후 21일째 down 상태였음 — kappa가 [[2026-05-23-kr1-k3s-stuck-cascade|kr1 k3s stuck 점검]] 흐름에서 발견. +- 정지 원인 추적 결과 root cause는 단순 `disabled` 아니라 **fall-mvp.com zone (`6c171579912a271c0fc89c8187493b0f`)이 CF에서 삭제됨** → bouncer가 시작 시 `account ... doesn't have access to zone ...` fatal exit → 무한 재시작 루프 → 누군가 `systemctl stop && disable`로 끄고 잊은 채로 21일 방치. + +## 조치 + +1. Vault `secret/cloud/cloudflare-netbis` 의 firewall_bouncer_token으로 CF API 직접 확인: + - zone `6c171579912a271c0fc89c8187493b0f` → `code 1001 "Invalid zone identifier"` (zone 자체 존재하지 않음) + - netbis account의 남은 zone = 5개 (fall-vip, fall-vip7, psd777, rss-555, rss-7790) 모두 active +2. `/etc/crowdsec/bouncers/crowdsec-cloudflare-bouncer.yaml` 백업 후 fall-mvp 항목 2줄 제거 (actions/zone_id 쌍) +3. `systemctl enable --now crowdsec-cloudflare-bouncer.service` +4. LAPI pull 갱신 확인: + - 이전: `Last API pull: 2026-05-02T00:21:55Z` + - 이후: `Last API pull: 2026-05-23T04:56:28Z` ✓ + +## 변경 후 상태 + +| 항목 | 값 | +|---|---| +| 적용 zone | 5개 (fall-mvp 제거됨) | +| service | `active (running)` since 2026-05-23 04:55:58 UTC | +| LAPI bouncer | `cs-cloudflare-bouncer-1777082222` Valid, 30s 폴링 정상 | +| config | `/etc/crowdsec/bouncers/crowdsec-cloudflare-bouncer.yaml` (백업: `.bak.20260523`) | + +## 미해결 + +- **fall-mvp.com zone이 언제/왜 CF에서 삭제됐는지 미상.** netbis 측 의도된 폐기일 가능성 — 별도 확인 필요. +- bouncer 무한 재시작 루프가 production silently로 21일 방치된 건 모니터링 공백 — `systemctl is-active crowdsec-cloudflare-bouncer.service` 알람 추가 검토. + +## 참조 + +- [[../infra/security/crowdsec-safeline|crowdsec-safeline 정본]] — netbis-cf-firewall 섹션 zone 6→5 반영 완료 +- [[2026-04-25-netbis-cf-firewall-rebuild|2026-04-25 netbis-cf-firewall 재구축]] — 6 zone으로 처음 구축한 시점 +- [[2026-05-23-kr1-k3s-stuck-cascade|2026-05-23 kr1 k3s stuck]] — 이 발견의 동행 작업 diff --git a/infra/security/crowdsec-safeline.md b/infra/security/crowdsec-safeline.md index af8a3f1..fd5046f 100644 --- a/infra/security/crowdsec-safeline.md +++ b/infra/security/crowdsec-safeline.md @@ -259,9 +259,9 @@ CrowdSec 공식 가이드 명시 사항 ([blog](https://www.crowdsec.net/blog/mi | 동작 | LAPI 폴링(10s) → CF Account IP List + Zone Firewall Rule 갱신 | | LAPI bouncer 이름 | `cs-cloudflare-bouncer-1777082222` (자동 생성, rename 보류) | | **origin filter** | `only_include_decisions_from: [crowdsec, cscli]` (CAPI/lists 30k+ 무시 → CF List 10k 한도 회피) | -| **액션 매핑** | `default_action: managed_challenge` (모든 6 zone 동일). LAPI decision type 무관하게 CF managed_challenge 액션으로 적용 → 사용자는 CF 캡챠 페이지 통과 후 진입. 분산 DDoS 시나리오 오탐 시에도 ban이 아니라 캡챠 | -| CF 리소스 | IP List `crowdsec_managed_challenge` (`f728ad9d4653467396d32466902c9e52`), 6 zone × Firewall Rule (managed_challenge 액션) 자동 생성 | -| 적용 zone | fall-vip / fall-mvp / fall-vip7 / psd777 / rss-555 / rss-7790 (Account ID `8fcf3c7876332aba33e974cbbfdad951`) | +| **액션 매핑** | `default_action: managed_challenge` (모든 5 zone 동일). LAPI decision type 무관하게 CF managed_challenge 액션으로 적용 → 사용자는 CF 캡챠 페이지 통과 후 진입. 분산 DDoS 시나리오 오탐 시에도 ban이 아니라 캡챠 | +| CF 리소스 | IP List `crowdsec_managed_challenge` (`f728ad9d4653467396d32466902c9e52`), 5 zone × Firewall Rule (managed_challenge 액션) 자동 생성 | +| 적용 zone | fall-vip / fall-vip7 / psd777 / rss-555 / rss-7790 (Account ID `8fcf3c7876332aba33e974cbbfdad951`). _2026-05-23 fall-mvp.com zone이 CF에서 삭제됨에 따라 config에서 제거_ | | API token | Vault `secret/cloud/cloudflare-netbis` (`firewall_bouncer_token`, `firewall_bouncer_token_id`). 권한: Account Firewall Access Rules Write + Account Rule Lists Write + Zone Firewall Services Write | | 인증 방식 | Bearer (`Authorization: Bearer cfut_...`). global_api_key는 `Invalid request headers (6003)` 라 **사용 불가** — 신규 token 발급 필수 | | config | `/etc/crowdsec/bouncers/crowdsec-cloudflare-bouncer.yaml` | @@ -284,9 +284,9 @@ CrowdSec 공식 가이드 명시 사항 ([blog](https://www.crowdsec.net/blog/mi ``` 클라이언트 → BunnyCDN WAF (OWASP CRS, 1차) — 일반 도메인 경로 → Traefik / APISIX + SafeLine WAF (2차) - → CrowdSec 로그 분석 (3차) → netbis-cf-firewall (Netbis 6 zone CF Firewall Rule 피드백 루프) + → CrowdSec 로그 분석 (3차) → netbis-cf-firewall (Netbis 5 zone CF Firewall Rule 피드백 루프) -netbis 전용 enforce: CF Account IP List + 6 zone Firewall Rule managed_challenge (netbis-cf-firewall) +netbis 전용 enforce: CF Account IP List + 5 zone Firewall Rule managed_challenge (netbis-cf-firewall) 일반 zone enforce 사라짐 — kappa zone CrowdSec ban 미적용. BunnyCDN Edge bouncer / Worker bouncer / APISIX bouncer 모두 폐기 (2026-04-26) ```