You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fail2Ban自定义Apache过滤器匹配失败问题求助

Fail2Ban自定义Apache过滤器匹配失败问题求助

嗨,我来帮你排查这个问题!你的核心问题在于自定义的failregex开头部分和你的Apache日志格式不匹配,导致正则完全无法匹配目标日志行。

咱们来拆解分析下:

  • 你的Apache日志是默认的组合日志格式,行开头直接是客户端IP(也就是Fail2Ban识别的<HOST>):
    72.139.194.229 - - [17/Nov/2023:01:08:57 +0000] "GET /dns-query HTTP/1.1" 302 4942 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Mobile Safari/537.36"
    
  • 但你写的failregex开头是^.+?:\d+ <HOST> -.*",其中^.+?:\d+是用来匹配类似server.example.com:80这样的服务器地址+端口的,而你的日志里根本没有这部分内容,正则从第一步就匹配失败了。

解决方案

直接去掉failregex开头多余的服务器地址匹配部分,调整后的配置如下:

[Definition]

#badagents = 360Spider|ZmEu|Auto Spider 1.0|zgrab/[0-9]*\.[0-9a-zA-Z]*|Wget\(.*\)|MauiBot.*|AspiegelBot.*|SemrushBot.*|PHP/.*

badagents =

failregex = ^<HOST> - - \[.*\] "(GET|POST|HEAD) /+dns-query.*$

ignoreregex =

修改后再运行测试命令:

fail2ban-regex /var/log/apache2/access.log /etc/fail2ban/filter.d/apache-custom.conf

应该就能看到匹配数变成1,不再出现missed line的提示了。

小提示

如果以后不确定日志对应的正则怎么写,可以参考Fail2Ban自带的Apache过滤器(比如/etc/fail2ban/filter.d/apache-auth.conf),里面的正则都是针对常见Apache日志格式优化过的,能给你不少参考思路。

备注:内容来源于stack exchange,提问作者learningtech

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 08:49:50