Защита от DDoS L4 (Transport Layer): SYN flood, UDP flood и фильтрация
Защита от L4-атак: SYN flood, UDP amplification, DNS/NTP reflection. BGP blackhole, scrubbing, SYN cookies, iptables hashlimit, sysctl. Игровые порты.
DDoS-атаки на четвёртый уровень модели OSI (Transport Layer) - это объёмные атаки на сетевую инфраструктуру. Они не пытаются обмануть приложение: задача - забить канал паразитным трафиком, исчерпать ресурсы conntrack или повесить сетевой стек ядра. В 2026 году типичный SYN flood с приличного ботнета составляет 50-500 Гбит/с и десятки миллионов пакетов в секунду. Без сетевой защиты на уровне дата-центра одиночный сервер не выдержит такую атаку независимо от мощности железа.
В статье разберём типы L4-атак, принципы фильтрации, конфиги iptables/nftables, sysctl-параметры ядра и особенности защиты игровых UDP-портов.
Что такое DDoS L4
Четвёртый уровень OSI - транспортный: TCP, UDP, SCTP. На этом уровне работают порты приложений, но без понимания HTTP/SMTP/DNS-семантики. L4-атака паразитирует на механизмах протокола - например, на трёхэтапном рукопожатии TCP или на отсутствии рукопожатия в UDP.
Ключевые свойства L4-атак:
| Параметр | Характеристика |
|---|---|
| Объём | От 10 Гбит/с до нескольких Тбит/с |
| Метрика | PPS (packets per second), Mbps, Gbps |
| Цель | Канал, сетевой стек ядра, conntrack-таблица |
| Видимость | Аномальный трафик заметен на графиках NetFlow |
| Где фильтровать | На uplink провайдера, BGP/Anycast scrubbing |
Типы L4-атак
SYN flood
Бот шлёт TCP SYN-пакеты с поддельным source IP. Сервер отвечает SYN+ACK и держит соединение в состоянии SYN_RECV до таймаута. При миллионах SYN в секунду таблица соединений ядра переполняется, легитимные пользователи не могут подключиться.
ACK flood
Поток TCP-пакетов с флагом ACK без установленного соединения. Conntrack просматривает каждую запись, ищет соответствие, тратит CPU. Современный вариант - ACK flood с правильными sequence-номерами, имитирующий уже установленные сессии.
RST flood
Пакеты с флагом RST в адрес активных соединений. Если ботнет угадает порты и sequence numbers (атака на TCP RST injection), легитимные соединения рвутся.
UDP flood
Просто поток UDP-пакетов на случайные порты. Сервер на каждый пакет проверяет, слушает ли кто-то порт; если нет - отвечает ICMP Port Unreachable. ICMP-ответы добавляют исходящего трафика и нагружают ядро.
UDP amplification (DNS/NTP/Memcached/CLDAP reflection)
Атакующий отправляет небольшой UDP-запрос на публичный сервис с подменой source IP на адрес жертвы. Сервис отвечает в десятки раз большим пакетом - жертве. Коэффициенты усиления:
- DNS (ANY-запрос на TXT-записи): 50-70x
- NTP (monlist): 200-550x
- Memcached: до 50 000x (рекорд 1.7 Тбит/с на GitHub в 2018)
- CLDAP (Active Directory): 50-70x
- chargen: до 350x
Фрагментация (Teardrop, IP fragmentation)
Пакеты с пересекающимися фрагментами или огромным количеством мелких фрагментов перегружают сборку в ядре. Современные ядра в основном устойчивы, но старые embedded-устройства и сетевое оборудование падают.
Connection exhaustion
Бот открывает много легитимных TCP-соединений, не закрывая их. Conntrack-таблица заполняется записями, новые соединения отбрасываются с ошибкой nf_conntrack: table full, dropping packet.
Принципы защиты L4
BGP blackhole
Самый грубый метод. Провайдер анонсирует атакуемый IP в null-route - весь трафик на этот адрес отбрасывается на границе сети. Атака гасится, но и легитимный трафик к серверу пропадает. Используется как аварийная мера для защиты остальной инфраструктуры.
Scrubbing-центры (Anti-DDoS proxy)
Трафик проходит через выделенные узлы фильтрации с высокопроизводительным железом (FPGA, NPU). Они анализируют пакеты, отсеивают мусор и пропускают чистый трафик к серверу. Так работают Cloudflare Magic Transit, OVH VAC, DDoS-Guard, Stormwall, Voxility.
Маршрутизация может быть постоянной (always-on) или включаться по триггеру (on-demand через BGP-анонсы).
SYN cookies
Защита от SYN flood на уровне ядра Linux. Вместо хранения SYN_RECV-записи сервер кодирует state в номер последовательности SYN+ACK. Когда приходит финальный ACK, ядро проверяет криптографическую сумму. Включается через sysctl:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_abort_on_overflow = 1
Тюнинг conntrack
# /etc/sysctl.d/99-ddos-l4.conf
net.netfilter.nf_conntrack_max = 1048576
net.netfilter.nf_conntrack_tcp_timeout_syn_recv = 10
net.netfilter.nf_conntrack_tcp_timeout_syn_sent = 10
net.netfilter.nf_conntrack_tcp_timeout_established = 600
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 30
net.netfilter.nf_conntrack_udp_timeout = 15
net.netfilter.nf_conntrack_udp_timeout_stream = 60
Применить:
sysctl -p /etc/sysctl.d/99-ddos-l4.conf
Rate limiting на уровне ядра
iptables с модулем hashlimit ограничивает PPS по source IP:
# Ограничить SYN до 30 пакетов в секунду с одного IP
iptables -A INPUT -p tcp --syn -m hashlimit \
--hashlimit-name syn_limit \
--hashlimit-above 30/sec \
--hashlimit-burst 50 \
--hashlimit-mode srcip \
--hashlimit-srcmask 32 \
-j DROP
# Ограничить новые соединения - не более 20 в минуту с IP
iptables -A INPUT -p tcp --syn -m conntrack --ctstate NEW \
-m hashlimit \
--hashlimit-name new_conn \
--hashlimit-above 20/min \
--hashlimit-mode srcip \
-j DROP
# Дропнуть невалидные пакеты
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
# Дропнуть пакеты без флагов или с битой комбинацией
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
# Ограничить ICMP
iptables -A INPUT -p icmp -m limit --limit 5/sec --limit-burst 10 -j ACCEPT
iptables -A INPUT -p icmp -j DROP
В nftables эквивалент компактнее:
table inet filter {
set blacklist {
type ipv4_addr
flags timeout
}
chain input {
type filter hook input priority 0; policy drop;
ct state established,related accept
ct state invalid drop
tcp flags syn limit rate over 30/second per host counter \
add @blacklist { ip saddr timeout 1h } drop
ip saddr @blacklist drop
tcp dport { 22, 80, 443 } accept
udp dport 25565 accept
}
}
Защита игровых портов
Игровые серверы используют разнообразные транспортные протоколы:
| Игра / движок | Порт | Протокол |
|---|---|---|
| Minecraft Java | 25565 | TCP |
| Minecraft Bedrock | 19132 | UDP |
| Source Engine (CS, GMod) | 27015 | UDP + TCP |
| Steam Query | 27015 + дельта | UDP |
| Rust | 28015 | UDP |
| ARK Survival | 7777, 27015 | UDP |
| Teamspeak 3 | 9987 | UDP |
UDP-протоколы игр не имеют рукопожатия, поэтому отличить легитимного игрока от спуфера на уровне пакета сложно. Защита строится через:
- Deep Packet Inspection (DPI) - распознавание сигнатур игрового протокола. Например, Source Query начинается с
0xFFFFFFFF 0x54 'Source Engine Query\0'. Пакеты без сигнатуры отбрасываются. - Сессионный rate limit - новый source IP получает квоту в N пакетов; если игрок начинает шлёт мусор, IP уходит в карантин.
- Connection challenge - сервер требует, чтобы клиент ответил на специальный пакет (как делает Minecraft при handshake).
- Whitelisting известных портов - закрыть всё, кроме нужного UDP-диапазона.
Для Minecraft с прокси BungeeCord часто настраивают бан по портам через BungeeCord - закрывают прямой доступ к backend-серверам, оставляя открытым только прокси.
Профильные провайдеры с game-protection:
- DDoS-Guard Game Protection - DPI для популярных движков.
- Stormwall - анти-DDoS с поддержкой UDP-игр.
- OVH Game DDoS Protection - один из старейших профильных продуктов, защищает Source/Minecraft/Rust.
- Path.net - low-latency защита для соревновательных шутеров.
Что значит “защита 1 Tbps”
В маркетинге часто пишут “защита от DDoS до 1 Тбит/с” или “до 4 Тбит/с”. Расшифровка:
- Это ёмкость scrubbing-сети провайдера, а не персональная защита клиента. На клиента приходит часть.
- Реальная атака редко достигает таких объёмов - 99% боевых DDoS укладываются в 100-300 Гбит/с.
- Важнее не пик, а время реакции (mitigation time) и точность фильтра (false positive rate).
- Для игровых проектов критична поддержка UDP-протоколов - не все антифлуды одинаково хороши.
Цифра “1 Tbps” сама по себе ничего не гарантирует. Спросите у провайдера: какой mitigation time, какие протоколы поддерживаются, есть ли DPI для вашей игры, как клиент уведомляется об атаке.
Pterohost - хостинг с многоуровневой DDoS-защитой L4 на уровне дата-центра, NVMe SSD и поддержкой 24/7. Промокод 4START даёт -20% на первый заказ. Заказать защищённый сервер
Чек-лист L4-защиты для VPS/dedicated
- Включить
tcp_syncookiesи поднятьtcp_max_syn_backlog. - Увеличить
nf_conntrack_maxдо 1М+ записей при наличии RAM. - Закрыть все ненужные порты файрволом (iptables/nftables).
- Настроить hashlimit на SYN и новые соединения.
- Дропать невалидные TCP-флаги и conntrack INVALID.
- Ограничить ICMP rate.
- Скрыть origin IP за защитным прокси (для веба).
- Поставить мониторинг PPS/Mbps с алертами (Netdata, Zabbix, Prometheus + node_exporter).
- Знать процедуру включения BGP blackhole у провайдера на случай атаки выше ёмкости защиты.
- Для игр - выбирать хостинг с DPI-защитой профильного движка.
Для общего понимания инфраструктурной защиты смотрите обзор DDoS-защиты, для прикладного уровня - защиту L7.
Pterohost защищает игровые и веб-проекты от объёмных атак L4 и сложных L7. Промокод 4START - скидка 20% на первый месяц. Подобрать защищённый тариф
Частые вопросы
Что означает “защита 1 Tbps” в маркетинге хостингов?
Это суммарная ёмкость сети scrubbing-центров провайдера - максимальный объём паразитного трафика, который инфраструктура может проглотить и отфильтровать. Реальный показатель защиты конкретного клиента почти всегда ниже: важнее не пиковая ёмкость, а время реакции, точность фильтра и наличие защиты для UDP-протоколов игр.
Достаточно ли SYN cookies против SYN flood?
Для бытовых атак до сотен тысяч пакетов в секунду - да, ядро Linux с tcp_syncookies справляется. Для серьёзных ботнетов на миллионы PPS SYN cookies не помогут: сервер всё равно будет тратить CPU на криптографические вычисления. Нужна фильтрация на уровне провайдера через BGP-анонсы в scrubbing.
Почему игровые UDP-порты сложнее защищать, чем TCP?
UDP не имеет рукопожатия: нельзя отличить легитимный пакет от поддельного по заголовкам. Защита строится на поведенческом анализе, deep packet inspection с пониманием протокола игры (Source Engine Query, Minecraft Bedrock UDP, Steam) и rate limiting по source IP с короткими таймаутами.
Что такое DNS/NTP/Memcached amplification?
Атакующий отправляет небольшой UDP-запрос с подменённым source IP (адресом жертвы) на открытый DNS/NTP/Memcached-сервер. Тот отвечает в десятки и сотни раз большим пакетом - жертве. Коэффициент усиления у Memcached достигал 50 000x, у DNS - 50-70x. Защита: rate limit по source IP на уровне провайдера, BGP blackhole для пика.