8.4 KiB
title, updated, tags
| title | updated | tags | ||||
|---|---|---|---|---|---|---|
| Netbis 예비서버 (sandbox-tokyo) | 2026-04-03 |
|
개요
Netbis 팀 도메인의 예비(DR) 리버스 프록시 서버. 평소에는 트래픽을 받지 않으며, 유사시 Cloudflare DNS를 수동 전환하여 활성화.
기존 Ironclad 인프라(apisix, crowdsec-safeline)와는 별도 구성.
서버 정보
| 항목 | 값 |
|---|---|
| 호스트명 | sandbox-tokyo |
| 공인 IP | 139.162.71.52 |
| Tailscale IP | 100.79.87.48 |
| 위치 | Linode Tokyo |
| OS | Debian 12 (커널 6.1.0-23) |
| SSH | ssh root@139.162.71.52 |
APISIX 구성
Docker Compose (/opt/apisix/)로 배포.
| 컨테이너 | 이미지 | 포트 |
|---|---|---|
| apisix | apache/apisix:3.15.0-debian | 80(→9080), 443(→9443), 9180 |
| apisix-etcd | gcr.io/etcd-development/etcd:v3.5.11 | 2379 (내부) |
- Admin API:
http://127.0.0.1:9180(0.0.0.0/0 허용) - Admin Key:
edd1c9f034335f136f87ad84b625c8f1 - APISIX 컨테이너 ulimits: nofile 655360
global_rules
real-ip— source:http_cf_connecting_ip, trusted: Cloudflare IP 대역http-logger→ CrowdSechttp://10.253.100.240:8085/apisix-logs(auth:apisix-crowdsec-log-2024)
커널 튜닝
/etc/sysctl.d/99-apisix-tuning.conf 적용 완료:
- TCP BBR, conntrack 262144, fin_timeout 10s, keepalive 300s
- syncookies, netdev_backlog 16384, port range 1024-65535
- fs.file-max 1048576
Cloudflare 계정 (Netbis)
| 항목 | 값 |
|---|---|
| 이메일 | netbis@netbis.io |
| Account ID | 8fcf3c7876332aba33e974cbbfdad951 |
| Global API Key | sandbox-tokyo /root/.config/cloudflare/cf-global-api-key |
| API Token (바운서용) | crowdsec-cf-bouncer-netbis (Workers, Turnstile, WAF, Zone 권한) |
| Workers 플랜 | Paid ($5/월, 1000만 요청 포함) |
Zone 목록
| Zone | Zone ID | 플랜 | 현재 오리진 |
|---|---|---|---|
| fall-vip.com | 662312b0ca619d1d5c8f4c112150d749 | Pro | 42.125.196.86 |
| fall-mvp.com | 6c171579912a271c0fc89c8187493b0f | Free | 139.162.73.240 |
| fall-vip7.com | a8832b9d3b546f96505abeadea4750d1 | Free | 139.162.73.240 |
| psd777.com | a14533c2937b19e5b7ed19cbecd58679 | Pro | 139.162.114.197 |
| rss-555.com | 6d4b084940520c1f820927e5d8ade2c6 | Pro | 139.162.73.17 |
| rss-7790.com | d9db9e50e202339326498baa340a9d16 | Pro | 139.162.73.17 |
모든 zone은 Cloudflare Flexible SSL, 프록시(오렌지 구름) 사용.
라우트 및 업스트림
| 라우트 ID | 호스트 | 업스트림 (오리진 IP) |
|---|---|---|
| fall-vip-com | fall-vip.com | 42.125.196.86 |
| fall-mvp-com | fall-mvp.com | 139.162.73.240 |
| fall-vip7-com | fall-vip7.com | 139.162.73.240 |
| psd777-com | psd777.com | 139.162.114.197 |
| rss-555-com | rss-555.com | 139.162.73.17 |
| rss-7790-com | rss-7790.com | 139.162.73.17 |
| ev-fall-vip-com | ev.fall-vip.com | 42.125.196.115 |
| ev-fall-vip7-com | ev.fall-vip7.com | 42.125.196.115 |
| ev-psd777-com | ev.psd777.com | 42.125.196.115 |
| vi-rss-555-com | vi.rss-555.com | 42.125.196.115 |
| vi-rss-7790-com | vi.rss-7790.com | 42.125.196.115 |
모든 라우트에 proxy-rewrite (Host 전달) 적용.
SSL 인증서
acme.sh + Cloudflare DNS-01 챌린지로 발급. 크론 자동 갱신.
| 도메인 | SAN | 발급기관 | 만료 |
|---|---|---|---|
| fall-vip.com | *.fall-vip.com | ZeroSSL | 2026-07-02 |
| fall-mvp.com | *.fall-mvp.com | ZeroSSL | 2026-07-02 |
| fall-vip7.com | *.fall-vip7.com | ZeroSSL | 2026-07-02 |
| psd777.com | *.psd777.com | ZeroSSL | 2026-07-02 |
| rss-555.com | *.rss-555.com | ZeroSSL | 2026-07-02 |
| rss-7790.com | *.rss-7790.com | ZeroSSL | 2026-07-02 |
인증서 경로: /root/.acme.sh/{domain}_ecc/
CrowdSec 연동
http-logger
APISIX global_rule로 모든 요청 로그를 CrowdSec(jp1)로 전송.
- 엔드포인트:
http://10.253.100.240:8085/apisix-logs - 인증:
auth_header: apisix-crowdsec-log-2024 - 파서:
custom/apisix-json-logs(기존 파서 공유)
Cloudflare Worker Bouncer (netbis-cf)
| 항목 | 값 |
|---|---|
| 컨테이너 | jp1 incus netbis-cf-bouncer (10.253.103.33) |
| 바운서 이름 | netbis-cf (CrowdSec LAPI 등록) |
| LAPI 키 | FR/PbHA110b6+m/gkByp9itNOaQMdbM8BwKR3DerCTI |
| 설정 파일 | /etc/crowdsec/bouncers/crowdsec-cloudflare-worker-bouncer.yaml |
| 동작 | CrowdSec ban → Cloudflare Worker + Turnstile captcha |
| 적용 범위 | Netbis 계정 전체 6개 zone |
기존 cs-cf-worker-bouncer (Kappa 계정용)와 별도 컨테이너로 분리 운영.
Cloudflare 보안 설정
Rate Limiting (2026-04-03 설정)
| Zone | 제한 | 액션 | 차단시간 |
|---|---|---|---|
| fall-vip.com | 600/분 | managed_challenge | 60초 |
| psd777.com | 600/분 | managed_challenge | 60초 |
| rss-555.com | 600/분 | managed_challenge | 60초 |
| rss-7790.com | 600/분 | managed_challenge | 60초 |
| fall-mvp.com | 100/10초 (~600/분) | block (Free 제한) | 10초 |
| fall-vip7.com | 100/10초 (~600/분) | block (Free 제한) | 10초 |
Super Bot Fight Mode (2026-04-03 설정)
Pro zone 4개(fall-vip.com, psd777.com, rss-555.com, rss-7790.com)에 적용:
- Definitely automated → managed_challenge
- Verified bots → allow
- Static resource protection → true
Free zone(fall-mvp.com, fall-vip7.com)은 미적용.
DDoS Protection
기본 활성화 상태 (Cloudflare managed ruleset). 감도는 기본값(Medium).
공격 이력
2026-03-31 ~ 04-01 대규모 봇 공격
| 도메인 | 3/31 요청 | 4/1 요청 | 출처 |
|---|---|---|---|
| rss-555.com | 3050만 (threats 1700만) | 3000만 (threats 2300만) | JP 99% |
| fall-vip.com | 2560만 (threats 1160만) | 1540만 (threats 1000만) | JP 99% |
| fall-mvp.com | 정상 | 738만 (threats 340만) | JP |
- 일본 IP에서 집중된 L7 DDoS 공격
- Cloudflare가 threat으로 분류했으나 완전 차단하지 않음
- 정상 트래픽 일 130~180만 대비 30배 이상 폭주
- 대응: Rate Limiting + SBFM 사후 설정
정상 트래픽 기준 (30일 평균)
일 평균 약 140만 요청. 월 환산 약 4200만.
로그 분석
사용 가능
- CF GraphQL Analytics API — 시간별/국가별/threat 데이터 조회 (보관 30일)
- APISIX http-logger → CrowdSec — 오리진 도달 요청 분석
Logpush (Enterprise 전용, 현재 불가)
Cloudflare Logpush(HTTP 요청 로그를 R2 등으로 전송)는 Enterprise 플랜 전용. Pro 플랜에서는 사용 불가.
Workers Logpush (준비만 완료)
Workers Paid에 포함. CrowdSec Worker Bouncer 요청 로그를 R2에 저장 가능.
- R2 버킷
cf-logs생성 완료 (APAC region) - R2 API Token:
r2-logpush-cf-logs(id: 6450de0b6fc95f6d47affa8be3804a75) - 비용: 월 2000만 건 포함, 초과분 $0.60/100만 건
- 정상 트래픽 기준 약 $13/월 추가 발생 예상
- 공격 시 비용 폭증 가능 → 필요 시에만 활성화 권장, 현재 미활성
Workers 비용 예상
| 시나리오 | 월 요청 | Workers 비용 |
|---|---|---|
| 정상 | ~4200만 | ~$14.6 |
| 폭주 포함 | ~1.6억 | ~$50 |
| Rate Limit 적용 후 정상 | ~4200만 | ~$14.6 |
| Rate Limit 적용 후 폭주 | 대폭 감소 예상 | ~$15-20 |
NPM 서버 (오리진)
| 호스트명 | IP | 비고 |
|---|---|---|
| NPM-1 | 172.104.100.11 | |
| NPM-2 | 139.162.114.197 | SSH 비밀번호 인증 → 키 등록 완료 |
| NPM-3 | 139.162.73.17 | rss-555.com, rss-7790.com 오리진 |
| NPM-4 | 139.162.73.240 | fall-vip.com, fall-mvp.com, fall-vip7.com 오리진 |
| NPM-5 | 172.104.70.137 | |
| npm-6 | 172.105.226.218 |
6대 모두 커널 튜닝 완료 (/etc/sysctl.d/99-proxy-tuning.conf):
- TCP BBR, conntrack 262144, fin_timeout 10s, keepalive 300s, port range 1024-65535
- limits.conf nofile 655360 (Docker 컨테이너 반영은 compose ulimits 추가 필요, 서비스 중이라 미적용)
유사시 전환 절차
- Cloudflare DNS에서 각 도메인 A 레코드를
139.162.71.52로 변경 (수동) - APISIX 라우트/SSL 사전 등록 완료 상태이므로 즉시 서비스 가능
- 전환 후 CrowdSec 로그 수신 및 바운서 차단 자동 동작 확인
이전에 운영했던 서비스 (중지됨)
sandbox-tokyo에서 기존 운영하던 아래 서비스는 2026-04-03 중지:
- vault-prod (HashiCorp Vault)
- wg-easy (WireGuard VPN)
- nginx-tcp-proxy
- socks5-v4 (microsocks)
- tlsproxy
- Caddy (systemd, disabled)