2006/09/20

SYN flood

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

Если параметр tcp_syncookies установлен (доступен только когда ядро
собрано с CONFIG_SYNCOOKIES), тогда ядро обрабатывает SYN пакеты TCP в
обычном режиме до тех пор, пока очередь не заполнится. После
заполнения очереди включается механизм SYN cookies.

SYN cookies вообще не использует очередь SYN. Вместо этого ядро
отвечает на каждый SYN пакет, как обычно SYN|ACK, но туда будет
включено специально сгенерированное число на основе IP адресов и
портов источника и получателя, а также времени посылки пакета.
Атакующий никогда не получит эти пакеты, а поэтому и не ответит на
них. При нормальном соединении, будет послан третий пакет, содержащий
число, а сервер проверит был ли это ответ на SYN cookie и, если да, то
разрешит соединение даже в том случае, если в очереди SYN нет
соответствующей записи.

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

Защита - включить tcp_syncookies
echo "1" > /proc/sys/net/ipv4/tcp_syncookies

Ядро 2.2 не имеет данной возможности, поэтому единственный выход - переходить на 2.4 или выше.


Литература:

  1. Обзор файлов /proc имеющих отношение к работе Firewall в Linux
  2. SYN cookies
  3. Enable tcp_syncookies by default
  4. CERT® Advisory CA-1996-21 TCP SYN Flooding and IP Spoofing Attacks

1 comment:

pavel.odintsov said...

Спасибо, пригодилось.