
я использую 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
чтобы соответствовать любому «плохому» коду 4xx
и 5xx
за исключением 401
(нужны некоторые предварительные требования для правильного рассмотрения рукопожатий авторизации, и есть фильтр haproxy-http-auth
, который можно использовать для этого)