サーバーを安全にするために、fail2ban を実装する必要があります。ログをスキャンして、404 メッセージを大量に生成するホストを禁止したいと思います。
私が抱えている問題は、特定の NAT された IP の背後に多数のクライアントが存在する可能性があり、それらを区別する必要があることです。各クライアントは、次の形式で異なる URL を要求しています。
https://server.example.com/path/<uniqueid>/<mac_address>
IP ごとの 404 エラーの数を見るだけでなく、正規表現内の一意の ID を考慮するように fail2ban を実行したいと思います。
必要なイベントをトラップすると思われる次の正規表現を開発しました。
(?P<host>(\d{1,3}.){4})\ -\ -\ \[\d{1,2}\/\w+\/\d{4}[\:\d{2}]+\ \+\d{4}\] "GET \/path\/(?P<unique_id>.+)\/.+HTTP\/\d.\d" ".+" ".+" 404.+
これは次のものと一致するはずです:
1.1.1.11 - - [29/Aug/2018:01:27:45 +0100] "GET /path/3B44444444483/ddddee37D4.cfg HTTP/1.1" "somestring" "otherstring" 404 - 2005 5 0.117
これは一致するはずですが、上記とは異なるインスタンスと見なされます。
1.1.1.11 - - [29/Aug/2018:01:27:45 +0100] "GET /path/3B46666444483/ddddee37D4.cfg HTTP/1.1" "somestring" "otherstring" 404 - 2005 5 0.117
答え1
この構成を使用すると、サーバーはログ内の 404 応答を探すためにより多くの CPU を消費し、X IP に対して 404 応答を提供しないことによるセキュリティ上の利点や CPU 上の利点は得られません。
これらの応答が表示されたくない場合は、それらのログ エントリを作成しないでください。