fail2ban 正则表达式有效,但未采取任何措施

fail2ban 正则表达式有效,但未采取任何措施

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

答案1

我遇到过类似的问题。解决方案似乎很简单 - 在 jail.conf 文件中,我启用了两个类似的 jail - “Apache” 和 “Apache Multiport”。两个 jail 都使用相同的过滤器和相同的日志文件作为输入。注释掉 jail “Apache Multiport” 后,fail2ban 开始正确匹配日志文件中的正则表达式。

PS. 我没有在 failregex 中使用引号,并且我使用的是 fail2ban 0.9.0.dev。

相关内容