호스트네임/Tailscale 노드 이름/git 레포 모두 zlambda로 통일하면서 obsidian 정리. 변경: - infra/sandbox-tokyo-nixos.md → infra/zlambda.md (git mv, alias frontmatter 추가) - zlambda.md 내용 갱신: 접속 명령, configuration 위치, 커널/sysctl 튜닝, 후속 변경 메모 - infra/infra-hosts.md 표: sandbox-tokyo 행을 zlambda로 갱신, 위키링크 [[zlambda]] - infra/vault.md SSH CA 등록 호스트 목록: [[zlambda]] 위키링크 - services/netbis.md: title/aliases/호스트명/SSH 명령 갱신 - dev/nixos-manual/_index.md: 관련 문서 링크 [[zlambda]]로 갱신 postgresql-ha.md, crowdsec-safeline.md, services/searxng.md의 sandbox-tokyo 언급은 역사적 기록(과거 운영 상태)이라 그대로 유지.
10 KiB
title, updated, aliases, tags
| title | updated | aliases | tags | ||||||
|---|---|---|---|---|---|---|---|---|---|
| Netbis 예비서버 (zlambda) | 2026-04-08 NixOS 전환으로 APISIX 미가동 |
|
|
개요
Netbis 팀 도메인의 예비(DR) 리버스 프록시 서버. 평소에는 트래픽을 받지 않으며, 유사시 Cloudflare DNS를 수동 전환하여 활성화.
기존 Ironclad 인프라(apisix, crowdsec-safeline)와는 별도 구성.
2026-04-08 상태: 호스트 OS를 Debian 12 → NixOS 25.05로 교체하면서 APISIX/etcd 컨테이너가 모두 제거됨. 호스트 이름도
sandbox-tokyo→zlambda로 통일. 현재 베이스 시스템(sshd + tailscaled + docker)만 떠 있고 DR 역할은 미가동. 재가동하려면 docker compose로 APISIX/etcd 재배포 필요. NixOS configuration은 Gitea zlambda flake에서 관리.
서버 정보
| 항목 | 값 |
|---|---|
| 호스트명 | zlambda (구 sandbox-tokyo, 2026-04-08 변경) |
| Linode 라벨 | zlambda (id 47271589) |
| 공인 IP | 139.162.71.52 |
| Tailscale IP | 100.78.51.18 (2026-04-08 변경, 이전 100.79.87.48) |
| 위치 | Linode Tokyo (ap-northeast, lish-tokyo2) |
| OS | NixOS 25.05 (Warbler), x86_64-linux |
| Linode kernel | linode/direct-disk (NixOS 자체 GRUB) |
| 디스크 | sda 49.5G ext4 (/), sdb 510M swap |
| SSH | ssh root@zlambda (또는 alias ssh root@sandbox-tokyo, 공인 IP ssh root@139.162.71.52) |
| LISH 사용자 | netbis@lish-tokyo2.linode.com (kaffa-Macmini SSH key) |
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 |
| Linode API Key | e7cd3103ca76b865df2533b32eee5c8d7799c963fb29848274245dee142d21b0 |
| 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-05 변경: 600→120/분)
| Zone | 제한 | 액션 | 차단시간 |
|---|---|---|---|
| fall-vip.com | 120/분 | managed_challenge | 60초 |
| psd777.com | 120/분 | managed_challenge | 60초 |
| rss-555.com | 120/분 | managed_challenge | 60초 |
| rss-7790.com | 120/분 | managed_challenge | 60초 |
| fall-mvp.com | 20/10초 (~120/분) | block (Free 제한) | 10초 |
| fall-vip7.com | 20/10초 (~120/분) | block (Free 제한) | 10초 |
정상 사용자 IP당 ~10 req/분 기준, 12배 여유. 공격 IP(230+/분)는 확실히 차단.
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 추가 필요, 서비스 중이라 미적용)
NPM-4 추가 튜닝 (2026-04-05)
- 커널: tcp_tw_reuse=1, rmem_max/wmem_max 16MB, tcp_max_tw_buckets 131072, tcp_max_orphans 32768
- Nginx: worker_connections 10240, proxy_buffers 16 32k, keepalive_requests 1000, open_file_cache
- real_ip_header: X-Real-IP → CF-Connecting-IP (컨테이너 내 sed, 재시작 시 초기화 주의)
유사시 전환 절차
- Cloudflare DNS에서 각 도메인 A 레코드를
139.162.71.52로 변경 (수동) - APISIX 라우트/SSL 사전 등록 완료 상태이므로 즉시 서비스 가능
- 전환 후 CrowdSec 로그 수신 및 바운서 차단 자동 동작 확인
이전에 운영했던 서비스 (제거됨)
sandbox-tokyo에서 기존 운영하던 아래 서비스는 2026-04-03 중지, 2026-04-08 NixOS 전환으로 완전 제거:
- APISIX 3.15.0 + apisix-etcd (Docker Compose)
- vault-prod (HashiCorp Vault)
- wg-easy (WireGuard VPN)
- nginx-tcp-proxy
- socks5-v4 (microsocks) — searxng가 사용 중이었음
- tlsproxy
- Caddy (systemd, disabled)
재구성 시 참고: NixOS 위에 Docker는 이미 설치돼 있으므로 docker compose 디렉토리만 다시 만들면 됨.