Pterohost docs

Защита от 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 Java25565TCP
Minecraft Bedrock19132UDP
Source Engine (CS, GMod)27015UDP + TCP
Steam Query27015 + дельтаUDP
Rust28015UDP
ARK Survival7777, 27015UDP
Teamspeak 39987UDP

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 Тбит/с”. Расшифровка:

  1. Это ёмкость scrubbing-сети провайдера, а не персональная защита клиента. На клиента приходит часть.
  2. Реальная атака редко достигает таких объёмов - 99% боевых DDoS укладываются в 100-300 Гбит/с.
  3. Важнее не пик, а время реакции (mitigation time) и точность фильтра (false positive rate).
  4. Для игровых проектов критична поддержка UDP-протоколов - не все антифлуды одинаково хороши.

Цифра “1 Tbps” сама по себе ничего не гарантирует. Спросите у провайдера: какой mitigation time, какие протоколы поддерживаются, есть ли DPI для вашей игры, как клиент уведомляется об атаке.

Pterohost - хостинг с многоуровневой DDoS-защитой L4 на уровне дата-центра, NVMe SSD и поддержкой 24/7. Промокод 4START даёт -20% на первый заказ. Заказать защищённый сервер

Чек-лист L4-защиты для VPS/dedicated

  1. Включить tcp_syncookies и поднять tcp_max_syn_backlog.
  2. Увеличить nf_conntrack_max до 1М+ записей при наличии RAM.
  3. Закрыть все ненужные порты файрволом (iptables/nftables).
  4. Настроить hashlimit на SYN и новые соединения.
  5. Дропать невалидные TCP-флаги и conntrack INVALID.
  6. Ограничить ICMP rate.
  7. Скрыть origin IP за защитным прокси (для веба).
  8. Поставить мониторинг PPS/Mbps с алертами (Netdata, Zabbix, Prometheus + node_exporter).
  9. Знать процедуру включения BGP blackhole у провайдера на случай атаки выше ёмкости защиты.
  10. Для игр - выбирать хостинг с 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 для пика.