Открыть сервис

SYN-flood

SYN-flood — это разновидность сетевой атаки типа «отказ в обслуживании» (DoS-атака), направленная на исчерпание ресурсов целевой системы путём отправки большого количества TCP-запросов на установление соединения (SYN-пакетов) с несуществующими или неактивными адресами отправителя. Целью атаки является переполнение очереди полуоткрытых соединений (backlog) на сервере, что приводит к невозможности обработки легитимных запросов и, как следствие, к отказу в обслуживании законных пользователей.

Принцип работы

Атака SYN-flood эксплуатирует уязвимость в протоколе управления передачей (TCP), а именно в процедуре трёхэтапного рукопожатия (three-way handshake), используемого для установления соединения между клиентом и сервером.

Нормальное установление TCP-соединения

В обычном сценарии клиент отправляет серверу пакет с флагом SYN (Synchronize), инициируя соединение. Сервер, получив SYN, выделяет ресурсы для нового соединения, помещает его в очередь полуоткрытых соединений и отправляет клиенту пакет с флагами SYN и ACK (Acknowledgment). Клиент, получив SYN-ACK, завершает рукопожатие, отправляя серверу пакет с флагом ACK. После этого соединение считается установленным, и сервер перемещает его из очереди полуоткрытых соединений в основную очередь установленных соединений.

Механизм атаки

При SYN-flood атаке злоумышленник отправляет на целевой сервер большое количество SYN-пакетов, но с поддельными (спуфированными) IP-адресами отправителя. Сервер, получив каждый такой пакет, действует по стандартному протоколу: выделяет ресурсы, помещает запись в очередь полуоткрытых соединений и отправляет SYN-ACK на поддельный адрес. Поскольку адрес отправителя не существует или неактивен, сервер никогда не получает завершающий ACK-пакет. В результате запись о соединении остаётся в очереди полуоткрытых соединений до истечения тайм-аута (обычно от 30 до 120 секунд). Если интенсивность атаки превышает скорость освобождения очереди, она переполняется. Когда очередь заполнена, сервер перестаёт принимать новые SYN-пакеты, в том числе от легитимных пользователей, что приводит к отказу в обслуживании.

История

Впервые атака типа SYN-flood была описана в 1996 году исследователями из компании Bell Labs (подразделение Lucent Technologies) в статье «SYN Flooding and IP Spoofing Attacks». Авторы, Уильям Чесвик (William R. Cheswick) и Стивен Белловин (Steven M. Bellovin), подробно описали механизм уязвимости и предложили первые методы защиты. В середине 1990-х годов эта атака стала одной из самых распространённых DoS-атак в интернете, поскольку требовала минимальных вычислительных ресурсов со стороны атакующего и была эффективна против большинства серверов того времени.

Классификация и разновидности

Хотя базовая техника SYN-flood остаётся неизменной, существуют различные её модификации, различающиеся по способу подделки адреса и цели атаки.

По типу подделки адреса

  • Атака с использованием случайных IP-адресов (Random IP Spoofing): злоумышленник генерирует SYN-пакеты с произвольными, несуществующими IP-адресами отправителя. Это наиболее распространённая форма, так как она не требует предварительного сбора информации о сети.
  • Атака с использованием IP-адресов реальных хостов (Valid IP Spoofing): используются IP-адреса реально существующих, но неактивных или не отвечающих на SYN-ACK хостов. Это может быть сделано для усложнения обнаружения атаки, так как ответы на SYN-ACK могут быть перехвачены или проигнорированы.
  • Атака с использованием адресов жертвы (Self-IP Spoofing): злоумышленник использует IP-адрес самой цели атаки. В этом случае сервер отправляет SYN-ACK сам себе, что может привести к дополнительной нагрузке на сетевой стек.

По типу цели

  • Атака на один порт: злоумышленник направляет SYN-пакеты на конкретный порт сервера (например, 80 для HTTP или 443 для HTTPS). Это наиболее распространённый вариант, так как он нацелен на конкретный сервис.
  • Атака на все порты: SYN-пакеты отправляются на все открытые порты целевого хоста. Это может привести к исчерпанию ресурсов всей системы, а не только конкретного приложения.

Методы защиты

Защита от SYN-flood атак является важной задачей для администраторов сетей и систем. Существует несколько основных подходов, которые могут применяться как по отдельности, так и в комбинации.

