求助:无法配置Fail2Ban正则规则拦截指定User Agent(Amazonbot)
修复Fail2Ban正则以拦截指定日志条目
你的正则无法生效主要有三个核心问题:
- 没有匹配日志开头的IP地址:Fail2Ban必须捕获到客户端IP才能完成封禁动作,你的正则直接跳过了IP部分
- 错误使用字符类
[.*?]:日志里的日期是用方括号包裹的,正则里需要用转义的\[和\]来匹配,而你写的[.*?]是匹配任意单个字符(.、*、?中的一个),完全不符合需求 - 正则结构和日志格式不匹配,导致整体无法命中
正确的正则配置
[Definition] failregex = ^<HOST> - - \[.*?\] "(GET|POST|HEAD) .* HTTP/.*" .* "Mozilla/5.0.*Amazonbot.*" ignoreregex =
关键说明
<HOST>:Fail2Ban的内置占位符,专门用来匹配各种格式的IP地址(IPv4/IPv6),自动帮你处理IP的正则匹配,比自己写IP正则更可靠\[.*?\]:转义方括号,匹配日志里的日期时间部分(非贪婪模式避免过度匹配)- 保留了对请求方法、User-Agent中
Amazonbot的匹配,确保只拦截符合特征的请求
测试正则是否生效
可以用Fail2Ban自带的工具测试:
fail2ban-regex 你的日志文件路径 /etc/fail2ban/filter.d/你的配置文件名.conf
如果测试结果显示"Matches found",说明正则已经可以正确命中目标日志条目。
内容的提问来源于stack exchange,提问作者Andrzej Majewski Phones Rescue
相关产品推荐
相关产品推荐

