Атака SYN flood: варианты и контрмеры

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

Что такое SYN flood?

SYN flood — это DoS-атака. Атакующий посылает поток вредоносных пакетов данных на целевую систему. Цель состоит в том, чтобы перегрузить систему и остановить ее работу.

Как и «пинг смерти», SYN flood является протокольной атакой. Цель таких атак — использовать уязвимость в сетевом взаимодействии, чтобы поставить целевую систему на колени. SYN flood работает иначе, чем объемные атаки, такие как ping flood, UDP flood и HTTP flood. В этих атаках атакующий концентрируется на том, чтобы вытеснить цель из сети с максимально возможной пропускной способностью.

Как работает атака SYN flood

Также известная как «полуоткрытая атака», SYN flood — это кибератака, направленная на сетевое соединение. Злоумышленник злоупотребляет трехсторонним рукопожатием протокола управления передачей (TCP). Вместо того чтобы согласовать соединение между клиентом и сервером, как и предполагалось, на сервере создается множество полуоткрытых соединений. Это задействует ресурсы сервера, которые впоследствии становятся недоступными для реального использования.

Давайте рассмотрим, как работает обычное установление TCP-соединения и как этот принцип нарушается во время атаки SYN flood.

Нормальное установление TCP-соединения с помощью трехстороннего рукопожатия

Протокол управления передачей (TCP), наряду с Интернет-протоколом (IP), является одним из краеугольных камней Интернета. Поскольку TCP является протоколом, ориентированным на соединение, клиент и сервер должны сначала договориться о соединении, прежде чем они смогут обмениваться данными друг с другом. Для этого используется трехстороннее рукопожатие:

  1. Клиент посылает серверу пакет SYN («синхронизация»). — «Здравствуйте, я хотел бы установить с вами соединение».
  2. Сервер отвечает пакетом SYN/ACK (ACK = «подтвердить») и создает структуру данных, известную как «блок управления передачей» (TCB), для соединения в SYN backlog. — «Хорошо, тогда, пожалуйста, используйте следующие параметры соединения».
  3. Клиент отвечает на пакет SYN/ACK пакетом ACK и завершает рукопожатие. Соединение готово, и данные могут передаваться в обоих направлениях. На стороне сервера блок управления передачей удаляется из резервной копии SYN. — «Отлично, спасибо. Давайте начнем!»

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

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

Во время атаки SYN flood происходит массовое нарушение процесса установления TCP-соединения:

  1. Атакующий отправляет SYN-пакет на сервер и подменяет свой IP-адрес.
  2. Сервер создает структуру данных Transmission Control Block для полуоткрытого соединения в SYN backlog. TCB использует память на сервере. Размер SYN backlog также ограничен.
  3. Сервер отправляет пакет SYN/ACK на поддельный IP-адрес злоумышленника.
  4. Поскольку злоумышленник не получает ACK-пакет для подтверждения соединения, сервер посылает дальнейшие пакеты SYN/ACK предполагаемому клиенту и поддерживает соединение в полуоткрытом состоянии.
  5. Пока сервер ожидает ответа, от злоумышленника поступают новые SYN-пакеты, которые должны быть внесены в SYN backlog.
  6. В определенный момент в SYN backlog больше нет места для дальнейших полуоткрытых соединений. Тогда сервер отклоняет входящие SYN-пакеты и становится недоступным извне.

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

hping --syn --flood --rand-source -p <Port> <IP address>

Интерес представляют опции команды:

  • Опция ‘—syn’ указывает инструменту использовать TCP в качестве протокола и посылать SYN-пакеты.
  • Опция ‘—flood’ очень важна. Согласно документации команды hping, это означает, что пакеты отправляются как можно быстрее.
  • С помощью опции ‘—rand-source’ атакующий подделывает свой IP-адрес. Вместо фактического адреса отправителя вводится случайный IP-адрес.

Разновидности атаки SYN flood

Существует несколько способов проведения атаки SYN flood. Общим знаменателем между ними является то, что атакующий стремится заставить сервер работать как можно дольше. Для этого атакующий должен сделать так, чтобы на пакеты SYN/ACK, отправленные сервером, не было ответа. Если машина атакующего отвечает пакетом ACK, соответствующая запись на сервере будет удалена из SYN backlog.

Если атакующий подделывает свой IP-адрес, то SYN/ACK-пакеты сервера отправляются к незадействованным сторонам. Если машина получает SYN/ACK-пакет от сервера, не отправив предварительно SYN-пакет на этот сервер, машина отправляет RST-пакет (RST = «сброс»), тем самым разрывая соединение. Умный злоумышленник также хочет предотвратить это, чтобы сохранить как можно больше полуоткрытых соединений на сервере.

Прямые атаки SYN flood

В случае прямой атаки злоумышленник начинает атаку SYN flood под своим собственным IP-адресом. Чтобы гарантировать, что входящие пакеты SYN/ACK будут отброшены, атакующий настраивает брандмауэр своей машины соответствующим образом. Другой подход заключается в ограничении сетевого трафика исходящими SYN-пакетами.

Поскольку при прямой атаке атакующий действует под своим собственным IP-адресом, что относительно легко обнаружить, этот тип атаки используется редко.

Атаки SYN flood с использованием поддельных IP-адресов

Атаки с поддельными IP-адресами встречаются чаще. Злоумышленник вводит поддельный IP-адрес в поле отправителя SYN-пакетов, тем самым скрывая их реальное место происхождения. Злоумышленники предпочитают IP-адреса, которые не используются во время атаки. Это гарантирует, что случайно затронутые системы не ответят на SYN/ACK от атакованного сервера пакетом RST, что приведет к разрыву соединения.

