Недавно внимание привлек сценарий под названием «slowloris». Основная концепция того, что делает slowloris, - это не новая атака, но с учетом недавнего внимания я заметил небольшое увеличение количества атак на некоторые из наших веб-сайтов Apache.
На данный момент 100% защиты от этого не видно.
Лучшее решение, которое мы определили (на данный момент), - это увеличить MaxClients.
Это, конечно, не более чем увеличивает требования к компьютеру злоумышленника и не защищает сервер на 100%.
Другой отчет указывает на то, что использование обратного прокси (такого как Perlbal) перед сервером Apache может помочь предотвратить атаку.
Использование mod_evasive для ограничения количества подключений от одного хоста и использование mod_security для отклонения запросов, которые выглядят так, как будто они были отправлены slowloris, на данный момент кажется лучшей защитой.
Кто-нибудь на ServerFault сталкивался с подобными атаками? Если да, то какие меры вы приняли для защиты / предотвращения?
ПРИМЕЧАНИЕ. Этот вопрос относится к серверам Apache, поскольку я понимаю, что серверы Windows IIS не затронуты.
У меня был такой приступ ... в середине лета (23 июня), когда ты должен быть в деревне и пить пиво:>
Я оставил свой апач позади Лак, который не только защищал от slowloris, но и немного ускорял веб-запросы.
Также, iptables
помог мне:
iptables -I INPUT -p tcp --dport 80 \
-m connlimit --connlimit-above 20 --connlimit-mask 40 -j DROP
Это правило ограничивает один хост 20 подключениями к порту 80, что не должно влиять на пользователя, не являющегося злоумышленником, но сделало бы slowloris непригодным для использования с одного хоста.
mod_antiloris, просто как тот.
Если все ваши модули apache потокобезопасны, slowloris можно победить, просто переключившись на MPM событий или рабочих процессов. ссылка: Вот
Прямо сейчас кажется, что больше нечего делать, чтобы ограничивать максимальное количество одновременных подключений на IP-адрес на сервере.
Есть пользовательский патч, который вы можете попробовать. Он изменяет тайм-аут в зависимости от нагрузки на сервер, но, учитывая его статус, вы можете не захотеть использовать его на производственной машине без серьезного тестирования. Взглянуть Вот.
Межсетевой экран на основе iptables должен защитить вас от множественных подключений с 1 ip.
Если это поможет кому-то еще, иногда вы можете решить эту проблему с помощью Apache 2.2.15 или выше со следующей конфигурацией:
LoadModule reqtimeout_module modules/mod_reqtimeout.so
RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500
Больше информации здесь: https://httpd.apache.org/docs/2.2/mod/mod_reqtimeout.html