SYN-флуд — это форма DoS-атаки, при которой злоумышленник отправляет последовательность SYN
запросов на целевой сервер, пытаясь использовать достаточно ресурсов сервера, чтобы система перестала реагировать на легитимный трафик [1] .
Запрос
SYN
и пакетSYN
— это одно и то же.
Атаки SYN-флуд работают, используя процесс установления связи TCP-соединения. В нормальных условиях TCP использует три различных процесса для установления соединения (рис. 1a).
SYN
( синхронизация ).SYN-ACK
, чтобы ACK
соединение.ACK
, чтобы подтвердить получение пакета от сервера, и соединение устанавливается.После завершения этой последовательности отправки и получения пакетов TCP-соединение открыто и может отправлять и получать данные. Это называется трехэтапным рукопожатием TCP. Этот метод является основой для каждого соединения, установленного с использованием TCP.
Чтобы создать DoS, злоумышленник использует тот факт, что после получения первоначального пакета SYN
сервер ответит одним или несколькими пакетами SYN-ACK
и будет ждать последнего этапа рукопожатия. Cloudflare [2] описывает, как это работает (рис. 1b):
SYN
, часто с поддельными IP-адресами.ACK
, который так и не приходит, злоумышленник продолжает отправлять новые пакеты SYN
. Прибытие каждого нового пакета SYN
заставляет сервер временно поддерживать новое соединение с открытым портом в течение определенного периода времени, и как только все доступные порты будут использованы, сервер не сможет нормально функционировать. Атака в этом репозитории была проведена на виртуальной машине. Для проведения атаки необходимы три машины. Одна машина используется в качестве злоумышленника , другая машина используется в качестве жертвы (т.е. сервера), а третья машина используется в качестве наблюдателя (т.е. клиента).
Для организации атаки можно настроить три виртуальные машины на одном хост-компьютере. Альтернативно, на главном компьютере можно настроить две виртуальные машины, при этом сам хост-компьютер будет выступать в качестве третьего компьютера.
Эта атака была реализована в предположении, что злоумышленники находятся в той же физической сети, что и жертвы, что упростило задачу определения порядковых номеров TCP и номеров исходных портов. Инструменты-снифферы можно использовать для сбора необходимой информации.
Атака на этот репозиторий была проведена с помощью инструмента netwox
. Затем для перехвата атакующих пакетов использовался инструмент-сниффер, такой как Wireshark [3] . Пока атака продолжалась, на машине-жертве был запущен netstat -na
чтобы сравнить результат с результатом, полученным до атаки.
# check the size of the queue for holding half-open connections
sudo sysctl -q net.ipv4.tcp_max_syn_backlog
# check the current usage of the queue;
# i.e., the number of half-open connections associated with some listening port
netstat -na
# one netwox tool that may be useful is tool number 76: synflood
netwox 76 --help
Файл cookie SYN:
Атака на этот репозиторий была проведена путем манипулирования файлами cookie SYN.
Использование файлов cookie SYN позволяет серверу избежать разрыва соединений при заполнении очереди SYN. Вместо хранения дополнительных соединений запись очереди SYN кодируется в порядковый номер, отправленный в ответе SYN-ACK. Если сервер затем получает последующий ответ ACK от клиента с увеличенным порядковым номером, сервер может восстановить запись очереди SYN, используя информацию, закодированную в порядковом номере TCP, и продолжить соединение как обычно.
Несмотря на то, что в результате таких мер по смягчению последствий теряется некоторая информация о TCP-соединении, это все же лучше, чем допускать, чтобы DoS-атаки поражали законных пользователей в результате атаки.
Файлы cookie SYN были созданы DJ Bernstein [4] в ответ на SYN-флуд.
Используйте команду sysctl
, чтобы включить/выключить механизм файлов cookie SYN:
sudo sysctl -a | grep cookie # Display the SYN cookie flag
sudo sysctl -w net.ipv4.tcp_syncookies=0 # turn off SYN cookie
sudo sysctl -w net.ipv4.tcp_syncookies=1 # turn on SYN cookie
Файлы cookie SYN — одна из многих контрмер, которые можно реализовать, чтобы остановить SYN-флуд. Другие меры по снижению риска включают увеличение максимального размера очереди, уменьшение таймера SYN-RECEIVED
и переработку самого старого полуоткрытого TCP-соединения.
^ «Рекомендация CERT CA-1996-21 TCP SYN-флуд и атаки с подменой IP» Университет Карнеги-Меллона
^ "Атака наводнения SYN" Cloudflare
^ «О Wireshark» Фонд Wireshark
^ "Печенье SYN" DJ Бернштейн
Спасибо за ваш интерес, этот проект был веселым и познавательным!