update netbis docs: security settings, attack history, logpush, NPM servers, cost estimates
This commit is contained in:
@@ -32,12 +32,20 @@ Docker Compose (/opt/apisix/)로 배포.
|
|||||||
|
|
||||||
- Admin API: `http://127.0.0.1:9180` (0.0.0.0/0 허용)
|
- Admin API: `http://127.0.0.1:9180` (0.0.0.0/0 허용)
|
||||||
- Admin Key: `edd1c9f034335f136f87ad84b625c8f1`
|
- Admin Key: `edd1c9f034335f136f87ad84b625c8f1`
|
||||||
|
- APISIX 컨테이너 ulimits: nofile 655360
|
||||||
|
|
||||||
### global_rules
|
### global_rules
|
||||||
|
|
||||||
- `real-ip` — source: `http_cf_connecting_ip`, trusted: Cloudflare IP 대역
|
- `real-ip` — source: `http_cf_connecting_ip`, trusted: Cloudflare IP 대역
|
||||||
- `http-logger` → CrowdSec `http://10.253.100.240:8085/apisix-logs` (auth: `apisix-crowdsec-log-2024`)
|
- `http-logger` → CrowdSec `http://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)
|
## Cloudflare 계정 (Netbis)
|
||||||
|
|
||||||
| 항목 | 값 |
|
| 항목 | 값 |
|
||||||
@@ -46,17 +54,18 @@ Docker Compose (/opt/apisix/)로 배포.
|
|||||||
| Account ID | 8fcf3c7876332aba33e974cbbfdad951 |
|
| Account ID | 8fcf3c7876332aba33e974cbbfdad951 |
|
||||||
| Global API Key | sandbox-tokyo `/root/.config/cloudflare/cf-global-api-key` |
|
| Global API Key | sandbox-tokyo `/root/.config/cloudflare/cf-global-api-key` |
|
||||||
| API Token (바운서용) | `crowdsec-cf-bouncer-netbis` (Workers, Turnstile, WAF, Zone 권한) |
|
| API Token (바운서용) | `crowdsec-cf-bouncer-netbis` (Workers, Turnstile, WAF, Zone 권한) |
|
||||||
|
| Workers 플랜 | Paid ($5/월, 1000만 요청 포함) |
|
||||||
|
|
||||||
### Zone 목록
|
### Zone 목록
|
||||||
|
|
||||||
| Zone | Zone ID | 현재 오리진 |
|
| Zone | Zone ID | 플랜 | 현재 오리진 |
|
||||||
|------|---------|------------|
|
|------|---------|------|------------|
|
||||||
| fall-vip.com | 662312b0ca619d1d5c8f4c112150d749 | 42.125.196.86 |
|
| fall-vip.com | 662312b0ca619d1d5c8f4c112150d749 | Pro | 42.125.196.86 |
|
||||||
| fall-mvp.com | 6c171579912a271c0fc89c8187493b0f | 139.162.73.240 |
|
| fall-mvp.com | 6c171579912a271c0fc89c8187493b0f | Free | 139.162.73.240 |
|
||||||
| fall-vip7.com | a8832b9d3b546f96505abeadea4750d1 | 139.162.73.240 |
|
| fall-vip7.com | a8832b9d3b546f96505abeadea4750d1 | Free | 139.162.73.240 |
|
||||||
| psd777.com | a14533c2937b19e5b7ed19cbecd58679 | 139.162.114.197 |
|
| psd777.com | a14533c2937b19e5b7ed19cbecd58679 | Pro | 139.162.114.197 |
|
||||||
| rss-555.com | 6d4b084940520c1f820927e5d8ade2c6 | 139.162.73.17 |
|
| rss-555.com | 6d4b084940520c1f820927e5d8ade2c6 | Pro | 139.162.73.17 |
|
||||||
| rss-7790.com | d9db9e50e202339326498baa340a9d16 | 139.162.73.17 |
|
| rss-7790.com | d9db9e50e202339326498baa340a9d16 | Pro | 139.162.73.17 |
|
||||||
|
|
||||||
모든 zone은 Cloudflare Flexible SSL, 프록시(오렌지 구름) 사용.
|
모든 zone은 Cloudflare Flexible SSL, 프록시(오렌지 구름) 사용.
|
||||||
|
|
||||||
@@ -115,6 +124,95 @@ APISIX global_rule로 모든 요청 로그를 CrowdSec(jp1)로 전송.
|
|||||||
|
|
||||||
기존 `cs-cf-worker-bouncer` (Kappa 계정용)와 별도 컨테이너로 분리 운영.
|
기존 `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 추가 필요, 서비스 중이라 미적용)
|
||||||
|
|
||||||
## 유사시 전환 절차
|
## 유사시 전환 절차
|
||||||
|
|
||||||
1. Cloudflare DNS에서 각 도메인 A 레코드를 `139.162.71.52`로 변경 (수동)
|
1. Cloudflare DNS에서 각 도메인 A 레코드를 `139.162.71.52`로 변경 (수동)
|
||||||
|
|||||||
Reference in New Issue
Block a user