В TCP-стеке FreeBSD устранена DoS-уязвимость

Во всех поддерживаемых ветках FreeBSD устранена неприятная ошибка, которая может быть использована для совершения DoS-атаки, проявляющейся в исчерпании свободных сокетов и невозможности установить новое соединение. После обработки определённым образом оформленных пакетов, соединения не закрываются, а вечно остаются в состоянии LAST_ACK, что приводит к накоплению незавершённых соединений и исчерпанию используемых для обработки TCP-соединения структур данных.

При редком стечении обстоятельств проблема также может проявляется при обработке обычного сетевого трафика — в один прекрасный момент соединения начинают оставаться в состоянии LAST_ACK. В частности, начиная с FreeBSD 6 похожий эффект проявлялся на сервере opennet.ru примерно раз в полгода. Предпринятые около семи лет назад попытки диагностики не принесли успеха, поэтому в то время для защиты был подготовлен скрипт, перезагружающий сервер при обнаружении зависания большого числа соединений. Сейчас разработчикам FreeBSD удалось выделить факторы, вызывающие проблему, и разработать устраняющий её патч.

Зависшие соединения также можно очистить командой tcpdrop. Например, для чистки соединений, для которых последняя активность наблюдалась более 100 секунд назад, можно использовать команду:

   netstat -nxp tcp | awk '{ if (int($NF)  100) print "tcpdrop " $4 " " $5 }'

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.