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