[Sysadmins] Борьба с synflood
Michael A. Kangin
mak на complife.ru
Ср Дек 12 02:33:02 MSK 2012
Добрый день.
хочется запинать систему, которая бы выдерживала как можно большее PPS
синфлуда без вреда для предоставляемых сервисов.
Есть тестовый сервер с двумя ксеончиками, и сетевухой Intel Corporation
82580 Gigabit Network Connection (драйвер igb).
Запускаем на нём в качестве жертвы апача с тестовым cgi, который
рассказывает текущее время - так проверяем отзывчивость сервиса.
атакуем так с другого сервера:
hping3 <ip> -p 80 -S --rand-source --flood
Это даёт нам порядка 380K pps исходящего.
А атакуемый сервер (p6, std-def) принимает только порядка 75K, остальное
дропает. Ну и сервис отвечает более-менее уверенно только до 150K.
Если поставить 3.4.21-un-def-alt0.M60P.1, число принимаемых пакетов
немного увеличивается, до 110К. Причём, количество принимаемых пакетов
снижается с ростом нагрузки - так, при атаке под 500К принимается уже
только 90K.
Немного лучше себя ведёт Centos6 - она вполне принимает до 140K, и
сохраняет отзывчивость сервиса до 200К с атакующей стороны.
На атакуемой машинке в htop'е светятся красным все ядра, отданные под
прерывания сетевухи и довольно высокий LA.
Интриги добавляет тот факт, что Линупс сосёт.
Если на этот сервер поставить FreeBSD9, то она принимает под 450К без
всякого ухудшения сервиса. И живёт со скрипом вплоть до 750К с атакующей
машины, больше я с неё не смог выжать.
Собственно, что сделать можно под Линуксом?
Все настройки в целом по умолчанию (кроме раскидывания прерываний по
ядрам процессора). Я пробовал много шаманств - и всякие там sysсtl
крутить, и длины очередей в ifconfig и ethtool, и параметры igb. Все
бесполезно (да и раскидывание прерываний, подозреваю, тоже).
Была идея, что 2-4 сетевухи в бондинге будут лучше справляться. Авотфиг.
Хуже.
--
Michael A. Kangin
Подробная информация о списке рассылки Sysadmins