DDoS-Schutz und Paketfilterung
1) Warum es notwendig ist
DDoS ist die „massive Degradierung“ von Ressourcen: Band/pps, Statustabellen, CPUs des Kernels/IRQs, Verbindungspools, Anwendungslimits. Das Ziel ist das Delaminieren des Schutzes: Löschen Sie das Volumen am Netzwerkperimeter, neutralisieren Sie Protokollanomalien bis zum TCP/IP-Stack und schneiden Sie unerwünschte Anfragen auf L7 ab, indem Sie SLO für legitime Benutzer speichern.
2) Angriffsklassen
2. 1 L3/L4 (volumetric/protocol)
Volumetric: UDP flood, UDP-reflection/amplification (DNS/CLDAP/NTP/SSDP/memcached/mDNS), GRE flood.
Protocol/state exhaustion: SYN flood, ACK/RST flood, TCP connection-exhaustion, ICMP flood, TCP fragmentation.
QUIC/UDP Features: falsche Initial/Retry Stürme, spoofed Quelle.
2. 2 L7 (application)
HTTP/1. 1: Anfragen hinter den Straßenrouten, header oversize/field smuggling.
HTTP/2: Rapid Reset, stream-flood, HEADERS flood, PRIORITY abuse.
HTTP/3 (QUIC): Verbindungen/Threads ohne Abschluss, Initial Flood.
Slow-атаки: slowloris/slow-read/slow-POST.
gRPC/WebSocket: Endlose Streams, Message-Flood, große Frames.
3) Grundlegende Schutzarchitektur
1. Anycast + Scrubbing
Sprühen Sie den Verkehr global und fahren Sie durch die Scrubbing-Center des Anbieters (volumetrisches/Spoofing-Clipping am Rand).
2. Multi-CDN / Multi-Edge
Unterschiedliche Domänen (Web, API, Statik), Schutz und Cache-Aggregation für Read-Load.
3. Low-Level-Filter an ihrem Umfang
ACL auf Border-Routern (RFC1918, Bogon, wissentlich falsche Ports).
eBPF/XDP für Early-Drop auf Signaturen und Rate-Limits bis Conntrack.
4. L7-Perimeter (NGINX/Envoy/WAF)
RPS-Komprimierung über Schlüssel, Challenge (Captcha/PoW), Cache, Priorisierung von „teuren“ Pfaden.
5. Interne Nachhaltigkeit
Verbindungspools, Warteschlangen, Circuit/Timeout, Service Isolation (Bulkhead) und Autoscaling mit „Plug-Ins“ (Shedder).
4) Vernetzte „Ventile“: Was sofort einschalten
4. 1 Linux sysctl (Kernel/Stack)
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: Basisfilter und ratelimit auf Paketen
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 (Idee)
Early-Drop-Pakete mit spoofed Quelle (uRPF auf dem Router ist willkommen).
Hash-Buckets pps per/32 und per/24; dynamische „Quarantäne“ von Quellen.
UDP-Reflexions-Signaturen: DNS-Response-like auf die Eingabe (außerhalb des Kontextes filtern).
5) UDP-Verstärkung: Inventar und Blöcke
Häufige Reflektoren/Verstärker: DNS (open resolvers), NTP (monlist), CLDAP, SSDP, mDNS, Memcached (UDP), Chargen.
Maßnahmen:- UDP-Dienste schließen/einschränken, offene Ports minimieren.
- Auf dem Perimeter begrenzen pps/Bitrate für bekannte Ports.
- DNS-Empfehlung: rekursiv nur für ihre Netzwerke, RRL (Response Rate Limiting), ANY-Minimierung.
- NTP ist nur ein „Bootstrap“ zu vertrauenswürdigen, „noquery“ für die Öffentlichkeit.
6) TCP state exhaustion
SYN-Flut: 'tcp _ syncookies = 1', erhöht durch 'tcp _ max _ syn _ backlog', 'synack _ retries = 3', drop durch pps.
ACK/RST-Flut: Low-Level-Limits, Aussetzer illegitimer Sequenzen (nftables/ebpf).
Conntrack-less am Bordstein: keine Zustandstabellen ausgeben, wo ein Filter durch stateless-Signatur möglich ist.
7) HTTP/2/3 und intelligente L7-Angriffe
HTTP/2 Rapid Reset: Begrenzung der Häufigkeit von RST-Frames und der Anzahl offener Threads; Schließen Sie die Verbindung bei Anomalien.
Stream abuse: лимит concurrent streams, headers size, max frame size.
QUIC/HTTP/3: Initial pps einschränken, Retry aktivieren; kurze Handshake-Timeouts.
NGINX (Fragment 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;
Envoy (Anti-Reset und Limits)
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) Langsame Angriffe und Ressourcenschutz
Slowloris/slow-read/slow-POST: aktivieren Sie' proxy _ request _ buffering on', low idle-timeout, minimum acceptable' read _ rate'.
Beenden Sie Verbindungen mit einem langen Interpaketintervall auf Anfrage.
Auf der Anwendung - frühes Lesen/Verwerfen des Körpers, JSON Größe/Tiefe Grenzen.
9) L7 Filtration: Wer ist wichtiger - lassen Sie es passieren
Traffic-Klassifizierung: bekannt gut (mTLS/JWT Partner), registrierte Nutzer, anonym.
Prioritäten: „teure“ Write-Routen (Ein-/Auszahlungen) - um die bestätigten zu schützen, aber zu überspringen; read-Verzeichnisse - cache + throttle.
Challenge-Layer: Captcha/PoW/JS-Challenges für Grauzonen beim Peak.
10) Cache, Coalescing und Degradierung
Edge-Cache für statische/quasistatische Antworten, 'stale-while-revalidate'.
Coalescing-Anforderung: Gleichzeitige Anforderungen an einen Schlüssel zusammenbrechen lassen - im Proxy und in der Anwendung.
Degrade-Modus: Deaktivieren Sie die sekundären Funktionen (Personalisierung, schwere Berichte), geben Sie „leichte“ Seiten aus.
11) Beobachtbarkeit und Telemetrie
Metriken (per ROP/Node/Cluster):- L3/L4: `pps_in/out`, `bps_in/out`, `drop_pps{reason}`, `syn_recv`, `conntrack_used/limit`, `xdp_drop_pps`.
- L7: `requests_total{route}`, `429_total`, `challenge_total{type}`, `h2_rst_rate`, `slow_req_total`.
- Abhängigkeiten: CPU IRQ soft/hard, NIC queue drops, run-queue length.
Logs: Sampled, aggregiert nach/24, ASN, Ports und Signaturen; ohne PII.
Tracing: Aktivieren Sie auf Whitelists, erweitern Sie das Sampling zum Debuggen.
12) Reaktionspläne (Runbook)
1. Schlagwort: Schwellen pps/bps/429/h2_rst_rate.
2. Klassifizierung: Schicht (L3/4/7), Protokoll (UDP/TCP/h2/h3), Geo/ASN.
- Aktivieren von Scrubbing-/Blackhole-Profilen auf dem Anbieter,
- stärken nftables/ebpf Grenzen,
- L7-Limits senken und Herausforderungen erhöhen,
- Retry für QUIC (Initial Flood) aktivieren.
- 4. Kommunikation: Status-Seite, Benachrichtigungsvorlagen für Partner.
- 5. Forenzika: PCAP-Capture für 60-120 Sekunden, Sampling Top-Sprecher ASNs/Ports.
- 6. Rückblick: Signaturen, Schwellen, Reflektorlisten aktualisieren.
13) Tests und Übungen
Playbooks DDoS-drill vierteljährlich: synthetische UDP/HTTP-Bursts, Slow-Traffic, HTTP/2 Reset.
Game Day: Umschalten von Anycast/Migration zwischen CDN, Degradierung zum „Light Mode“.
Anbieterverifizierung: SLA-Scrubbing, Ein-/Ausschaltzeit der Filter, max pps/bps.
14) Antipatterns
Verlassen Sie sich bei einem volumetrischen Angriff nur auf L7-WAF.
Kein uRPF/ACL am Bordstein und conntrack-schwere Filterung „frontal“.
Unbegrenzte Schlagzeilen/Körper und lange Keep-Alive in der Spitze.
Single Region/RPO ohne Anycast/Multi-Edge.
Kein Bestand an NIC/IRQ/CPU und Warteschlangenüberwachung.
Kein Cache/Coalesing - zusätzliche RPS pro Backend.
15) Spezifität von iGaming/Finanzen
Zeitspitzen (Matches/Derbys/Lotto-Ziehungen): Erweitern Sie die POP-Kapazität im Voraus, aktivieren Sie einen aggressiven Koeffizienten-Cache, legen Sie Canary-Challenges für Anonyme.
Payment/Output Routen: separater Edge-Pool mit mTLS, kurze Timeouts, Wettbewerbslimits; Keine 0-RTT.
Geo-Policies: regionale Allow-Lists, ASN-Filterung von „Hosting“, schnelles Geo-Switching.
Schnittmenge mit Antifrod: Velocity-Limits und Risk API gehen bei einem DDoS-Vorfall in das „harte“ Profil über.
16) Checkliste Prod-Ready
- Anycast или multi-edge/CDN; Scrubbing-Kanäle überprüft.
- Border-ACL/uRPF; nftables/ebpf/XDP Profile, conntrack-less Filterung.
- Sysctl-Tuning TCP/SYN, Limitpps für UDP-Verstärkerports.
- HTTP/2/3 limits (streams, frames, headers), slow-protection, body/header-limits.
- L7-Limits und Challenge; Cache und Coalescing am Perimeter.
- Dashboards pps/bps/conntrack/IRQ + L7 RED; alert auf Anomalien h2_rst/429.
- Runbook/Playbooks, Provider-Kontakte, One-Click-Aktivierung von Profilen.
- Lehren: Bursts, Slow, HTTP/2 Reset; Bericht und Aufzeichnung von Verbesserungen.
- Getrennte Pools für zahlungs-/kritische Routen, mTLS und strenge Limits.
17) TL; DR
Delaminieren Sie den Schutz: Anycast + Scrubbing dämpft das Volumen, eBPF/XDP + nftables schneiden den Müll zu einem Stapel, L7-Limits/Challenges/Cache speichern den SLA. Tunen Sie TCP (SYN-Cookies, Backlog), begrenzen Sie UDP-Verstärker, setzen Sie HTTP/2/3 und Slow-Protection-Limits. Haben Sie ein Runbook und trainieren Sie es; für iGaming - Erweitern Sie den Rand im Voraus in Spitzenzeiten und trennen Sie Zahlungswege mit mTLS und engen Limits.