Категория: Атаки и угрозыОбновлено 2026-10-27

Протокольная атака

Протокольная атака это тип DDoS атаки, эксплуатирующий недостатки самих сетевых протоколов и истощающий ресурсы сервера или сетевого оборудования, а не просто полосу пропускания.

Четыре шага протокольной атаки SYN-флуд: незавершённые рукопожатия, полуоткрытые соединения, полная очередь и SYN cookies
SYN-флуд не завершает handshake, поэтому ёмкость соединений заканчивается задолго до исчерпания полосы.

Чем это отличается от простого волюметрического потока

Протокольная атака не обязательно требует огромной пропускной способности. Она использует то, как конкретный протокол, например процесс установки соединения TCP, устроен по замыслу, истощая таблицы соединений или вычислительные ресурсы цели либо сетевого оборудования перед ней.

Классический пример

SYN flood отправляет большое количество запросов на инициацию соединения, никогда не завершая handshake, оставляя цель с множеством наполовину открытых соединений, пока не закончится ёмкость для приёма новых, легитимных.

Подходящие малому бизнесу меры защиты описаны здесь: руководство по защите от DDoS-атак для малого бизнеса.

Как распознать SYN-флуд на своём сервере

SYN-флуд заполняет очередь полуоткрытых соединений, как описано в RFC 4987, поэтому следы нужно искать в сетевом стеке, а не в журналах веб-сервера: рукопожатие не завершается, и nginx не видит ни одного запроса. Три места, куда стоит заглянуть:

ss -Htan state syn-recv | wc -l
journalctl -k | grep -i 'syn flooding'
nstat -az TcpExtTCPReqQFullDoCookies TcpExtTCPReqQFullDrop

Первая команда считает соединения в состоянии SYN-RECV. Несколько штук это норма, а постоянно растущее число нет, поэтому сравнивайте со своим обычным уровнем. Вторая ищет в журнале ядра предупреждение «Possible SYN flooding», которое Linux выводит при переполнении очереди SYN слушающего сокета. Третья выводит два счётчика: ответы с SYN-cookie и отброшенные SYN при выключенных cookie. Одно только предупреждение не доказывает атаку, потому что его может вызвать и честно загруженный сервис, поэтому перед действиями проверьте, похожи ли адреса источников на настоящие. Если вы не уверены, как читать состояние соединений, инструменты разобраны в руководстве по межсетевому экрану Linux.

Настройки ядра и их цена

Основная защита в Linux уже есть. Сначала посмотрите текущие значения:

sysctl net.ipv4.tcp_syncookies net.ipv4.tcp_synack_retries net.core.somaxconn

В документации ядра для tcp_syncookies указано значение по умолчанию 1: cookie отправляются при переполнении очереди SYN, а значение 2 включает их безусловно. Для tcp_synack_retries по умолчанию 5, это около 31 секунды до последней повторной отправки, а somaxconn по умолчанию 4096 (до Linux 5.4 было 128). В вашем дистрибутиве значения могут отличаться, поэтому ориентируйтесь на вывод команды, а не на таблицу.

Бесплатных вариантов здесь нет. RFC 4987 отмечает, что распространённые схемы cookie теряют часть опций TCP, например масштабирование окна, а потерянный последний ACK создаёт проблемы для протоколов, где первым говорит сервер, таких как SMTP. Сокращение таймера SYN-RECEIVED быстрее освобождает записи, но может оборвать и медленные честные рукопожатия. Помимо настройки, RFC описывает межсетевой экран или прокси, которые завершают рукопожатие вместо сервера, и именно это делает за вас CDN. Добавьте ограничение новых соединений на адрес через ограничение частоты запросов и сохраняйте многоуровневую схему из руководства по защите от DDoS.

Связанные термины: Волюметрическая атака, Атака на уровне приложения, Firewall, SYN flood (SYN-флуд), Ботнет (botnet).

Часто задаваемые вопросы

Сложнее ли обнаружить протокольную атаку, чем волюметрическую?

В некотором смысле да, так как объём трафика может выглядеть скромно, при этом истощая конкретный ресурс, например ёмкость таблицы соединений, а не заметно перегружая пропускную способность.

Может ли правильно настроенный firewall снизить риск протокольных атак?

Да, заметно. Ограничение частоты новых соединений и включение SYN cookies на уровне операционной системы: распространённые и эффективные меры именно для этой категории атак.

Атакует этот тип приложение или инфраструктуру?

Преимущественно инфраструктуру, то есть сетевой стек и оборудование, обрабатывающее соединения, а не логику приложения, работающего сверху.

Включены ли SYN-cookie в Linux по умолчанию?

В документации ядра для net.ipv4.tcp_syncookies указано значение по умолчанию 1: cookie отправляются при переполнении очереди SYN. Дистрибутивы могут менять значения, поэтому проверьте актуальное командой sysctl net.ipv4.tcp_syncookies.

Будет ли SYN-флуд виден в журнале доступа nginx?

Нет. Атакующий не завершает рукопожатие, поэтому до nginx не доходит ни одного запроса, который можно записать. Смотрите журнал ядра, число соединений в состоянии SYN-RECV через ss и счётчики nstat.

Хотите увидеть, в каком состоянии ваш сервер?

Запустите бесплатную read-only проверку сервера или откройте Security Lab и посмотрите цикл обнаружение, сдерживание, восстановление, проверка в действии.

Получить бесплатную проверку сервераОткрыть Security Lab