Fail2ban フィルター正規表現

Fail2ban フィルター正規表現

私はcentos8 +fail2ban + haproxyを使用しています

私は特別な jail「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

関連情報