Files
obsidian/history/2026-04-26-bouncer-consolidation.md
kaffa 560dde3f88 cloudflare: Turnstile 위젯 6개 + Edge Script 64811 정리 추기
- Turnstile 4개 (cs-cf-worker-bouncer-widget): 삭제
- Turnstile inouter (legacy orphan): 삭제
- Turnstile inouter-bunny-middleware: 삭제 (BunnyCDN 미들웨어 64811과 함께)
- Edge Script 64811: DELETE /compute/script/64811 HTTP 204
  - 4개 풀존 (iron-jp/iron-kr/iron-kr-waf/iron-git) MiddlewareScriptId null 자동 정리 확인
- 보류: Turnstile crowdsec-captcha (8 도메인 사용처 추적 미완)
- bouncer 단일화 history에 Syn 회신 + Turnstile/Edge Script 추가 정리 결과 추기
2026-04-26 10:27:02 +09:00

6.7 KiB
Raw Permalink Blame History

date, topic, areas, tags
date topic areas tags
2026-04-26 CrowdSec bouncer 단일화 — netbis-cf-firewall만 유지, 나머지 3종 완전 제거
infra/security/crowdsec-safeline.md
infra/security/cloudflare.md
services/netbis.md
crowdsec
bouncer
cloudflare
bunnycdn
apisix
simplification

결정

CrowdSec LAPI 등록 4종 bouncer 중 cs-cloudflare-bouncer-1777082222 (netbis-cf-firewall) 만 유지하고 나머지 3종 완전 제거.

보존 폐기
cs-cloudflare-bouncer-1777082222 (netbis-cf-firewall, 2026-04-25 재구축) cs-cf-worker-bouncer (kappa CF Worker + KV + Turnstile×4)
apisix-waf-bouncer (APISIX plugin 0.1)
bunny-cdn-bouncer (BunnyCDN Edge Script 64811 bloom filter)

이유 (kappa 지시):

  • 운영 단순화 — 4종 bouncer 동시 관리 부담
  • Worker bouncer 비용 + Turnstile 위젯 168h rotation 부담
  • BunnyCDN Edge bloom filter 갱신 cron 의존성
  • APISIX plugin 0.1 (오래된 패키지)
  • netbis-cf-firewall은 origin filter [crowdsec, cscli] + Free CF 영역으로 비용 0, 단순

영향 (실행 전 사용자 확인 불필요로 진행)

  • enforce 사라진 영역:
    • kappa zone (keepanker.cv, actions.it.com, ironclad.it.com, servidor.it.com) CrowdSec ban → CF에서 관통
    • BunnyCDN 풀존 iron-jp(5555247) / iron-kr(5555227) edge bouncer 차단 → 풀존 도착 트래픽이 origin까지 전달
    • APISIX 인스턴스 chaitin-waf 보완용 IP ban (어느 인스턴스인지 Syn 확인) → SafeLine WAF만 유지
  • 유지되는 enforce:
    • SafeLine WAF (chaitin-waf 플러그인, K3s safeline ns)
    • APISIX limit-req
    • netbis-cf-firewall (Netbis 6 zone CF Firewall Rule managed_challenge)
    • BunnyCDN WAF (OWASP CRS) — bouncer와 별개

작업 분담 + 진행

Heimdall 직접

단계 결과
incus stop+delete jp1:cs-cf-worker-bouncer ok, 컨테이너 사라짐 확인
jp1:infra-tool cron /etc/cron.d/crowdsec-bunny-bouncer 삭제 ok
jp1:infra-tool /opt/crowdsec-bouncer/ 디렉토리 + bouncer.py 삭제 ok
pkill -9 -f bouncer.py (잔존 프로세스) ok
cscli bouncers delete cs-cf-worker-bouncer deleted successfully
cscli bouncers delete apisix-waf-bouncer deleted successfully
cscli bouncers delete bunny-cdn-bouncer deleted successfully
LAPI 최종 상태 cs-cloudflare-bouncer-1777082222 단일

Syn 위임 (peer 통신, 동시 진행)

heimdall→syn tmux 메시지로 3건 위임:

  1. CF Worker (kappa account) 정리 — Worker 스크립트 + KV namespace + Turnstile 위젯 4개 (crowdsec-cloudflare-worker-bouncer-widget, 적용 zone keepanker/actions/ironclad/servidor) 모두 삭제
  2. BunnyCDN Edge Script 64811 정리 — iron-jp(5555247) + iron-kr(5555227) 두 풀존에서 MiddlewareScriptId: 64811 해제 + 스크립트 자체 삭제
  3. APISIX crowdsec-bouncer 플러그인 비활성화 — apisix-osaka 추정 (헤임달 검증: K3s 서울 미사용, zlambda 미사용). plugin_metadata/crowdsec-bouncer 삭제 + 사용하는 route/global_rule plugins.crowdsec-bouncer 모두 제거 + config.yaml plugins 목록에서 crowdsec-bouncer 제거 (선택)

