Назад | Перейти на главную страницу

apache mod_evasive с настройками mpm_prefork для работы

Я попытался найти всю информацию по этому поводу, и я понимаю, что проблема с 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 - это иметь:

  • StartServers = MaxRequestWorkers = MaxSpareServers (поэтому все процессы создаются при запуске, и ни один новый процесс не будет создан или уничтожен)
  • MaxConnectionsPerChild 0 (Таким образом, процессы не будут повторно использоваться. Однако это может быть опасно в случае утечки памяти, поэтому вы должны использовать большое значение вместо 0)
  • Разделите DOSPageCount и DOSSiteCount на количество серверных процессов.

Это основано только на поведении, которое я мог наблюдать на своем собственном сервере, и его следует тщательно протестировать.