הגנת חבילת DDOS וסינון
1) למה אתה צריך את זה
DoS (ראשי תיבות של Design Degradation of Resources: band/pps, state tables, Core CPU/IRQ), בריכות חיבור, גבולות יישומים. המטרה היא לחסום את ההגנה: לכבות את הנפח בהיקפי הרשת, לנטרל חריגות פרוטוקול לערימת TCP/IP, ולנתק בקשות לא רצויות על L7, לשמור SLO למשתמשים לגיטימיים.
2) שיעורי תקיפה
2. 1 L3/L4 (נפח/פרוטוקול)
מבול: UDP, UDP-Reflection/הגברה (DNS/CLDAP/NTP/SSDP/memcased/mDNS), מבול GRE.
פרוטוקול/תשישות מצב: שיטפון SYN, שיטפון ACK/RST, חיבור-תשישות TCP, שיטפון ICMP, פיצול TCP.
מאפייני QUIC/UDP: סופות ראשוניות/ריטרי כוזבות, מקור מזויף.
2. 2 L7 (יישום)
HTTP/1. 1: שאילתות מאחורי מסלולים יקרים, כותרת יתר/הברחת שדה.
HTTP/2: Rapid Respet, זרם-שיטפון, מבול כותרות, התעללות בעדיפות.
HTTP/3 (QUIC): חיבורים/אשכולות ללא סיום, שיטפון ראשוני.
לאט-לאט-לאט-פוסט.
GRPC/WebSocket: זרמים אינסופיים, הצפת הודעות, מסגרות גדולות.
3) ארכיטקטורת אבטחה בסיסית
1. כל קרצוף + קרצוף
לרסס תנועה גלובלית ולהניע דרך מרכזי קרצוף ספק (מנותק נפח/זיוף בקצה).
2. Multi-CDN/Multi-Edge
הפרדת דומיין (web, API, static), צבירה של הגנה ומטמון עבור עומס קריאה.
3. מסננים ברמה נמוכה בהיקפו
ACLs על נתבי גבול (RFC1918, בוגון, נמלים כוזבים ידועים).
eBPF/XDP לצניחה מוקדמת בחתימות והגבלת קצב עד קונטראק.
4. היקף L7 (NGINX/שליח/WAF)
דחיסת RPS באמצעות מפתחות, אתגר (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 שטרות: מסננים בסיסיים ורטלימיט על חבילות
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 רצוי על הנתב).
דליי חשיש pps per/32 ו-per/24; ”הסגר דינמי” של מקורות.
UDP-reflection: DNS response-like signatures (מסנן מחוץ להקשר).
5) UDP הגברה: מלאי ובלוקים
מחזירי אור/מגברים תכופים: DNS (open resolvers), NTP (monlist), CLDAP, SSDP, MDNS, Memcashed (UDP), Chargen.
מדידות:- סגור/להגביל שירותי UDP, למזער יציאות פתוחות.
- במתחם, הגבל pps/bitrate לנמלים ידועים.
- המלצת DNS: רקורסיבית רק עבור הרשתות שלה, RRL (Response Rate Limiting), מזערית את כל.
- NTP - רק ”אתחול” לסמוך עליו, ”שום דבר” לציבור.
6) תשישות מצב TCP
מבול SYN: 'tcp _ syncookies = 1', מוגדל 'tcp _ max _ syn _ backlog', 'synack _ retries = 3', טיפה אחר pps.
שיטפון ACK/RST: גבולות ברמה נמוכה, סינון רצפים לא לגיטימיים (nftables/ebpf).
אין לבזבז טבלאות מצב היכן שהמסנן אפשרי על ידי חתימה חסרת מעמד.
7) התקפות אל-7 HTTP/2/3 וחכמות
HTTP/2 Rapid Response: הגבלת התדירות של מסגרות RST ומספר הנחלים הפתוחים; סגור את הקשר למקרה של חריגות.
התעללות בזרם: נחלים מקבילים, גודל כותרת, גודל מסגרת מקסימלי.
QUIC/HTTP/3: הגבל pps ראשוני, אפשר Retry; זמן לחיצת יד קצר.
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-read/slow-POST: אפשר ”proxy _ request _ buffering on”, sell-timeout, מינימום מקובל ”read _ rate”.
סיום חיבורים במרווח ארוך בין מנות לכל בקשה.
על יישום - קריאה מוקדמת/השמטת גוף, מגבלות גודל/עומק JSON.
9) סינון L7: מי חשוב יותר - תן לו לעבור
סיווג תנועה: ידוע כטוב (mTLS/JWT partners), משתמשים רשומים, אנונימיים.
סדרי עדיפויות: ”נתיבי כתיבה” יקרים (פיקדונות/מסקנות) - להגן, אבל להחמיץ אושר; קריאת ספריות - מטמון + מצערת.
שכבת אתגר: Captcha/PoW/JS אתגרים לאזורים אפורים בשיא.
10) מטמון, פחם והשפלה
מטמון קצה לתגובות סטטיות/קוואזי-סטטיות, ”מעופש בזמן-חידוש”.
בקשה להתמזגות: התמוטטות בקשות מקבילות למפתח אחד - במיופה הכוח וביישום.
מצב משפיל: בטל מאפיינים משניים (התאמה אישית, דו "חות כבדים), הוצאת עמודים" קלים ".
11) יכולת תצפית וטלמטריה
Metrics (per POP/node/cluster):- L3/L4: 'pps _ in/out', 'bps _ in/out', 'drop _ ppps', 'syn _ revv', 'contrack _ used/limit', 'xdp _ drop _ pps'.
- L7: ”בקשות _ total _ road”, ”429 _ total”, ”total _ type”, ”h2 _ rst _ rate”, ”slow _ req _ total”.
- תלות: CPU IRQ רך/קשה, טיפות תור NIC, אורך תור ריצה.
יומנים: דגימה, צבירה של 24/24, ASN, נמלים וחתימות; בלי מח "ש.
איתור: אפשר על וויטליסטים, התרסקות מרחיבה את הדגימה לדיבוג.
12) תוכניות תגובה (ריצה)
1. גילוי: הפעלה של סף pps/bps/429/h2_rst_rate.
2. סיווג: רמה (L3/4/7), פרוטוקול (UDP/TCP/H2/H3), גיאו/ASN.
- אפשר קרצוף/פרופילי חור שחור על הספק
- לחזק את גבולות ntables/ebpf,
- להוריד את הגבולות L7 ולהגדיל אתגרים,
- אפשר ניסיון חוזר עבור QUIC (מבול ראשוני).
- 4. תקשורת: עמוד מצב, תבניות הודעת שותף.
- 5. לכידת PCAP ל 60-120 שניות, דגימת דברנים עליונים ASNs/ports.
- 6. רטרוספקטיבה: עדכון חתימות, סף, רשימות השתקפות.
13) בדיקות ותרגולים
מחזורי DDOS-מקדחה רבעוניים: התפרצויות UDP/HTTP סינתטיות, תנועה איטית, איפוס HTTP/2.
יום משחק: כל מתג/נדידה בין CDNs, הידרדרות ל ”מצב קל”.
אימות ספק: קרצוף SLA, סינון בזמן/חופש, מקסימום pps/bps.
14) תרופות אנטי ־ פטריות
להסתמך רק על L7-WAF להתקפת נפח.
אין uRPF/ACL על המדרכה וקונטראק-כבד סינון חזיתית.
כותרות בלתי מוגבלות/גופות ושמירה ארוכה על חיים בשיא.
אזור אחד/ROR ללא Anycast/multi-edge.
אין מלאי NIC/IRQ/CPU וניטור תורים.
אין מטמון/פחם - תוספת RPS עבור גיבוי.
15) פרטים של iGaming/Finance
פסגות זמניות (גפרורים/דרבי/לוטו): הרחבת קיבולת POP מראש, כולל מטמון אגרסיבי של מקדמים, הטלת אתגרים קנריים עבור אנשים אנונימיים.
נתיבי תשלום/פלט: בריכת קצה נפרדת עם mTLS, פסקי זמן קצרים, גבולות תחרותיים; בלי 0-RTT.
גיאו-פוליטיקאים: אורות אזוריים, סינון ASN של ”אירוח”, החלפת גיאו מהירה.
הצטלבות עם אנטי-פראוד: מגבלות מהירות ו-Risk API נכנסים לפרופיל ”קשה” בתקרית DDOS.
16) רשימת מוכנות תומכת
[ ] Anycast ad supermulti-edge/CDN; ערוצי קרצוף בדקו.
[ ] גבול-ACL/uRPF; פרופילי Nftables/ebpf/XDP, סינון חסר קונטראק.
[ ] כוונון Sysctl TCP/SYN, להגביל pps עבור נמלי המגבר UDP.
[ ] גבולות HTTP/2/3 (זרמים, מסגרות, כותרות), הגנה איטית, הגבלת גוף/כותרת.
[ ] L7 גבולות ואתגר; מטמון ומתכווצים על ההיקף.
[ ] לוחות מחוונים pps/bps/contrack/IRQ + L7 RED; התראות לסטיות h2_rst/429.
[ ] Runbook/playbooks, אנשי קשר ספקים,
[ תורתו ]: התפרצויות, איטיות, HTTP/2 להתאפס; דו "ח ושיפורים שיא.
[ ] בריכות מפוצלות לתשלום/מסלולים קריטיים, MTLS, ומגבלות מחמירות.
17) TL; DR
הגנה סטראטיפית: Anycast + קרצוף נפח דמפנס, eBPF/XDP + Nftables חותכים אשפה לערימה, L7 גבולות/אתגרים/מטמון שומרים על SLAs. Tune TCP (עוגיות SYN, backlog), להגביל מגברי UDP, לקבוע גבולות HTTP/2/3 והגנה איטית. יש לי ספר ריצות ולאמן אותו; עבור iGaming - להרחיב את הקצה מראש בשעות השיא ונתיבי תשלום נפרדים עם mTLS ומגבלות קשות.