0

我目前正在优化我的 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 这样的网站仍然可以识别正确的模式!(如果我没有把 \ 这个词没有出现,请不要介意 \HOST)。

我试图将\d更改为[0-9] / by \/ : by \: Fail2ban 总是错过线路,我不知道为什么..

有人有同样的问题吗?谢谢 !:)

4

2 回答 2

1

可能唯一需要的模式是:<HOST> .* 404这应该针对实际日志进行测试。fail2ban-regex 命令行实用程序对于测试非常有用。

请注意,可能会出现误报,因此将响应代码移到主机之后会更容易,然后再有日期/时间,在这种情况下^<HOST> 404会更准确。

关于性能,这似乎不太容易出错,并且比更长的时间更快。有关过滤器性能提示,请参阅下面的第二个链接。

于 2017-08-25T10:41:02.160 回答
0

你需要逃避最后一个+和尾随]

\[[0-9]{2}/.{3}/[0-9]{4}:([0-9]{2}:){2}[0-9]{2} \+[0-9]{4}\]

此外,可能还有正斜杠/- 取决于特定的正则表达式解释器。

于 2017-08-17T08:29:19.590 回答