Атака SYN Flood

Клиент генерирует SYN-пакет, запрашивая новую сессию у сервера. Поскольку TCP-сессия открыта (алгоритм «трехэтапного рукопожатия TCP» исполнен), хост будет отслеживать и обрабатывать каждую пользовательскую сессию, пока она не будет закрыта. Во время SYN Flood атакуемый сервер с большой скоростью получает поддельные SYN-запросы, содержащие поддельный IP-адрес источника. SYN Flood поражает сервер, занимая всю память таблицы соединений (Transmission Control Block Table), обычно используемую для хранения и обработки входящих пакетов. Это вызывает критическое падение производительности и, как итог, отказ в работе сервера.

 

Есть несколько способов защиты, которые могут частично обезопасить от SYN Flood:

 

  1. Ограничение микроблоков. Являясь администратором, можно ограничить размер памяти сервера для каждого входящего SYN-пакета.
  2. SYN Cookie. Используя криптографическое хэшировние, сервер отправляет SYN-ACK ответ с номером последовательности, которая составлена из IP-адреса клиента, номера порта и другой уникальной информации, идентифицирующей клиента. Когда клиент отвечает, этот хэш уже включен в ACK-пакет. Далее сервер проверяет ACK и, в случае успешной проверки, ему остается только выделить память для соединения. Чтобы использовать этот способ, его должны поддерживать все серверы, участвующие в обмене трафиком.
  3. Настройка стека. В качестве одной из временных мер можно настроить стек TCP, уменьшив тайм-аут освобождения памяти, выделенной для соединения и тайм-аут блокировки входящих соединений. Но у этих настроек могут быть побочные эффекты в виде потери части легитимных соединений из-за задержек и нестабильных каналов.