SYN-флуд

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

SYN-флуд — одна из разновидностей сетевых атак типа отказ от обслуживания, которая заключается в отправке большого количества SYN-запросов (запросов на подключение по протоколу TCP) в достаточно короткий срок (RFC 4987).

Согласно процессу «трёхкратного рукопожатия» TCP, клиент посылает пакет с установленным флагом SYN (synchronize). В ответ на него сервер должен ответить комбинацией флагов SYN+ACK (acknowledges). После этого клиент должен ответить пакетом с флагом ACK, после чего соединение считается установленным.

Принцип атаки заключается в том, что злоумышленник, посылая SYN-запросы, переполняет на сервере (цели атаки) очередь на подключения. При этом он игнорирует SYN+ACK пакеты цели, не высылая ответные пакеты, либо подделывает заголовок пакета таким образом, что ответный SYN+ACK отправляется на несуществующий адрес. В очереди подключений появляются так называемые полуоткрытые соединения (англ. half-open connection), ожидающие подтверждения от клиента. По истечении определенного тайм-аута эти подключения отбрасываются. Задача злоумышленника заключается в том, чтобы поддерживать очередь заполненной таким образом, чтобы не допустить новых подключений. Из-за этого клиенты, не являющиеся злоумышленниками, не могут установить связь, либо устанавливают её с существенными задержками.

Атака основывается на уязвимости ограничения ресурсов операционной системы для полуоткрытых соединений, описанной в 1996 году группой CERT[1], согласно которой очередь для таких подключений была очень короткой (например, в Solaris допускалось не более восьми подключений), а тайм-аут подключений — достаточно продолжительным (по RFC 1122 — 3 минуты).

Противодействие

[править | править код]

Предложенным решением было использование SYN cookie, либо ограничение запросов на новые подключения от конкретного источника за определенный промежуток времени. Сетевой протокол транспортного уровня SCTP, который является более современным по сравнению с TCP, использует SYN cookie и не подвержен SYN-флуд-атакам.