Files
obsidian/infra/security/cloudflare.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

13 KiB
Raw Blame History

title, updated, tags
title updated tags
Cloudflare 서비스 2026-04-26 bouncer 단일화로 Turnstile 위젯 6개 + Worker/KV 정리 반영
infra
cloudflare
cdn
dns

Syn 이 엣지 관점에서 소유. 일반 DNS 관리 협업은 Heimdall.

계정

  • ID: d8e5997eb4040f8b489f09095c0f623c (kappa@inouter.com)
  • API 토큰: Vault secret/cloud/cloudflare (api_token, email)

API 토큰 권한 범위 (2026-04-13 실측)

엔드포인트 권한
Zone Read
DNS Read/Write
Turnstile Read (Write는 403)
Workers Read
KV Read
Rulesets (WAF/Rate Limit 규칙) 403
Firewall Rules 403
Rate Limits (legacy) 403
Zone Settings 403

⚠️ Rate Limit, WAF 규칙, Firewall 설정은 API로 조회/변경 불가 — 대시보드에서만 관리 가능. 토큰 스코프 확장이 필요하면 CF 대시보드 > My Profile > API Tokens에서 편집.

Pseudo IPv4 (Class E 240/4)

레거시 IPv4-only 백엔드를 위한 CF 기능. Netbis zone에서 활성 상태로 관찰됨 (Apache 2.4.38 + PHP 5.6.40). Kappa 계정 zone에는 현재 기본 Off로 추정.

동작 원리

클라이언트 (IPv6) → CF 엣지
  → IPv6 주소 상위 64비트를 MD5 해시
  → 결과를 240.0.0.0/4 (240~255.x.x.x) 범위의 IPv4로 매핑
  → CF-Connecting-IP 및 X-Forwarded-For 헤더를 해시된 IPv4로 overwrite
  → 진짜 IPv6는 Cf-Connecting-IPv6 별도 헤더로 전달

모드 3종 (CF 대시보드 Network → Pseudo IPv4)

모드 CF-Connecting-IP 별도 헤더
Off 실 IPv6/IPv4 -
Add header 실 IP 그대로 Cf-Pseudo-IPv4에 해시
Overwrite headers 해시(240/4) Cf-Connecting-IPv6에 실 IPv6

관찰 시그널 (Netbis)

  • VL client_ip 필드 중 240.0.0.0/4 대역 IP 등장 = IPv6 접속자
  • UA 분포: 95%+ 모바일 (Android Chrome / iPhone Safari / KakaoTalk / Daum / NAVER) — KR 모바일 IPv6 보급률 높음
  • 동일 IPv6 /64 prefix → 항상 같은 240/4 IP로 매핑 (재현 가능한 식별자)
  • 한 240/4 IP = 한 가정/ /64 단위 유저 집합 — ban 시 /64 전체가 차단됨

오해 주의

  • 240/4는 KR 통신사 CGNAT 아님 (공식 문서 없음, 공개 라우팅도 안 됨)
  • 실제로는 CF Pseudo IPv4 해시값 — "가짜 IP"
  • CGNAT 오인하면 차단 효과 완전히 다르게 판단됨

관련 링크

Zone

Zone Zone ID Status Plan NS DNS rec 비고
actions.it.com dd7db273… active Free earl/raegan 2 apex+wildcard CNAME → BunnyCDN. *.actions.it.com → actions.b-cdn.net 는 dead 풀존 가리킴 (미정리)
anvil.it.com 742f4c98… active Free earl/raegan 9 apex/wildcard CNAME → iron-jp, ssh.anvil.it.com A, Cloudflare Email Routing
inouter.com cd84743d… active Free earl/raegan 32 메인 zone. 와일드카드 → k3s.inouter.com (LAN), 다수 서브가 iron-kr / iron-git 으로 분기
ironclad.it.com bc8761b3… active Free earl/raegan 14 apex+wildcard A 172.233.93.180 (proxied), Mailgun MX, AWS SES DKIM
keepanker.cv 118ac337… active Free lochlan/olivia 3 apex/wildcard → Cloudflare Tunnel (cfargotunnel.com), juiceshop CNAME → iron-kr-waf
servidor.it.com a6e1a3f1… active Free earl/raegan 0 DNS 0건 orphan. cert-manager wildcard + CrowdSec bouncer + Turnstile 위젯은 세팅된 상태 (배포 준비용 유지)

별도 계정 netbis 의 6개 zone 은 본 문서 범위 외 — netbis-cf-bouncer 가 별도로 관리.

DNS 레코드 — zone 별 핵심

actions.it.com

Name Type Value Proxied
actions.it.com CNAME iron-kr.b-cdn.net
*.actions.it.com CNAME actions.b-cdn.net (dead 풀존)

anvil.it.com

