Fail2ban 过滤器正则表达式

Fail2ban 过滤器正则表达式

我使用 centos8 +fail2ban + haproxy

我有一个特殊的监狱“my-haproxy404”,其设置如下:

[my-haproxy404]
enabled  = true
port     = http,https
filter   = my-haproxy404
logpath  = /var/log/my-haproxy.log
backend  = poller
journalmatch =
maxretry = 3
bantime  = 86400
findtime  = 3600

和过滤器:

[Definition]
failregex = .*:<HOST>(?::\d+)?\s+.*\d* 404

我的示例日志行是:

Sep 19 14:38:21 localhost haproxy[53925]: 77.77.77.77:55763 [19/Sep/2021:14:38:21.483] backend1 line1/test1 0/0/12/88/100 404 687 - - ---- 1/1/0/0/0 0/0 "GET /test/string HTTP/1.1"

所以,...也许这可行,但在 fail2ban.log 中我看到如下 IP:

INFO    [my-haproxy404] Found 0.0.217.211 - 2021-09-19 14:38:21

这不是真实 IP(真实 IP 是:77.77.77.77),fail2ban 阻止此 IP(0.0.217.211)...但是(77.77.77.77)仍然有效

我知道正则表达式有问题

你能帮我找到这个 404 字符串的正确正则表达式规则吗

Sep 19 14:38:21 localhost haproxy[53925]: 77.77.77.77:55763 [19/Sep/2021:14:38:21.483] backend1 line1/test1 0/0/12/88/100 404

问候

答案1

failregex = ^\s*\S+ haproxy\[\d+\]: <ADDR>:\d+(?: \[[^\]]+\])? \S+ \S+ \d+(?:/\d+)+ 404\b

您还可以替换404\b(?!401)[45]\d\d\b匹配任何“坏”代码4xx5xx例外401(需要一些先决条件才能正确考虑授权握手,并且有一个过滤器haproxy-http-auth可以用于此)

相关内容