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