GH GambleHub

DDoS захист і фільтрація пакетів

1) Навіщо це потрібно

DDoS - це «масова деградація» ресурсів: смуга/pps, таблиці станів, CPU ядра/IRQ, пули з'єднань, ліміти додатків. Мета - розшарування захисту: погасити об'єм на периметрі мережі, нейтралізувати протокольні аномалії до стека TCP/IP, а на L7 відсікти небажані запити, зберігши SLO для легітимних користувачів.

2) Класи атак

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 особливості: помилкові Initial/Retry шторми, spoofed source.

2. 2 L7 (application)

HTTP/1. 1: запити за дорогими маршрутами, header oversize/field smuggling.
HTTP/2: Rapid Reset, stream-flood, HEADERS flood, PRIORITY abuse.
HTTP/3 (QUIC): підключення/потоки без завершення, Initial flood.
Slow-атаки: slowloris/slow-read/slow-POST.
gRPC/WebSocket: нескінченні стріми, message-flood, великі фрейми.

3) Базова архітектура захисту

1. Anycast + Scrubbing

Розпорошити трафік глобально і проганяти через провайдерські scrubbing-центри (відсікання volumetric/спуфінгу на краю).

2. Multi-CDN / Multi-Edge

Рознос доменів (веб, API, статика), агрегація захисту і кешу для read-навантаження.

3. Низькорівневі фільтри на своєму периметрі

ACL на бордер-маршрутизаторах (RFC1918, bogon, свідомо помилкові порти).
eBPF/XDP для early-drop по сигнатурах і rate-лімітах до conntrack.

4. L7-периметр (NGINX/Envoy/WAF)

Стиснення RPS за ключами, challenge (captcha/PoW), кеш, пріоритезація «дорогих» шляхів.

5. Внутрішня стійкість

Пули з'єднань, черги, circuit/timeout, ізоляція сервісів (bulkhead) і autoscaling з «затичками» (shedder).

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: базові фільтри та ratelimit на пакетах

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 (ідея)

Early-drop пакетів з spoofed джерелом (uRPF на маршрутизаторі вітається).
хеш-бакети pps per/32 і per/24; динамічний «карантин» джерел.
Підписи UDP-reflection: DNS response-like на вхід (фільтрувати поза контекстом).

5) UDP amplification: інвентар і блоки

Часті відбивачі/підсилювачі: DNS (open resolvers), NTP (monlist), CLDAP, SSDP, mDNS, Memcached (UDP), Chargen.

Заходи:
  • Закрити/обмежити UDP-служби, мінімізувати відкриті порти.
  • На периметрі обмежити pps/бітрейт для відомих портів.
  • DNS-рекомендація: рекурсив тільки для своїх мереж, RRL (Response Rate Limiting), мінімізація ANY.
  • NTP - тільки «бутстрап» до довірених,'noquery'для публічних.

6) TCP state exhaustion

SYN flood: 'tcp _ syncookies = 1', підвищений'tcp _ max _ syn _ backlog','synack _ retries = 3', drop по pps.
ACK/RST flood: низькорівневі ліміти, відсів нелегітимних послідовностей (nftables/ebpf).
Conntrack-less на бордері: не витрачати таблиці станів там, де фільтр можливий по stateless-сигнатурі.

7) HTTP/2/3 і «розумні» L7 атаки

HTTP/2 Rapid Reset: ліміт частоти RST-фреймів і кількості відкритих потоків; закривати з'єднання при аномаліях.
Stream abuse: лимит concurrent streams, headers size, max frame size.
QUIC/HTTP/3: обмежувати Initial pps, включити Retry; короткі таймаути handshake.

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;

Envoy (анти-reset і ліміти)

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) Slow-атаки і ресурсний захист

Slowloris/slow-read/slow-POST: включити'proxy _ request _ buffering on', низькі idle-timeout, мінімальний прийнятний'read _ rate'.
Припиняти з'єднання при тривалому міжпакетному інтервалі на запит.
На додатку - раннє читання/відкидання тіла, ліміти розміру/глибини JSON.

9) L7 фільтрація: хто важливіший - нехай проходить

Класифікація трафіку: known good (партнери mTLS/JWT), зареєстровані користувачі, аноніми.
Пріоритети: «дорогі» write-маршрути (депозити/висновки) - захищати, але пропускати підтверджених; read-каталоги - кеш + throttle.
Challenge-шар: captcha/PoW/JS-челенджі для сірих зон при піку.

10) Кеш, coalescing і деградація

Edge-кеш для статичних/квазістатичних відповідей,'stale-while-revalidate'.
Request coalescing: схлопувати паралельні запити до одного ключа - в проксі і в додатку.
Degrade-режим: відключати другорядні фічі (персоналізація, важкі звіти), видавати «легкі» сторінки.