На уровне операционной системы

  • Увеличение размера очереди полуоткрытых соединений (TCP backlog): позволяет серверу обрабатывать большее количество одновременных SYN-запросов до того, как очередь заполнится. Однако это не решает проблему, а лишь откладывает момент отказа.
  • Уменьшение тайм-аута ожидания завершающего ACK (SYN-ACK timeout): сокращает время, в течение которого запись о полуоткрытом соединении остаётся в очереди. Это ускоряет освобождение ресурсов, но может привести к преждевременному разрыву легитимных соединений при задержках в сети.
  • SYN cookies: метод, при котором сервер не выделяет ресурсы для соединения до получения завершающего ACK. Вместо этого в SYN-ACK пакет встраивается криптографическая подпись (cookie), содержащая информацию о соединении. При получении ACK сервер восстанавливает состояние соединения из cookie. Этот метод эффективен против SYN-flood, но может снижать производительность и не поддерживается всеми приложениями.

На уровне сетевого оборудования

  • Фильтрация поддельных IP-адресов (Ingress/Egress filtering): на маршрутизаторах и межсетевых экранах настраиваются правила, блокирующие пакеты с IP-адресами, которые не соответствуют топологии сети. Это затрудняет атаки с использованием спуфинга.
  • Ограничение скорости (Rate limiting): настройка ограничения на количество SYN-пакетов, принимаемых от одного источника или на один порт в единицу времени. Это позволяет снизить интенсивность атаки, но не защищает от распределённых атак (DDoS).
  • Специализированные аппаратные или программные средства защиты от DDoS-атак: такие решения, как Anti-DDoS-шлюзы, способны анализировать трафик в реальном времени, выявлять аномалии и блокировать SYN-flood пакеты до того, как они достигнут целевого сервера.

На уровне приложений

  • Использование прокси-серверов и балансировщиков нагрузки: они могут принимать SYN-пакеты, проверять их валидность (например, с помощью SYN cookies) и только после этого перенаправлять легитимные запросы на сервер.
  • Настройка параметров TCP/IP стека: в операционных системах существуют параметры, позволяющие более агрессивно обрабатывать SYN-пакеты, например, уменьшение количества повторных попыток отправки SYN-ACK.

Примеры атак

  • Атака на серверы компании «Яндекс» (2018 год): в ходе одной из крупнейших DDoS-атак в истории рунета, мощность которой достигала 1,35 Тбит/с, использовались различные методы, включая SYN-flood. Атака была направлена на инфраструктуру «Яндекса» и была успешно отражена с помощью собственных средств защиты компании.
  • Атака на GitHub (2018 год): хотя основным вектором атаки была мемкэшированная амплификация, в ходе неё также применялись SYN-flood пакеты для дополнительной нагрузки на сетевые устройства. Атака достигла мощности 1,35 Тбит/с и была отражена с помощью сервиса Akamai Prolexic.
  • Атака на серверы российских государственных учреждений (2022 год): в ходе кибератак на российские госсайты, в том числе на портал «Госуслуги», активно использовались DDoS-атаки, включающие SYN-flood. Для защиты применялись как стандартные средства, так и специализированные решения, предоставляемые Национальным координационным центром по компьютерным инцидентам (НКЦКИ).

Правовые аспекты в Российской Федерации

В Российской Федерации проведение DoS-атак, включая SYN-flood, является уголовно наказуемым деянием. Ответственность за неправомерный доступ к компьютерной информации, создание, использование и распространение вредоносных программ, а также за нарушение правил эксплуатации средств хранения, обработки или передачи компьютерной информации и информационно-телекоммуникационных сетей предусмотрена статьями 272, 273 и 274 Уголовного кодекса РФ. Максимальное наказание по данным статьям может достигать до 7 лет лишения свободы.

Источники

  1. Cheswick, W. R., & Bellovin, S. M. (1996). SYN Flooding and IP Spoofing Attacks. Bell Labs.
  2. Eddy, W. (2007). TCP SYN Flooding Attacks and Common Mitigations. RFC 4987 (Informational).
  3. Уголовный кодекс Российской Федерации. Статьи 272, 273, 274.
  4. Материалы Национального координационного центра по компьютерным инцидентам (НКЦКИ) за 2022-2023 годы.
  5. Техническая документация по защите от DDoS-атак компании «Яндекс» (2018-2023).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →