Я установил mod_evasive на Ubuntu 12.04 LTS, используя инструкции здесь
мой mod_evasive.conf выглядит так:
<ifmodule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
DOSLogDir /var/log/mod_evasive
DOSEmailNotify root@localhost
DOSSystemCommand "sudo /root/scripts/ban_ip.sh %s"
</ifmodule>
Ни DOSEmailNotify, ни DOSSystemCommand не работают.
Если я запущу test.pl, сценарий тестирования, который поставляется с модом evasive, я получу успешные соединения, за которыми следует 403, запрещенный, поэтому модуль собирает несколько соединений и запрещает дальнейшие соединения.
Однако электронная почта не отправляется, а команда DOSSystemCommand никогда не выполняется. Я попытался изменить DOSSystemCommand на что-то простое, например, отправить дату в файл, но это тоже не работает.
Как ни странно, в 99% случаев ничего не работает, в 1% случаев я получу электронное письмо и запустится DOSSystemCommand. Но их не похоже на какой-либо шаблон.
Я знаю, что это отчет об ошибке для чего-то похожего https://bugs.launchpad.net/ubuntu/+source/libapache-mod-evasive/+bug/605679, это предполагает создание симлинка, который я пытался сделать безрезультатно.
У кого-нибудь работает Mod_Evasive на UBUNTU 12.04 LTS?
РЕДАКТИРОВАТЬ: я нашел проблему. Символическая ссылка действительно исправляет ошибку.
Mod_evasive хранит список запрещенных IP-адресов в /var/log/mod_evasive, если я полностью удалю это и запущу тестовый скрипт, машина будет забанена и отправлено одно электронное письмо. После того, как IP-адрес будет заблокирован, вы больше не будете получать электронные письма, даже если истечет интервал атаки mod_evasive DOS и IP-адрес повторно атакует сервер.