Name Type Value Proxied
anvil.it.com CNAME iron-jp.b-cdn.net off
*.anvil.it.com CNAME iron-jp.b-cdn.net off
n8n.anvil.it.com CNAME iron-jp.b-cdn.net off
kroki.anvil.it.com CNAME k3s.inouter.com off
ssh.anvil.it.com A 139.162.71.52 off
MX×3 Cloudflare Email Routing, DKIM TXT

inouter.com

Name Type Value Proxied 메모
*.inouter.com CNAME k3s.inouter.com off LAN 직통 (BunnyCDN 우회)
k3s.inouter.com A 192.168.9.53 off Traefik MetalLB VIP
kr.inouter.com A 220.120.65.245 off OpenWrt 공인 IP
jp.inouter.com A 42.125.196.116 off jp1
derp.inouter.com A 42.125.196.116 off jp1 derp
gitea.inouter.com CNAME iron-git.b-cdn.net off 별도 풀존 (미들웨어 우회)
n8n.inouter.com CNAME iron-kr.b-cdn.net off
jarvis.inouter.com CNAME iron-kr.b-cdn.net off
vault.inouter.com CNAME iron-kr.b-cdn.net off
outline.inouter.com CNAME iron-kr.b-cdn.net off
telegram-webhook.inouter.com CNAME iron-kr.b-cdn.net off
desk-api.inouter.com A 172.233.93.180 osaka 직통, CF proxied
sftp.inouter.com A 220.120.65.245 OpenWrt 직통, CF proxied
git.inouter.com A 52.79.45.166 off relay4wd Lightsail
teleport.inouter.com A 52.79.45.166 off relay4wd Lightsail
twilio.jp.inouter.com A 172.233.93.180 off
bunny.mcp.inouter.com CNAME k3s.inouter.com off
vl.inouter.com CNAME k3s.inouter.com off [[victorialogs
emulator.api.inouter.com CNAME k3s.inouter.com off
linode.api.inouter.com CNAME k3s.inouter.com off
namecheap.api.inouter.com CNAME k3s.inouter.com off
vultr.api.inouter.com CNAME k3s.inouter.com off
email.inouter.com CNAME mailgun.org off
MX×2 Mailgun, TXT (SPF/DMARC/DKIM/google verification)

nas.inouter.com 은 특정 A/CNAME 레코드 없음. *.inouter.com 와일드카드 폴백으로 192.168.9.53 (LAN MetalLB VIP) 로 해석되어 K3s lan-proxies/nas IngressRoute 를 통해 Synology DSM (192.168.9.100:5000) 으로 reverse proxy. 상세 [[nas-storage#DSM Reverse Proxy — nas.inouter.com]].

ironclad.it.com

Name Type Value Proxied
ironclad.it.com A 172.233.93.180
*.ironclad.it.com A 172.233.93.180
MX×2 Mailgun, AWS SES DKIM CNAME×3, TXT (SPF/DMARC/google)

ironclad.it.com 은 BunnyCDN 풀존을 거치지 않음. CF proxied A 로 osaka 172.233.93.180 직통. 보호는 CF Worker (ironclad-site apex + bouncer wildcard) 단독.

keepanker.cv

Name Type Value Proxied
keepanker.cv CNAME f1aa79f2-….cfargotunnel.com
*.keepanker.cv CNAME f1aa79f2-….cfargotunnel.com
juiceshop.keepanker.cv CNAME iron-kr-waf.b-cdn.net off

apex/wildcard 는 Cloudflare Tunnel. juiceshop 은 BunnyCDN iron-kr-waf 로 override.

servidor.it.com

DNS 레코드 없음. zone 만 등록. 워커 라우트 + Turnstile 위젯 + cert-manager wildcard cert 는 세팅되어 있으며 배포 준비 상태로 유지.

Workers

Worker 라우트 부착 zones 비고
crowdsec-cloudflare-worker-bouncer (폐기) 2026-04-26 bouncer 단일화로 Worker 스크립트 + KV namespace + 라우트 4개 모두 삭제. ../../history/2026-04-26-bouncer-consolidation
ironclad-site ironclad.it.com (apex) 정적 사이트, has_assets
cf-multisite *.actions.it.com/* 라우팅 워커
chat-worker (없음) workers.dev only
cloud-instances-api (없음) workers.dev only
cloud-orchestrator (없음) workers.dev only
telegram-ai-support (없음) workers.dev only
telegram-cli-web (없음) workers.dev only
telegram-summary-bot (없음) workers.dev only

Worker 라우트 (zone 별)

Zone Pattern Script
actions.it.com *.actions.it.com/* cf-multisite
actions.it.com vultr.actions.it.com/* null (orphan, 미정리)
actions.it.com linode.actions.it.com/* null (orphan, 미정리)
ironclad.it.com ironclad.it.com/* ironclad-site

[!note] cs-cf-worker-bouncer 라우트 4개 폐기 (2026-04-26) *actions.it.com/*, *ironclad.it.com/*, *keepanker.cv/*, *servidor.it.com/* Worker 라우트는 bouncer 단일화로 모두 제거. Worker 스크립트 + KV namespace + Turnstile 위젯 4개 함께 폐기. ../../history/2026-04-26-bouncer-consolidation

inouter.com / anvil.it.com 에는 Worker 라우트 없음. DNS proxied=false 라 CF 엣지를 거치지 않으므로 enforce 불가. BunnyCDN 미들웨어 64811 단독 책임 도 2026-04-26 폐기 — 현재 이들 zone 엣지 IP 차단 layer 부재 (Bunny Shield WAF + Rate Limit + 풀존 BlockedIps 만 가능).

Worker Custom Domains (계정 레벨): 0건.

Turnstile 위젯

Sitekey 이름 mode 도메인 역할
0x4AAAAAABvmO8BKc1ss5d-S crowdsec-captcha managed actions / anvil / charon.my / ironclad / keepanker / n8n.my / servidor / subin.my multi-domain 운영용 (8 도메인). 수동 관리. bouncer 외 사용처 추적 미완 — 폐기 보류

[!note] bouncer 단일화로 위젯 6개 정리 (2026-04-26)

  • crowdsec-cloudflare-worker-bouncer-widget × 4 (actions.it.com / ironclad.it.com / keepanker.cv / servidor.it.com): cs-cf-worker-bouncer 폐기로 자동 사용처 사라짐 → 삭제
  • inouter-bunny-middleware (0x4AAAAAAC3otPWhldI96Aks): BunnyCDN 미들웨어 64811 폐기와 함께 삭제
  • inouter (0x4AAAAAACbmaudAjITah7y7): legacy orphan 정리 차원 삭제
  • 정리 경과: ../../history/2026-04-26-bouncer-consolidation

Vault 시크릿 잔여 (위젯 삭제됐지만 시크릿은 보존 — 재가동 시 새 위젯 발급해서 덮어쓰기):

  • secret/cloud/cloudflare/turnstile-crowdsec-captcha (현역 crowdsec-captcha 위젯용)
  • secret/cloud/cloudflare/turnstile-inouter-bunny (삭제된 inouter-bunny-middleware legacy)

Turnstile 토큰 권한 (현재)

  • Vault secret/cloud/cloudflare.api_token (pUIZdTV0…): DNS R/W + Turnstile read-only. 위젯 생성/수정/삭제 불가
  • global_api_key (Vault secret/cloud/cloudflare.global_api_key): 모든 권한. 위젯 삭제 등 write 작업은 이쪽 사용
  • jp1 bouncer 호스트의 yaml 내 token: seUKZID4…: bouncer 컨테이너 삭제와 함께 분실 (2026-04-26)

특이사항

  • *.actions.it.com → actions.b-cdn.net — 와일드카드가 dead 풀존 가리킴. 일부 서브가 5xx 가능. 미정리 (영향 평가 후 별건)
  • Worker routes vultr.actions.it.com/*, linode.actions.it.com/*script: null orphan. 미정리
  • Turnstile inouter legacy — 2026-04-26 정리 완료
  • Turnstile crowdsec-captcha (8 도메인)charon.my, n8n.my, subin.my 등 사용처 미확인 → 폐기 보류

CF proxy on/off 패턴

Zone Proxy 보호
inouter.com / anvil.it.com off IP-list enforce 부재 (2026-04-26 BunnyCDN 미들웨어 64811 폐기 후). Bunny Shield WAF + Rate Limit + 풀존 BlockedIps 만 가능
actions.it.com / ironclad.it.com on CF Worker (cf-multisite / ironclad-site). bouncer 폐기 2026-04-26
keepanker.cv on (Tunnel) CF Tunnel + juiceshop 만 iron-kr-waf override. bouncer 폐기 2026-04-26
servidor.it.com on bouncer 폐기 2026-04-26, 현재 별도 보호 layer 없음

[!warning] cs-cf-worker-bouncer + BunnyCDN 미들웨어 64811 폐기 (2026-04-26) kappa zone 4개 (keepanker / actions / ironclad / servidor) + inouter / anvil 에서 CrowdSec 결정 enforce layer가 사라짐. CrowdSec ban은 현재 netbis-cf-firewall (netbis 6 zone) 만 enforce. 자세한 영향: ../../history/2026-04-26-bouncer-consolidation

cfb-manager (폐기 2026-04-26)

[!warning] cs-cf-worker-bouncer 폐기와 함께 cfb-manager도 의미 상실 cs-cf-worker-bouncer 자체가 사라져 bouncer_running / widget rotate 등 cfb-manager의 핵심 기능이 동작하지 않음. K8s default/cfb-manager Deployment는 별도 정리 결정 필요 (보존 / 폐기). ../../history/2026-04-26-bouncer-consolidation

관련 문서