У меня есть следующий фрагмент fail2ban
конфигурация на сервере Ubuntu 13.10:
#jail.conf
[apache-getphp]
enabled = true
port = http,https
filter = apache-getphp
action = iptables-multiport[name=apache-getphp, port="http,https", protocol=tcp]
mail-whois[name=apache-getphp, dest=root]
logpath = /srv/apache/log/access.log
maxretry = 1
#filter.d/apache-getphp.conf
[Definition]
failregex = ^<HOST> - - (?:\[[^]]*\] )+\"(GET|POST) /(?i)(PMA|phptest|phpmyadmin|myadmin|mysql|mysqladmin|sqladmin|mypma|admin|xampp|mysqldb|mydb|db|pmadb|phpmyadmin1|phpmyadmin2|cgi-bin)
ignoreregex =
Я знаю, что регулярное выражение - это хорошо, потому что, если я запустил тестовую команду в своем access.log:
fail2ban-regex /srv/apache/log/access.log /etc/fail2ban/filter.d/apache-getphp.conf
Я получаю УСПЕХ с несколькими попаданиями, и в моем журнале я вижу такие записи, как
187.192.89.147 - - [13/Apr/2014:11:36:03 +0100] "GET /phpTest/zologize/axa.php HTTP/1.1" 301 585 "-" "-"
187.192.89.147 - - [13/Apr/2014:11:36:03 +0100] "GET /phpMyAdmin/scripts/setup.php HTTP/1.1" 301 593 "-" "-"
Во-вторых, я знаю, что электронная почта настроена правильно, так как каждый раз, когда я service fail2ban restart
Я получаю электронное письмо при остановке / запуске каждого из фильтров.
Однако, несмотря на все это, кажется, что никакие действия не предпринимаются, когда приходит один из этих запросов. Ни электронной почты с whois, ни записей в iptables. Что может мешать fail2ban действовать? (в fail2ban-client -d
и я вижу, что цепи загружены iptables -L
)
У меня была похожая проблема. Решение оказалось простым - в файле jail.conf у меня было две одинаковых тюрьмы - «Apache» и «Apache Multiport». Обе тюрьмы использовали в качестве входных данных один и тот же фильтр и один и тот же файл журнала. После комментирования тюрьмы "Apache Multiport" fail2ban начал корректно сопоставлять регулярное выражение в файле журнала.
PS. Я не использую кавычки в failregex и использую fail2ban 0.9.0.dev.