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 POP/узел/кластер):
  • 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 в пике.
Единый регион/POP без 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).

Нажимая кнопку, вы соглашаетесь на обработку данных.