
ich benutze centos8 +fail2ban + haproxy
Ich habe ein spezielles Jail „my-haproxy404“ mit diesen Einstellungen:
[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
und Filter:
[Definition]
failregex = .*:<HOST>(?::\d+)?\s+.*\d* 404
Meine Beispiel-Protokollzeile lautet:
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"
also, ... vielleicht funktioniert das, aber in fail2ban.log sehe ich eine IP wie:
INFO [my-haproxy404] Found 0.0.217.211 - 2021-09-19 14:38:21
dies ist keine echte IP (die echte IP ist: 77.77.77.77), fail2ban blockiert diese IP (0.0.217.211) ....aber (77.77.77.77) funktioniert immer noch
ich weiß, ich habe ein Problem mit regulären Ausdrücken
können Sie mir mit der richtigen Regexp-Regel für diesen 404-String helfen
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
Grüße
Antwort1
failregex = ^\s*\S+ haproxy\[\d+\]: <ADDR>:\d+(?: \[[^\]]+\])? \S+ \S+ \d+(?:/\d+)+ 404\b
Sie können es auch 404\b
durch ersetzen (?!401)[45]\d\d\b
, um jeden „schlechten“ Code abzugleichen 4xx
und 5xx
Ausnahmen zu machen 401
(es sind einige Voraussetzungen erforderlich, um Autorisierungs-Handshakes richtig zu berücksichtigen, und es gibt einen Filter haproxy-http-auth
, der dafür verwendet werden kann).