【发布时间】:2020-02-21 12:09:53
【问题描述】:
你能告诉我为什么我的正则表达式不匹配吗? 我使用命令行工具 fail2ban-regex 对其进行了测试:
fail2ban-regex "01:53:56 114.119.167.52 mydomain.de:80 GET /file.php 404 " "^.* <HOST> .* 404 .*$"
|- Missed line(s):
| 01:53:56 114.119.167.52 mydomain.de:80 GET /file.php 404
`-
【问题讨论】:
-
.* 在
之后丢失,但仍然不匹配。 -
是的,
是来自fail2ban的模板变量,它获取日志中该行位置的ip地址的值。然后fail2ban可以为这个IP地址添加一个iptables阻止规则。 wiki.ubuntuusers.de/fail2ban -
404 .*$将不匹配,除非 404 后面有空格,您应该从模式中删除空格 -
如果
<HOST>不包含端口,您还必须删除它后面的空格,以便后面的.*可以匹配:80 -
我不知道为什么,但现在可以了。我测试了另一种最小化模式,这就是我所需要的,只需匹配任何 404 并获取主机 ip 并阻止它。