11) Спостережуваність і телеметрія

Метрики (per РОР/вузол/кластер):
  • 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`.
  • Залежності: CPU IRQ soft/hard, NIC queue drops, run-queue length.

Логи: семпльовані, агреговані по/24, ASN, портам і сигнатурам; без PII.
Трейсинг: включати на білих списках, аварійно розширювати семплінг для налагодження.

12) Плани реагування (runbook)

1. Детект: спрацьовування порогів pps/bps/429/h2_rst_rate.
2. Класифікація: рівень (L3/4/7), протокол (UDP/TCP/h2/h3), гео/ASN.

3. Клапани:
  • включити профілі scrubbing/blackhole на провайдері,
  • посилити nftables/ebpf ліміти,
  • знизити L7-ліміти і підвищити челенджі,
  • увімкнути Retry для QUIC (Initial flood).
  • 4. Комунікації: статус-сторінка, шаблони повідомлень партнерам.
  • 5. Форензика: захоплення PCAP на 60-120 сек, вибірка top talkers ASNs/ports.
  • 6. Ретроспектива: оновити сигнатури, пороги, списки відбивачів.

13) Тестування та навчання

Плейбуки DDoS-drill щокварталу: синтетичні UDP/HTTP бурсти, slow-трафік, HTTP/2 reset.
Game day: перемикання Anycast/міграція між CDN, деградація до «легкого режиму».
Верифікація провайдера: SLA scrubbing, час включення/вимикання фільтрів, max pps/bps.

14) Антипатерни

Покладатися тільки на L7-WAF при volumetric-атаці.
Відсутність uRPF/ACL на бордері і conntrack-heavy фільтрація «в лоб».
Безлімітні заголовки/тіла і довгі keep-alive в піку.
Єдиний регіон/РОР без Anycast/мульти-edge.
Відсутність запасів по NIC/IRQ/CPU і моніторингу черг.
Ніякого кешу/коалесинга - зайві RPS на бекенд.

15) Специфіка iGaming/фінансів

Тимчасові піки (матчі/дербі/лото-розіграші): заздалегідь розширити ємність POP, включити агресивний кеш коефіцієнтів, прокласти canary-челенджі для анонімів.
Платіжні/вивідні маршрути: окремий edge-пул з mTLS, короткі таймаути, ліміти конкурентності; ніякого 0-RTT.
Гео-політики: регіональні allow-лайсти, ASN-фільтрація «хостингів», швидке geo-перемикання.
Перетин з антифродом: velocity-ліміти і Risk API переходять в «жорсткий» профіль при DDoS-інциденті.

16) Чек-лист prod-готовності

  • Anycast или multi-edge/CDN; перевірені канали scrubbing.
  • Бордер-ACL/uRPF; nftables/ebpf/XDP профілі, conntrack-less фільтрація.
  • Sysctl-тюнінг TCP/SYN, limity pps для UDP-портів-підсилювачів.
  • HTTP/2/3 ліміти (streams, frames, headers), slow-захист, body/header-limits.
  • L7-ліміти і challenge; кеш і coalescing на периметрі.
  • Дашборди pps/bps/conntrack/IRQ + L7 RED; алерти на аномалії h2_rst/429.
  • Runbook/плейбуки, контакти провайдера, one-click включення профілів.
  • Навчання: бурсти, slow, HTTP/2 reset; звіт і фіксація поліпшень.
  • Розділені пули для платіжних/критичних маршрутів, mTLS і суворі ліміти.

17) TL; DR

Розшаровуйте захист: Anycast + scrubbing гасить об'єм, eBPF/XDP + nftables ріжуть сміття до стека, L7-ліміти/челенджі/кеш зберігають SLA. Тюньте TCP (SYN cookies, backlog), обмежте UDP-підсилювачі, поставте ліміти HTTP/2/3 і slow-захист. Майте runbook і тренуйте його; для iGaming - заздалегідь розширюйте edge в години піків і відокремлюйте платіжні шляхи з mTLS і жорсткими лімітами.

Contact

Зв’яжіться з нами

Звертайтеся з будь-яких питань або за підтримкою.Ми завжди готові допомогти!

Telegram
@Gamble_GC
Розпочати інтеграцію

Email — обов’язковий. Telegram або WhatsApp — за бажанням.

Ваше ім’я необов’язково
Email необов’язково
Тема необов’язково
Повідомлення необов’язково
Telegram необов’язково
@
Якщо ви вкажете Telegram — ми відповімо й там, додатково до Email.
WhatsApp необов’язково
Формат: +код країни та номер (наприклад, +380XXXXXXXXX).

Натискаючи кнопку, ви погоджуєтесь на обробку даних.