fail2ban apache-auth过滤器未检测到密码失败

时间:2014-12-23 22:04:53

标签: apache fail2ban

我无法使用fail2ban来检测失败的apache-auth尝试

过滤器如下所示:

^%(_apache_error_client)s (AH01617: )?user .* authentication failure for "\S*": Password Mismatch$

^%(_apache_error_client)s (AH01618: )?user .* not found(: )?\S*\s*$

以及出现的错误:

[Tue Dec 23 13:41:45.870693 2014] [auth_basic:error] [pid 2818] [client 97.171.82.123:91131] AH01617: user miati: authentication failure for "/test/file.html": Password Mismatch, referer: https://example.org/test/file.html
[Tue Dec 23 13:41:45.870693 2014] [auth_basic:error] [pid 2818] [client 97.171.82.123:91131] AH01617: user miati: authentication failure for "/test/file.html": Password Mismatch, referer: https://example.org/test/file.html

两者都没有正常工作。我想让他们重新编写,以便他们工作,但我无法弄清楚过滤器是如何工作的,谷歌搜索并没有让我任何地方。大多数指南都认为我理解正则表达式,我没有。

任何人都可以解释(或链接)过滤器中的这些参数是什么意思,所以我可以自己修改它吗?

2 个答案:

答案 0 :(得分:8)

我遇到了与Fail2Ban v0.8.11相同的问题,并且在您发布后大约13个小时内发现了您的帖子。我最终的解决方案是使用官方GitHub仓库中更多的当前apache-common.confapache-auth.conf文件。它现在捕获登录尝试,然后自动禁止IP地址,尽管我使用ufw进行实际的禁止/取消禁止。

答案 1 :(得分:1)

您的错误消息包含fail2ban不期望的额外文本,告诉fail2ban接受此额外文本:

从模式末尾删除$或在.*之前添加$

规则中的$表示日志行必须在那里结束,但是在“密码不匹配”字样后,日志行包含文本,删除$会删除该限制。 .*表示“允许任何内容”,因此在行尾之前添加允许任何内容,