我目前正在优化我的fail2ban过滤器。
在我的正则表达式之前:
<HOST> \- \- \[.*\] \"(GET|POST) .+ HTTP\/\d\.\d\" 40\d \d{2,5} \"(.*)\" \"(.*)\"$
它适用于包含404错误的每一行:
<HOST> - - [16/Aug/2017:14:02:33 +0200] "GET /favicon.ico HTTP/1.1" 404 6494 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; Trident/7.0; rv:11.0) like Gecko"
之后我改变了:
\[.*\]
通过
\[[0-9]{2}\/.{3}\/[0-9]{4}\:([0-9]{2}\:){2}[0-9]{2} \+[0-9]{4}\]
但是现在它与fail2ban不再匹配,而像regex101这样的网站仍然认可正确的模式! (如果我没有把词放在那里,请不要介意\主页。)
我尝试通过 [0-9] / \ / 更改 \ d : \: Fail2ban总是错过线路,我不知道为什么......
有人遇到同样的问题吗?谢谢 ! :)
答案 0 :(得分:1)
可能唯一需要的模式是:<HOST> .* 404
这应该针对实际日志进行测试。 fail2ban-regex命令行实用程序对于测试非常有用。
请注意,可能存在误报,因此在主机之后移动响应代码会更容易,然后在此之后有日期/时间,在这种情况下^<HOST> 404
会更精确。< / p>
关于性能,似乎这不会出错,并且如果不快于更长时间也快。请参阅以下有关过滤器性能提示的第二个链接。
答案 1 :(得分:0)
您需要转发上一个+
和尾随]
\[[0-9]{2}/.{3}/[0-9]{4}:([0-9]{2}:){2}[0-9]{2} \+[0-9]{4}\]
此外,可能还有正斜杠/
- 取决于特定的正则表达式解释器。