fail2ban正则无法匹配WordPress站点登录相关日志问题求助
问题根因
你的正则匹配失败的核心原因是<HOST>标记的位置和实际日志结构不匹配:
你提供的日志条目固定以 "hostname 开头,后接需要捕获的客户端IP(也就是<HOST>对应的匹配位置),你之前的正则直接将<HOST>放在开头双引号之后,完全不符合日志的实际结构,自然无法匹配。
修正后的fail2ban规则
[Definition] # 同时匹配wp-login.php和xmlrpc.php的POST请求,支持路径前多斜杠的情况 failregex = ^"hostname <HOST> .* "POST /*(wp-login\.php|xmlrpc\.php) HTTP/.*" (200|401|403) ignoreregex =
规则说明
- 修正了
<HOST>的前置匹配逻辑,先匹配开头固定的"hostname字段,再捕获IP - 路径前加
/*兼容你日志中出现的//wp-login.php多斜杠场景 - 转义了
wp-login.php和xmlrpc.php中的点号,避免匹配到非目标路径 - 可根据你的实际需求调整末尾匹配的状态码范围
验证方法
修改配置后执行以下命令验证匹配效果:
fail2ban-regex /home/runcloud/logs/tmp.log /etc/fail2ban/filter.d/wordpress.conf
正常会显示3条命中的匹配记录。
内容的提问来源于stack exchange,提问作者rapsli
相关产品推荐
相关产品推荐

