web-dev-qa-db-ja.com

Fail2BanでDoSとDDoSを検出する良い方法は何ですか?

Ubuntu WebサーバーでFail2Banを構成して、DoS/DDoSの犠牲にならないようにしています。 DNSをルーティングしてSSl証明書を使用する必要があるため、Cloudflareを使用したくありません。

現在、1秒あたり1つ以上のHTTP HEADリクエスト、または1秒あたりxmlrpc.phpへの複数のリクエストをチェックするスクリプトをオンラインで見つけました。 DDoS攻撃を実行するために人々が採用できるリクエストの種類はこれらだけではないため、十分な保護ではないと思います。

特定のIPが短いウィンドウで実行できるGET/POSTリクエストの数を制限することを検討していますが、大きなページでは制限を設定する方法がわかりません。大量のJavascript、CSS、または画像をロードすると、短時間で大量のGETリクエストが作成されます。 GET/POSTリクエストの制限を検討する必要がありますか、それとも他の何かを検討する必要がありますか?どうして?

1
John Doe

1秒あたりのリクエスト数を確認するだけでは、善人と悪人の違いを確認するのは難しい場合があります。最終決定を行う前に、ご使用の環境でスクリプトを実行して、5分あたりの単一のIPアドレスからの要求の数(例)がWebサイトにとって「正常」であることを確認する必要があります。

通常のレートを把握したら、スクリプトでGETおよび/またはPOST(ログファイル分析に応じて))をカウントできるようになります。

ただし、スクリプトや実行可能ファイルのスキャンなど、フィルタリングするログファイル内の他の疑わしいアクティビティを見つけることは可能です(「うまくいけば」、適切に構成されたWebサーバーでエラーが発生するGET/POST ;-))

私は自分のシステムで この外部fail-2-ban-link を使用しました。

2
Ingvar J

適切な設定は、1秒以内に複数の接続をチェックすることです。 1秒間に100の接続は非常に疑わしいものであり、ブロックする必要があると思います。

Apacheを使用するときは、fail2banと一緒にmod_evasiveも使用することをお勧めします。

mod_evasive を使用します。

fail2ban を使用します。

1
Tom