- infra/cloudflare.md: Worker 라우트 / Turnstile 위젯 표를 cleanup-2 후 상태로 갱신. inouter/anvil 라우트 + 6개 옛 bouncer-managed widget sitekey 폐기 표시. 신규 inouter-bunny-middleware (0x4AAAAAAC3otPWhldI96Aks) 추가, freeze 보장 근거 명시. Turnstile 토큰 권한 사실 (Vault api_token read-only vs bouncer 토큰 read+write). 인시던트 이력 섹션 추가 + 인시던트 doc 8f5c43f8 링크. - infra/crowdsec-safeline.md: cs-cf-worker-bouncer 보호 zone 4개로 갱신, 제거된 zone 와 freeze widget 명시. - services/bunnycdn-security.md: 미들웨어 64811 Turnstile sitekey 변경 이력표 (옛/삭제/신규 3행). sitekey gap 항목을 신규 위젯 기준으로 갱신, nas.inouter.com 정리 완료 표시. cf-audit-cleanup-2 인시던트 + 복구 상세는 Outline doc 8f5c43f8 의 "## 복구 완료" 섹션 참조.
16 KiB
title, updated, tags
| title | updated | tags | ||||
|---|---|---|---|---|---|---|
| Cloudflare 서비스 | 2026-04-10 |
|
2026-04-10 전수 감사 (Outline
agent-qnadoc51b963c3-b251-48b5-a57a-a2305959c470) 결과 반영 + 정리 1차 (nas.inouter.com,ironclad.jp.inouter.com,k8s.jp.inouter.com삭제). Syn 이 엣지 관점에서 소유. 일반 DNS 관리 협업은 Heimdall.
계정
- ID:
d8e5997eb4040f8b489f09095c0f623c(kappa@inouter.com) - API 토큰: Vault
secret/cloud/cloudflare(api_token,email) - Turnstile 쓰기 권한 없음 — 현 토큰은 read-only. 신규 위젯은 CF 대시보드 수동 또는 별도 권한 토큰 필요.
Zone 전수 (6개, 2026-04-10)
| Zone | Zone ID | Status | Plan | NS | DNS rec | 비고 |
|---|---|---|---|---|---|---|
| actions.it.com | dd7db273… |
active | Free | earl/raegan | 2 | apex+wildcard CNAME → BunnyCDN, wildcard 가 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 zone. 워커 라우트 + Turnstile 위젯만 살아 있음 |
총 60건 (servidor 제외).
별도 계정 netbis 의 6개 zone (fall-vip / psd777 등) 은 본 문서 범위 외 — netbis-cf-bouncer 가 별도로 관리.
DNS 레코드 — zone 별 핵심
actions.it.com (2)
| 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 (9)
| 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 1건 |
inouter.com (32) — 핵심
| 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) |
이전 메모(updated 2026-04-04)는 폐기: jarvis/telegram-webhook/vault/n8n 이
actions.b-cdn.net가리킨다는 기록은 dead 풀존을 가리키는 구식 정보. 실제 정본은 위 표와 같이 모두iron-kr.b-cdn.net.
ironclad.it.com (14)
| 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-siteapex + bouncer wildcard) 단독.
keepanker.cv (3)
| 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 (cfargotunnel). juiceshop 은 BunnyCDN iron-kr-waf 로 override.
servidor.it.com (0)
DNS 레코드 없음. zone 만 등록. 워커 라우트 + Turnstile 위젯은 살아있음 → 트래픽 자체가 불가능한데 보안 자원만 회전 중. zone 정리 또는 DNS 레코드 추가 결정 필요.
Workers (9개)
| Worker | 라우트 부착 zones | 비고 |
|---|---|---|
| crowdsec-cloudflare-worker-bouncer | actions, anvil, inouter, ironclad, keepanker, servidor (전 6 zone) | CrowdSec CF bouncer 본체. cs-cf-worker-bouncer (jp1) 가 168h 마다 secret rotate. 정본 crowdsec-safeline |
| ironclad-site | ironclad.it.com (apex) | 정적 사이트, has_assets |
| cf-multisite | *.actions.it.com/* |
라우팅 워커 |
| chat-worker | (없음) | workers.dev only |
| cloud-instances-api | (없음) | 〃 |
| cloud-orchestrator | (없음) | 〃 |
| telegram-ai-support | (없음) | 〃 |
| telegram-cli-web | (없음) | 〃 |
| telegram-summary-bot | (없음) | 〃 |
Worker 라우트 (zone 별, 2026-04-10 cf-audit-cleanup-2 후)
| Zone | Pattern | Script |
|---|---|---|
| actions.it.com | *actions.it.com/* |
crowdsec-cloudflare-worker-bouncer |
| 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 |
| ironclad.it.com | *ironclad.it.com/* |
crowdsec-cloudflare-worker-bouncer |
| keepanker.cv | *keepanker.cv/* |
crowdsec-cloudflare-worker-bouncer |
| servidor.it.com | *servidor.it.com/* |
crowdsec-cloudflare-worker-bouncer |
2026-04-10 삭제 (cf-audit-cleanup-2):
(inouter.com zone, crowdsec-cloudflare-worker-bouncer) — DNS proxied=false 라 enforce 안 됐음*inouter.com/*(anvil.it.com zone, 동일)*anvil.it.com/*
이 두 라우트는 cs-cf-worker-bouncer 의 zone 제거 사이클에 의해 자동 삭제됨 (CF API 직접 호출 불필요했음).
Worker Custom Domains (계정 레벨): 0건.
Turnstile 위젯 (현재 6개, 2026-04-10 cf-audit-cleanup-2 후)
| Sitekey | 이름 | mode | 도메인 | 역할 |
|---|---|---|---|---|
0x4AAAAAABvmO8BKc1ss5d-S |
crowdsec-captcha |
managed | actions / anvil / charon.my / ironclad / keepanker / n8n.my / servidor / subin.my | multi-domain 운영용 (8 도메인). 2025-08-29 생성. bouncer 관리 외 |
0x4AAAAAACbmaudAjITah7y7 |
inouter |
managed | anvil.it.com 만 | 2026-02-13 생성. 이름과 도메인 불일치 → legacy/orphan 후보. 별건 결정 미정 (kappa) |
0x4AAAAAAC3otPWhldI96Aks |
inouter-bunny-middleware |
managed | inouter.com | 2026-04-10 신규 (cf-audit-cleanup-2 복구). BunnyCDN 미들웨어 64811 이 TURNSTILE_SITE_KEY/SECRET_KEY env 로 baked-in 사용. 이름이 bouncer 패턴 (crowdsec-cloudflare-worker-bouncer-widget) 과 다르므로 cs-cf-worker-bouncer 가 관리 대상에 넣지 않음 → freeze. 수동 관리 |
0x4AAAAAAC3nIMLBRKWfiY8A |
crowdsec-cloudflare-worker-bouncer-widget |
managed | actions.it.com | bouncer 자동 (168h rotation), 2026-04-10 00:23 재생성 (이전 sitekey …2cn8bzKBex_ihU 폐기) |
0x4AAAAAAC3nIYV_A5OA0Xzv |
〃 | managed | ironclad.it.com | bouncer 자동, 2026-04-10 00:23 재생성 (이전 …2coU0PB8O8oJqY 폐기) |
0x4AAAAAAC3nHnAB6Q9dlvHM |
〃 | managed | keepanker.cv | bouncer 자동, 2026-04-10 00:23 재생성 (이전 …2coNrK9rRq7S_b 폐기) |
0x4AAAAAAC3nH0xXSU8kbwsn |
〃 | managed | servidor.it.com | bouncer 자동, 2026-04-10 00:23 재생성 (이전 …2cnZzIyNRayTcG 폐기) |
2026-04-10 삭제 (cf-audit-cleanup-2):
(anvil.it.com bouncer-managed) — bouncer 가 zone 제거 시 자동 cleanup0x4AAAAAAC2cnEA797HwesRX(inouter.com bouncer-managed) — bouncer 가 zone 제거 시 자동 cleanup. 이로 인해 BunnyCDN 미들웨어 64811 stale 발생 → 수동 신규 위젯0x4AAAAAAC2cntUlRC3KKMKGinouter-bunny-middleware로 복구. 인시던트 doc8f5c43f8-0b46-4032-b3f6-08106aa1e5e2
bouncer 자동 위젯 4개 (actions/ironclad/keepanker/servidor) 는 cs-cf-worker-bouncer 가 rotate. 수동 편집 금지 — 다음 rotate 때 덮어써짐. inouter-bunny-middleware 는 bouncer 관리 밖이라 수동 관리 (sitekey/secret 변경 시 BunnyCDN 미들웨어 64811 env 동시 갱신 필수).
Turnstile 토큰 권한 (2026-04-10 사실)
- Vault
secret/cloud/cloudflareapi_token(pUIZdTV0…): DNS R/W + Turnstile read-only. 위젯 생성/수정/삭제 불가. - cs-cf-worker-bouncer 가 jp1 bouncer 호스트의
/etc/crowdsec/bouncers/crowdsec-cloudflare-worker-bouncer.yaml안에 보유한 별도 CF 토큰 (token: seUKZID4…): Turnstile read+write. 위젯 생성/수정/삭제 가능. 이 토큰은 bouncer 의 자체 인증 자산이며 Vault 에 복제되어 있지 않음. - 2026-04-10 cf-audit-cleanup-2 복구: kappa 가 jp1 bouncer 호스트의 위 토큰을 일시 빌려
inouter-bunny-middleware위젯을 직접 API 로 생성. 결과 (sitekey/secret/name) 만 Vaultsecret/cloud/cloudflare/turnstile-inouter-bunny에 보관. 토큰 본체는 복제 없음.
특이사항
Orphan / dead 자원
| 항목 | 내용 |
|---|---|
| servidor.it.com zone | DNS 레코드 0건. 워커 라우트 + Turnstile 위젯만 살아있음. 2026-04-10 kappa 판정 "죽은 도메인 아님" → 유지. |
nas.inouter.com → actions.b-cdn.net |
2026-04-10 삭제 완료 (cf-audit-cleanup-1). dead 풀존 참조였고 Synology 는 LAN 전용. → 같은 날 Heimdall 이 K3s lan-proxies/nas (Traefik IngressRoute) 로 LAN-only 복원, *.inouter.com → k3s.inouter.com (192.168.9.53) 폴백 활용. 상세 [[nas-storage#DSM Reverse Proxy — nas.inouter.com (2026-04-10)]] |
*.actions.it.com → actions.b-cdn.net |
와일드카드 자체가 dead 풀존 가리킴. proxied=on 이라 CF 가 어디로 보내는지 의문. 일부 서브가 5xx 가능. 미정리 (영향 평가 후 별건). |
Worker route vultr.actions.it.com/*, linode.actions.it.com/* |
script: null. 등록만 되고 워커 미연결. (linode.actions.it.com 자체는 BunnyCDN iron-jp 호스트네임으로도 있음 — 중복 의도?) 미정리. |
Turnstile inouter (sitekey …CbmaudAjITah7y7) |
이름은 inouter 인데 허용 도메인은 anvil.it.com 단일. legacy 후보. 미정리 (CF 토큰 read-only 라 대시보드 수동 필요). |
사설 IP 공개 DNS 노출 — 2026-04-10 정리 완료
| 레코드 | 값 | 상태 |
|---|---|---|
ironclad.jp.inouter.com |
10.19.228.193 |
2026-04-10 삭제 (cf-audit-cleanup-1) |
k8s.jp.inouter.com |
10.253.103.124 |
2026-04-10 삭제 (cf-audit-cleanup-1) |
향후 사설 IP 가 필요하면 Tailscale Magic DNS 또는 split-horizon (예: jp.inouter.com 내부 zone) 으로 처리.
CF proxy on/off 패턴 (중요)
- inouter.com / anvil.it.com: 거의 전부
proxied: false— CF 는 DNS 만, 트래픽은 BunnyCDN 또는 LAN 직통. 2026-04-10 cf-audit-cleanup-2 에서 두 zone 의 CF Worker bouncer 라우트 + bouncer 관리 zone 항목 모두 제거. 보호는 BunnyCDN 미들웨어 64811 이 단독 책임. - actions.it.com / ironclad.it.com: apex/wildcard 모두
proxied: true— CF Worker 효과적으로 enforce. - keepanker.cv: CF Tunnel.
정책 일관성
- iron-kr
IgnoreQueryStrings: truevs iron-jpIgnoreQueryStrings: false— 같은 미들웨어 64811 공유인데 캐시 키 정책이 다름. iron-jp 트래픽이 미미해 영향 작지만 통일이 운영 단순화.
cfb-manager (CrowdSec CF Worker bouncer 관리 API)
| 항목 | 값 |
|---|---|
| 위치 | K3s default/cfb-manager (10.43.68.76:8000) |
| 구현 | Python FastAPI |
| 기능 | bouncer 보호 도메인 추가/삭제, decision 조회, CF zone 동기화, bouncer 재시작 트리거 |
| SSH 키 | K8s default/cfb-ssh-key 시크릿 (ed25519, 2026-04-09 재생성) |
BASE=http://cfb-manager.default.svc.cluster.local:8000
curl $BASE/status # bouncer_running, pids, protected_domains
curl $BASE/domains # 보호 중인 zone 상세
curl $BASE/decisions # 현재 결정
curl -X POST $BASE/sync?auto_apply=true # CF 의 모든 zone 을 보호 목록 동기화
BunnyCDN 미들웨어와는 무관. BunnyCDN 미들웨어 64811 의 bloom filter 동기화는 jp1
infra-tool컨테이너/opt/crowdsec-bouncer/bouncer.py(3분 delta + 매시 full sync) 가 담당.
인시던트 이력
2026-04-10 cf-audit-cleanup-2 — destructive widget cleanup + 복구
- 의도: cs-cf-worker-bouncer 의 managed zones 에서 inouter.com, anvil.it.com 제거 (DNS proxied=false 라 enforce 안 되는 dead route 정리)
- 잘못된 가정: zone 제거 시 위젯이 freeze 된 채 남는다
- 실제 동작: 다음 bouncer restart 가 모든 zone 의 bouncer-managed widget 을 새 sitekey 로 rotation 하면서, config 에서 빠진 zone 의 옛 widget 은 destroy. BunnyCDN 미들웨어 64811 이 baked-in 으로 사용하던 inouter sitekey
…2cntUlRC3KKMKG가 삭제되어 stale 발생 - 영향: 잠재 버그. 현재 ban 없으면 미발현, 첫 inouter.com 호스트 ban 시 캡차 페이지 로드 실패
- 복구: kappa 가 jp1 bouncer 호스트의 cs-cf-worker-bouncer 토큰을 일시 빌려 신규 위젯
inouter-bunny-middleware(0x4AAAAAAC3otPWhldI96Aks) 생성. 이름이 bouncer 패턴과 다르므로 향후 rotation 영향 없음. Syn 이 BunnyCDN 미들웨어 64811 의TURNSTILE_SITE_KEY/SECRET_KEYenv 갱신 + publish (deployment3816dbc5-…) - 부수: cfb-manager YAML 두 번째 DELETE 호출 시 파싱 깨짐 (anvil zone_id 라인 12-space orphan indent), 003003 자동 백업과 002237 API 백업 보유. 직접 수동 수리 (orphan 22 라인 제거) 후
wc -l 79확인, restart 없이 정상 복구 - 학습: 보안/엣지 리소스 cleanup 경로는 destructive 가능성을 디폴트로 가정. 1개 항목 dry-run 후 부작용 0 확인 후 다음 진행
- 정본: 인시던트 doc
8f5c43f8-0b46-4032-b3f6-08106aa1e5e2, recovery 절차 동 doc## 복구 완료섹션
참조
- 전수 감사 정본 (대화 로그): Outline
agent-qnadoc51b963c3-b251-48b5-a57a-a2305959c470(2026-04-10) - cf-audit-cleanup-2 인시던트: Outline
agent-qnadoc8f5c43f8-0b46-4032-b3f6-08106aa1e5e2(2026-04-10) - 워크스페이스 런북:
~/syn/cloudflare/README.md - BunnyCDN 매핑: bunnycdn-security
- CrowdSec/Worker bouncer: crowdsec-safeline
- 별도 계정: netbis (Netbis 계정 6 zone, 별도 cs-cf-worker-bouncer)
- DNS 프리셋: cloudflare, aws, google, github, bunnycdn
관련 문서
- netbis — Netbis 계정 Cloudflare (별도)
- cf-multisite —
*.actions.it.com라우팅 워커 - crowdsec-safeline — CrowdSec CF Worker Bouncer 연동
- bunnycdn-security — BunnyCDN 엣지 보안