APISIX는 본래 Syn 영역(CLAUDE.md 스코프) 이지만 kappa task 에서는 Heimdall 직접으로 명시되어 있었음. 실제로 apisix-osaka admin 권한이 Heimdall ops-agents 키로 없음 → Syn 위임이 자연스러움. 이 경계 deviation 은 작업 효율 우선으로 합리적 판단.

Vault 시크릿 처리

  • secret/infra/crowdsec-bunny-bouncer보존 (별도 폐기 결정)
  • cs-cf-worker-bouncer 관련 토큰 — 보존 (별도 폐기 결정)
  • LAPI api-key 3종 — cscli bouncers delete 시점에 자동 무효화

검증

# LAPI bouncers list
incus exec jp1:crowdsec -- cscli bouncers list
# → cs-cloudflare-bouncer-1777082222 단일

# infra-tool cron 사라짐 확인
incus exec jp1:infra-tool -- ls /etc/cron.d/ | grep -i crowdsec
# → (empty)

# cs-cf-worker-bouncer 컨테이너 사라짐
incus list jp1: --all-projects | grep cs-cf-worker-bouncer
# → (empty)

Syn 회신 (DONE 2026-04-26)

영역 결과
CF Worker 스크립트 + KV namespace 삭제 완료
CF Turnstile 위젯 4개 (crowdsec-cloudflare-worker-bouncer-widget) Syn API 권한 부족으로 보류 → kappa가 global_api_key로 직접 삭제 (sitekey: …N-HtUDFAaJ/…RrhJUQKfIF/…r02LA19njc7/…6l0x5reO6ZQ)
BunnyCDN MiddlewareScriptId iron-jp/iron-kr 해제 완료
BunnyCDN Edge Script 64811 자체 Syn 보고 시 orphan 상태 → kappa가 DELETE /compute/script/64811 HTTP 204로 삭제. iron-jp(5555247)/iron-kr(5555227)/iron-kr-waf(5555224)/iron-git(5584382) 모두 MiddlewareScriptId: null 자동 정리 확인
APISIX(osaka) crowdsec-bouncer 플러그인 global_rules + route tg-webhook + config.yaml에서 제거 + 재시작 완료

Turnstile 위젯 추가 정리 (kappa, 2026-04-26)

bouncer 단일화 후속으로 같은 날 추가 폐기:

Sitekey Name 폐기 사유
0x4AAAAAACbmaudAjITah7y7 inouter 이름·도메인 불일치 legacy orphan
0x4AAAAAAC3otPWhldI96Aks inouter-bunny-middleware BunnyCDN 미들웨어 64811 폐기와 함께 사용처 사라짐

CF Turnstile에 남은 위젯: crowdsec-captcha (0x4AAAAAABvmO8BKc1ss5d-S, 8 도메인). bouncer 외 사용처(charon.my / n8n.my / subin.my 등) 추적 미완 → 폐기 보류.

롤백

각 bouncer 재구성 절차 필요 시 이전 history 참조:

  • cs-cf-worker-bouncer: 정본 gitea.inouter.com/kaffa/k8s configs/crowdsec/crowdsec-cloudflare-worker-bouncer.yaml
  • bunny-cdn-bouncer: gitea.inouter.com/kaffa/crowdsec-bunny-bouncer (소스 보존)
  • apisix-waf-bouncer: crowdsec-bouncer.lua 파일 + APISIX config.yaml plugins 등록 + plugin_metadata 설정

후속 과제

  • Vault secret/infra/crowdsec-bunny-bouncer + cs-cf-worker-bouncer 관련 토큰 폐기 결정 (kappa)
  • Vault secret/cloud/cloudflare/turnstile-inouter-bunny 폐기 (위젯 삭제됨)
  • CrowdSec scenarios 다시 검토 — 일반 enforce 경로가 사라졌으니 시나리오 그룹화/조용화 가능
  • kappa zone에 대한 대체 보호 검토 (필요 시 BunnyCDN WAF 강화 / CF Pro 플랜 활용 등)
  • crowdsec-captcha Turnstile 위젯 8 도메인 사용처 추적 (charon.my / n8n.my / subin.my 등) → 폐기 가능 여부 결정
  • Syn 회신 후 본 history에 CF Worker / KV / Turnstile / BunnyCDN Edge / APISIX plugin 정리 결과 추기 — 위 "Syn 회신" 절

관련 history