- MAX_BLOCK, MAX_RL_IP, MAX_RL_FLOW: 2,000,000 → 100,000 - Memory usage: ~1GB → ~60MB Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
3.8 KiB
3.8 KiB
XDP Firewall 설정
이 서버의 XDP 기반 DDoS 방어 설정 문서
개요
- 도구: XDP-Firewall
- 설치 위치:
/home/admin/XDP-Firewall - 설정 파일:
/etc/xdpfw/xdpfw.conf - 모드: DRV/native (고성능)
방어 구조
인터넷 → Cloudflare (250 req/10s) → Linode DDoS (~40Gbps) → XDP (250 Pps)
L7 Rate Limit 업스트림 필터링 L3/L4 필터
현재 설정
컴파일 옵션 (src/common/config.h)
| 항목 | 값 | 설명 |
|---|---|---|
| MAX_BLOCK | 100,000 | 최대 차단 IP 수 |
| MAX_RL_IP | 100,000 | IP Rate Limit 맵 크기 |
| MAX_RL_FLOW | 100,000 | Flow Rate Limit 맵 크기 |
| ENABLE_RL_IP | 활성화 | IP 기반 Rate Limit |
| ENABLE_RL_FLOW | 활성화 | Flow 기반 Rate Limit |
필터 규칙 (26개)
| 순서 | 대상 | 동작 |
|---|---|---|
| 1-2 | Tailscale (100.64.0.0/10, fd7a:115c:a1e0::/48) | 허용 |
| 3-17 | Cloudflare IPv4 (15개 대역) | 허용 |
| 18-24 | Cloudflare IPv6 (7개 대역) | 허용 |
| 25 | 250 Pps 초과 | 60초 차단 |
| 26 | 나머지 | 허용 |
Rate Limit 설정
- 임계값: 250 Pps per IP
- 차단 시간: 60초
- 근거: XDP DDoS Protection 레퍼런스에서 250 Pps 권장, 여유 있게 250으로 설정
명령어
서비스 관리
# 상태 확인
sudo systemctl status xdpfw.service
# 재시작
sudo systemctl restart xdpfw.service
# 로그 확인
sudo tail -f /var/log/xdpfw.log
# 필터 목록 보기
sudo xdpfw -l
패킷 통계 확인
# 실시간 통계
sudo bpftool map dump name map_stats
# 차단된 IP 확인
sudo bpftool map dump name map_block
동적 규칙 추가/삭제
# 특정 IP 차단 (60초)
sudo xdpfw-add -m 2 -d 1.2.3.4 -e 60
# 특정 IP 차단 해제
sudo xdpfw-del -m 2 -d 1.2.3.4
# Rate Limit 규칙 추가
sudo xdpfw-add -m 0 --pps 1000 --action 0 --block-time 30
화이트리스트
Tailscale
- IPv4:
100.64.0.0/10 - IPv6:
fd7a:115c:a1e0::/48
Cloudflare IPv4
173.245.48.0/20
103.21.244.0/22
103.22.200.0/22
103.31.4.0/22
141.101.64.0/18
108.162.192.0/18
190.93.240.0/20
188.114.96.0/20
197.234.240.0/22
198.41.128.0/17
162.158.0.0/15
104.16.0.0/13
104.24.0.0/14
172.64.0.0/13
131.0.72.0/22
Cloudflare IPv6
2400:cb00::/32
2606:4700::/32
2803:f800::/32
2405:b500::/32
2405:8100::/32
2a06:98c0::/29
2c0f:f248::/32
성능
| 항목 | 수치 |
|---|---|
| XDP 처리 능력 | 2-5M Pps |
| 최대 차단 IP | 100,000개 |
| 메모리 사용 | ~60MB (BPF 맵) |
| CPU 사용 | 최소 (커널 바이패스) |
방어 능력
| 시나리오 | 방어 가능 IP 수 |
|---|---|
| 250 Pps/IP 공격 | ~10,000개 |
| 1,000 Pps/IP 공격 | ~5,000개 |
| 5,000 Pps/IP 공격 | ~1,000개 |
재컴파일 방법
설정 변경 후 재컴파일 필요:
cd /home/admin/XDP-Firewall
# 설정 수정
nano src/common/config.h
# 재컴파일
sudo systemctl stop xdpfw.service
make clean && make
sudo make install
sudo systemctl start xdpfw.service
Cloudflare IP 업데이트
Cloudflare IP가 변경되면 설정 업데이트 필요:
# 최신 IP 확인
curl https://www.cloudflare.com/ips-v4/
curl https://www.cloudflare.com/ips-v6/
# 설정 수정
sudo nano /etc/xdpfw/xdpfw.conf
# 적용
sudo systemctl restart xdpfw.service