Замедление на Apache: достаточно ли mod_reqtimeout + mod_qos?
Несколько дней назад я обнаружил, что мой сервер подвергся медленной атаке (я нашел много значений "-" 408 0 "-" "-" в моем файле access.log).
Я изменил свою конфигурацию следующим образом:
В mod_reqtimeout:
RequestReadTimeout header=5-20,minrate=20
Я установил mod_qos и настроил его так:
QS_SrvMaxConnPerIP 50
QS_SrvMinDataRate 120 1500
Это достаточно? Большинство доступных руководств просто оставляют значения по умолчанию в файлах конфигурации.
Я заметил, что теперь значения "-" 408 0 "-" значительно увеличились. Я полагаю, это хорошо, потому что это означает, что большее количество соединений определяется как вредоносное, и это означает, что они закрыты, потому что они могут "повредить" сервер. Правильно?
Могу ли я сделать что-то еще? Блокировка ips?...
Заранее спасибо за любые отзывы!
1 ответ
Читая этот отчет об ошибке, я обнаружил, что он не должен использовать QS_SrvMinDataRate
вариант, потому что:
Очистка соединения занимает слишком много времени.
Они рекомендуют вам использовать только RequestReadTimeout
вариант (по крайней мере на Apache 2.4+, но так как RequestReadTimeout
опция была доступна раньше, вероятно, в ней не было необходимости в опциях QoS).
Не исключено, что слишком долгая очистка вызвала эти 408 ошибок. Но это только предположение с моей стороны.
Обратите внимание, что от Slowloris трудно избавиться, если вы не заблокируете IP-адрес в брандмауэре. Что-то Apache2/QoS не предлагает, к сожалению. Атакующему очень легко создать новое соединение, когда он получит 408, и, таким образом, съесть еще одно из вашего открытого слота Apache2.