Я попытался найти всю информацию по этому поводу, и я понимаю, что проблема с mod_evasive не работает, когда сервер находится в режиме mpm_prefork (вместо worker).
Однако мне удалось частично заставить его работать, снизив
StartServers
MinSpareServers
MaxSpareServers
в файле конфигурации. Итак, мой вопрос: если я настрою mpm_prefork.conf
:
StartServers 1
MinSpareServers 0
MaxSpareServers 0
MaxRequestWorkers 150
MaxConnectionsPerChild 0
будет ли это в основном равным одному запущенному экземпляру (как если бы «рабочий»), и в этом случае mod_evasive будет по-прежнему работать, как если бы сервер работал как «рабочий»?
Есть ли в такой настройке потенциальные проблемы? (например, не обрабатывается много законных запросов и т. д.)? Есть ли какие-то другие варианты для моих основных требований (будет ли полезен mod_security?)
Я понимаю, что это не лучший способ смягчить атаки, но я просто ищу базовую защиту от пользовательских поисковых роботов, которые иногда перегружают мой сервер десятками запросов в секунду.
Похоже, что счетчики, используемые mod_evasive, не используются совместно между процессами. Следовательно, каждый раз, когда mpm_prefork запускает новый процесс, счетчики возвращаются к 0.
Таким образом, один из способов заставить mod_evasive работать с mpm_prefork - это иметь:
MaxConnectionsPerChild 0
(Таким образом, процессы не будут повторно использоваться. Однако это может быть опасно в случае утечки памяти, поэтому вы должны использовать большое значение вместо 0)Это основано только на поведении, которое я мог наблюдать на своем собственном сервере, и его следует тщательно протестировать.