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。
这是一个日志:
[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。