DDoS 패킷 보호 및 필터링
1) 왜 필요한가
DDoS는 대역/pps, 상태 테이블, 핵심 CPU/IRQ, 연결 풀, 응용 프로그램 제한과 같은 리소스의 "대규모 저하" 입니다. 목표는 보호를 계층화하는 것입니다. 네트워크 주변의 볼륨을 끄고 프로토콜 이상 현상을 두 배로 중화하고 L7의 원치 않는 요청을 차단하여 합법적 인 사용자를위한 SLO를 절약하십시오.
2) 공격 클래스
2. 1 L3/L4 (볼륨/프로토콜)
Volumetric: UDP 플러드, UDP- 반사/증폭 (DNA/CIP/NTP/SSDP/memcashed/mDNS), GRE 플러드.
의정서/상태 소진: SYN 홍수, ACK/RST 홍수,
QUIC/UDP 기능: 잘못된 초기/재시도 폭풍, 스푸핑 소스.
2. 2 L7 (응용 프로그램)
HTT/1. 1: 값 비싼 노선 뒤에 쿼리, 헤더 대형/현장 밀수.
TP/2: 빠른 재설정, 스트림 플러드, HEADERS 홍수, 프라이어리티 남용.
KDE/3 (QUIC): 종료없이 연결/스레드, 초기 홍수.
슬로우 -ата통신: slowloris/slow-readed/slow-POST.
gRPC/웹 소켓: 끝없는 스트림, 메시지 플러드, 큰 프레임.
3) 기본 보안 아키텍처
1. 애니 캐스트 + 스크럽
전 세계에 트래픽을 뿌리고 공급자 스크러빙 센터를 통해 운전하십시오 (가장자리에서 체적/스푸핑 차단).
2. Multi-CNC/Multi-Edge
도메인 분리 (웹, API, 정적), 읽기 로드를위한 보호 및 캐시 집계.
3. 주변의 저수준 필터
국경 라우터의 ACL (RFC1918, bogon, 알려진 잘못된 포트).
서명을 조기에 삭제하고 연결까지 속도 제한을위한 eBPF/XDP.
4. L7 경계계 (NGINX/특사/WAF)
키, 챌린지 (captcha/PoW), 캐시, "고가의" 경로의 우선 순위 결정.
5. 내부 안정성
연결 풀, 대기열, 회로/시간 초과, 서비스 격리 (벌크 헤드) 및 셰더 오토 스케일.
4) 네트워크 "밸브": 즉시 켜야 할 것
4. 1 Linux sysctl (커널/스택)
bash
TCP SYN flood sysctl -w net. ipv4. tcp_syncookies=1 sysctl -w net. ipv4. tcp_max_syn_backlog=4096 sysctl -w net. ipv4. tcp_synack_retries=3
Conntrack/sysctl -w net tables. netfilter. nf_conntrack_max=262144 sysctl -w net. netfilter. nf_conntrack_tcp_timeout_established=300
ICMP/redirect sysctl -w net. ipv4. icmp_echo_ignore_broadcasts=1 sysctl -w net. ipv4. conf. all. accept_redirects=0 sysctl -w net. ipv4. conf. all. send_redirects=0
sysctl -w net socket resources. core. somaxconn=4096 sysctl -w net. core. netdev_max_backlog=250000 sysctl -w net. core. rmem_max=134217728 sysctl -w net. core. wmem_max=134217728
4. 2 nftables: 기본 필터 및 패키지의 인자 제한
nft table inet filter {
sets {
bogon { type ipv4_addr; flags interval; elements = { 0. 0. 0. 0/8, 10. 0. 0. 0/8, 100. 64. 0. 0/10,
127. 0. 0. 0/8, 169. 254. 0. 0/16, 172. 16. 0. 0/12, 192. 0. 2. 0/24, 192. 168. 0. 0/16, 198. 18. 0. 0/15, 224. 0. 0. 0/4 } }
}
chains {
input {
type filter hook input priority 0; policy drop;
ip saddr @bogon drop ct state established,related accept
UDP amplification ports - limit pps udp dport {53,123,1900,11211,389,1900,5353} limit rate over 2000/second drop
SYN rate-limit tcp flags syn tcp dport {80,443} limit rate over 2000/second drop
ICMP flood ip protocol icmp limit rate 100/second accept
}
}
}
4. 3 XDP/eBPF (아이디어)
스푸핑 소스가있는 조기 드롭 패킷 (라우터에서 uRPF를 환영합니다).
/ 32 당 및/24 당 해시 버킷 pps; 소스의 역동적 인 "검역".
UDP- 반사: DNA 응답과 유사한 서명 (컨텍스트에서 필터링).
5) UDP 증폭: 재고 및 블록
빈번한 반사경/증폭기: DNA (오픈 리졸버), NTP (몬리스트), CPP, SSDP, mDNA, Memaccashed (UDP), Chargen.
조치:- UDP 서비스를 닫거나 제한하고 열린 포트를 최소화하십시오.
- 주변에서 알려진 포트에 대한 pps/비트 전송률을 제한합니다
- DNA 권장 사항: 네트워크에 대해서만 재귀, RRL (Response Rate Limiting), 모든 것을 최소화합니다.
- NTP- 공개적으로 신뢰할 수있는 "부트 스트랩", '노 쿼리'.
6) TCP의 상태 소진
SYN 플러드: 'tcp _ syncookie = 1', 증가 된 'tcp _ max _ syn _ backlog', 'synack _ retries = 3', pps로 떨어짐.
ACK/RST 홍수: 낮은 수준의 한계, 불법 시퀀스의 스크리닝 (nftables/ebpf).
국경에 연결없는 연결: 무국적 서명으로 필터가 가능한 상태 테이블을 낭비하지 마십시오.
7) TP/2/3 및 스마트 L7 공격
TP/2 빠른 재설정: RST 프레임의 주파수 및 개방 스트림 수를 제한합니다. 이상이있을 경우 연결을 닫습니다.
스트림 악용 사항: 동시 스트림, 헤더 크기, 최대 프레임 크기.
QUIC/TH/3: 초기 pps를 제한하고 재시도를 가능하게합니다. 짧은 악수 타임 아웃.
NGINX (조각 L7)
nginx
Header/body constraint client_max_body_size 1m;
large_client_header_buffers 4 8k;
HTTP/2 limits http2_max_concurrent_streams 128;
http2_recv_buffer_size 256k;
Rate limit by IP (example)
limit_req_zone $binary_remote_addr zone=reqs:20m rate=100r/s;
limit_req zone=reqs burst=200 nodelay;
특사 (재설정 및 제한 사항)
yaml http2_protocol_options:
max_concurrent_streams: 128 initial_stream_window_size: 65536 max_outbound_frames: 10000 stream_error_on_invalid_http_messaging: true
8) 느린 공격 및 자원 보호
Slowloris/slow-readed/slow-POST: 'proxy _ 요청 _ buffering on', 낮은 유휴 시간 초과, 최소 허용 가능한 '읽기 _ rate' 활성화.
요청 당 긴 패킷 간 간격으로 연결을 종료합니다.
응용 프로그램에서-조기 읽기/바디 폐기, JSON 크기/깊이 제한.
9) L7 필터링: 더 중요한 사람-통과하자
트래픽 분류: 알려진 양호 (mSL/JWT 파트너), 등록 된 사용자, 익명.
우선 순위: "비싼" 쓰기 경로 (예금/결론) -보호하지만 미스 확인; 읽기 디렉토리 - 캐시 + 스로틀.
챌린지 레이어: 피크에서 회색 영역에 대한 captcha/PoW/JS 챌린지.
10) 캐시, 통합 및 분해
정적/준 정적 응답을위한 에지 캐시, '부실한 동안 재발행'.
요청 통합: 프록시 및 응용 프로그램에서 병렬 요청을 하나의 키로 축소하십시오.
악화 모드: 보조 기능 (개인화, 무거운 보고서) 비활성화, "가벼운" 페이지 발행.
11) 관찰 및 원격 측정
메트릭 (팝/노드/클러스터 당):- L3/L4: 'pps _ in/out', 'bps _ in/out', 'drop _ pps {reason}', 'syn _ recv', 'contrack _ used/limited', 'xdp _ drop _ pps'.
- L7: '요청 _ total {route}', '429 _ total', 'challenge _ total {Type}', 'h2 _ rst _ rate', 'slow _ req _ total'.
- 의존성: CPU IRQ 소프트/하드, NIC 큐 드롭, 런 큐 길이.
로그: 샘플링 ,/24, ASN, 포트 및 서명; PII없이.
추적: 화이트리스트에서 활성화하고 디버깅을 위해 충돌 확장 샘플링을 사용하십시오
12) 응답 계획 (런북)
1. 검출: pps/bps/429/h2 _ rst _ rate 임계 값의 트리거링.
2. 분류: 레벨 (L3/4/7), 프로토콜 (UDP/될/h2/h3), 지리/ASN.
- 공급자에서 스크러빙/블랙홀 프로파일 활성화
- nftables/ebpf 한계를 강화하고
- L7 한계를 낮추고 도전을 증가시킵니다
- QUIC (초기 홍수) 에 대한 재시도를 활성화합니다
- 4. 통신: 상태 페이지, 파트너 알림 템플릿.
- 5. 법의학: 60-120 초 동안 PCAP 캡처, 최고 토커 ASN/포트 샘플링.
- 6. 회고: 서명, 임계 값, 반사경 목록 업데이트.
13) 테스트 및 훈련
DDoS 드릴 플레이 북은 분기별로: 합성 UDP/Hyper버스트, 느린 트래픽, HTT/2 재설정.
게임 데이: CDN간의 모든 캐스트 스위치/마이그레이션, "쉬운 모드" 로 저하.
공급자 확인: SLA 스크러빙, 온/오프 시간 필터, max pps/bps.
14) 안티 패턴
체적 공격에 대해서만 L7-WAF에서만 가능합니다.
연석 및 연결이 많은 필터링에는 uRPF/ACL이 없습니다.
무제한 헤더/바디 및 피크에서 오래 살아 남았습니다.
Anycast/multi-edge가없는 단일 영역/ROR.
NIC/IRQ/CPU 인벤토리 및 대기열 모니터링이 없습니다.
캐시/통합 없음-백엔드를위한 추가 RPS.
15) iGaming/Finance의 세부 사항
임시 피크 (일치/더비/로또 추첨): 사전에 POP 용량을 확장하고 적극적인 계수 캐시를 포함하며 익명의 사람들을위한 평신도 카나리아 문제를 포함합니다.
지불/출력 경로: mTLS, 짧은 타임 아웃, 경쟁 한계가있는 별도의 에지 풀; 0-RTT가 없습니다.
지리 정치인: 지역 허가 등, "호스팅" 의 ASN 필터링, 빠른 지리 전환.
사기 방지와의 교차점: 속도 제한 및 위험 API는 DDoS 사고시 "하드" 프로파일로 전환됩니다.
16) Prod 준비 점검표
- 애니 캐스트 и독창성 멀티 에지/CNC; 스크러빙 채널을 확인했습니
- 테두리 -ACL/uRPF; nftables/ebpf/XDP 프로파일, 연결없는 필터링.
- Sysctl\/SYN 튜닝, UDP 증폭기 포트의 경우 pps를 제한합니다.
- TP/2/3 제한 (스트림, 프레임, 헤더), 느린 보호, 바디/헤더 제한.
- L7 제한 및 도전; 주변에 캐시 및 통합.
- 대시 보드 pps/bps/contrack/IRQ + L7 RED; h2 _ rst/429 이상으로 경고합니다.
- 런북/플레이 북, 공급자 연락처, 한 번의 클릭 활성화 프로필.
- 가르침: 버스트, 느리게, TP/2 재설정; 보고 및 기록 개선.
- 지불/중요 경로, mSL 및 엄격한 제한을위한 분할 풀.
17) TL; DR
Stratify 보호: Anycast + 스크러빙 댐핑 볼륨, eBPF/XDP + nftables는 가비지를 스택으로 자르고 L7 제한/챌린지/캐시는 SLA를 유지합니다. SYN 쿠키, 백 로그 조정, UDP 증폭기 한계 설정 및 보호 속도 저하. 런북을 가지고 훈련하십시오. iGaming의 경우-피크 시간 동안 미리 가장자리를 확장하고 mTLS 및 하드 제한이있는 별도의 결제 경로를 사용하십시오