Атаки распределенного отказа в обслуживании (DDoS) SYN flood

В этом варианте «распределенной» атаки SYN flood атака осуществляется одновременно многими компьютерами. Обычно это комбинация взломанных машин, называемая ботнетом. Компьютеры-зомби ботнета находятся под контролем атакующего и по его команде отправляют SYN-пакеты цели.

Отражение атаки SYN flood

Обычно сервер отвечает на один SYN-пакет несколькими пакетами SYN/ACK. Злоумышленник может воспользоваться этим, чтобы вызвать атаку отражения SYN flood. Атакующий подделывает IP-адрес жертвы и начинает DDoS SYN flood против одного или нескольких незадействованных серверов. Каждый из серверов отвечает на каждый входящий SYN-пакет несколькими пакетами SYN/ACK, которые отправляются жертве. В результате сетевой трафик увеличивается в несколько раз. Машина жертвы подвергается бомбардировке потоком пакетов SYN/ACK и разрушается под нагрузкой.

Контрмеры для защиты от атак SYN flood

Общий принцип действия SYN flood известен примерно с 1994 года. Поэтому в настоящее время существует ряд эффективных контрмер. Однако некоторые из них имеют негативные побочные эффекты или работают только при определенных условиях. В общем, отличить вредоносные SYN-пакеты от легитимных — дело нетривиальное. Большинство известных контрмер используется на сервере, но есть и облачные решения.

Увеличение отставания SYN

Упомянутый ранее SYN backlog является частью операционной системы. Концептуально, вы можете представить себе SYN backlog как электронную таблицу. Каждая строка содержит информацию для установления одного TCP-соединения. Сначала операционная система управляет соединениями. Только когда соединение установлено и завершено трехстороннее рукопожатие, оно передается приложению, ожидающему на порту, и удаляется из SYN backlog.

Одним из самых простых способов защиты системы от атак SYN flood является увеличение SYN backlog. Поскольку каждая запись в SYN backlog потребляет определенное количество памяти на компьютере, количество записей ограничено. По умолчанию в Linux это ограничение составляет несколько сотен записей. Однако это значение может быть легко увеличено. В принципе, SYN backlog может содержать тысячи записей. Таким образом, можно буферизировать небольшие атаки SYN flood.

Удаление самого старого полуоткрытого TCP-соединения

Другой подход заключается в удалении самого старого полуоткрытого соединения из SYN backlog, когда он заполнен. Это освобождает место для нового полуоткрытого соединения. В сочетании с достаточно большим SYN backlog этот подход может привести к тому, что система останется доступной во время атаки SYN flood. Однако этот метод неэффективен при большом количестве атак.

SYN-кэш и SYN-куки

Идея, лежащая в основе SYN-кэша, проста: Вместо того чтобы хранить полный блок управления передачей (Transmission Control Block, TCB) в SYN backlog для каждого полуоткрытого соединения, сохраняется только минимальный TCB. Эта технология использует криптографическое хэширование, чтобы злоумышленник не смог угадать важную информацию о соединении. Кэш SYN доказал свою эффективность. Данные соединения могут быть потеряны только в нескольких особых случаях.

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

Легитимный клиент отвечает на пакет SYN/ACK пакетом ACK и использует специально подготовленный номер последовательности. Сервер использует порядковый номер пакета ACK для криптографической проверки установления соединения и для установления соединения. Использование SYN cookies обеспечивает эффективную защиту от атак SYN flood. Однако при определенных обстоятельствах оно может привести к снижению производительности.

Также может использоваться комбинация обеих техник. В нормальном режиме работы используется SYN-кэш. Если SYN-кэш переполнен, система переключается на SYN cookies. Таким образом, объединяются положительные стороны обоих методов.

Облачная служба снижения риска

Борьба с DoS-атаками так же стара, как и сам Интернет. Однако современные злоумышленники имеют в своем распоряжении гораздо больше огневой мощи благодаря ботнетам. В результате DDoS-атак, сопровождающихся огромным потоком данных, даже самые мощные системы могут быть поставлены на колени. Поэтому все чаще используются услуги крупных, глобально распределенных облачных провайдеров.

Идея заключается в том, чтобы входящий поток данных DDoS был распределен между множеством отдельных систем. Это рассеивает общую нагрузку атаки и снижает пиковую нагрузку на каждую отдельную систему. Таким образом, сеть может противостоять даже серьезным атакам.

Помимо методов фильтрации, технология Anycast зарекомендовала себя на сетевом уровне. Запросы к системам, подключенным через Anycast, автоматически направляются на ближайший географически сервер. Таким образом, глобальная DDoS-атака оказывает меньшее влияние на локальный уровень. Сети Anycast, подобные сети Cloudflare, впечатляют своей элегантностью и устойчивостью.

Блог Cloudflare предлагает интересные сведения о текущих разработках по борьбе с атаками SYN flood. В дополнение к стратегиям борьбы с ботами очень перспективными представляются сигнатуры SYN-пакетов. Такие сигнатуры создают читаемые человеком отпечатки пальцев входящих SYN-пакетов. На основании отпечатков можно сделать выводы об операционной системе машины, которая первоначально отправила SYN-пакет. Пакеты, отправленные во время атаки SYN flood, не соответствуют шаблону при анализе отпечатков и отфильтровываются соответствующим образом.

Резюме

Даже спустя 25 лет после открытия SYN flood в качестве инструмента атаки, он все еще представляет угрозу для операторов веб-сайтов. К счастью, существуют эффективные контрмеры для защиты критически важного протокола управления передачей от атак SYN flood.

Оцените статью
cdelat.ru
Добавить комментарий