Fail2ban 正则表达式不匹配(没有意义!)

Fail2ban regex doesn't match (no sense!)

这是一个日志:

[1617620801] [0.0042] [domain.com] [#5006616] [269] [3] [(ip removed)] [403] [GET] [/study/index.php] [SQL injection] [hex:4745543a61203d203b2044524f50205441424c45203c]
[1617621606] [0.00205] [domain.com] [#2926762] [0] [2] [(ip removed)] [403] [POST] [/xmlrpc.php] [Access to WordPress XML-RPC API] [hex:2f786d6c7270632e706870]

fail2ban 过滤器具有以下模式:

failregex = \[.*] \[.*] \[.*] \[.*] \[.*] \[(3)] \[<HOST>] \[.*] \[.*] \[.*]

但是 fail2ban-regex 一直告诉我 0 个结果。

但是,如果我将 \[3] 更改为 \[2],它可以找到第二个。如果我将其更改为 \[.*],它会同时找到它们。

正则表达式测试网站表明它应该可以工作。我不知道为什么找不到 [3]!

正确,由于灾难性的回溯,它不会工作。

你需要

  • 将所有\[.*]替换为\[[^][]*]
  • 如果 [...] 之间可以有多个 space,请使用 +\s+ 而不是文字 spaces。

你可以使用像

这样的东西
\[[^][]*]\s+\[[^][]*]\s+\[[^][]*]\s+\[[^][]*]\s+\[[^][]*]\s+\[(3)]\s+\[<HOST>]\s+\[[^][]*]\s+\[[^][]*]\s+\[[^][]*]

参见regex demo