Regexp del filtro Fail2ban

Regexp del filtro Fail2ban

Estoy usando centos8 +fail2ban + haproxy

Tengo una cárcel especial "my-haproxy404" con esta configuración:

[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

y filtrar:

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

mi línea de registro de ejemplo es:

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"

Entonces... tal vez esto funcione, pero en fail2ban.log veo una IP como:

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

esta no es una IP real (la IP real es: 77.77.77.77), fail2ban bloquea esta IP (0.0.217.211) ....pero (77.77.77.77) sigue funcionando

Sé que tengo un problema con la expresión regular.

¿Puedes ayudarme con la regla de expresión regular correcta para esta cadena 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

saludos

Respuesta1

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

también puede reemplazar 404\bcon (?!401)[45]\d\d\bpara que coincida con cualquier código "incorrecto" 4xxy 5xxexcepción 401(se necesitan algunos requisitos previos para considerar los apretones de manos de autorización correctamente y hay un filtro haproxy-http-authque se puede usar para eso)

información relacionada