リクエストの種類に応じて、リクエストがパイプされるロードバランサの後に2つのApacheインスタンスがあります。
今私が望むのは、特定のIPアドレスからあまりにも多くのトランザクションを受信すると、数秒間そのIPをブロックし、あまりにも多くの要求を送信したという応答をクライアントに送り返すことです。
今質問は:私のインスタンスを呼び出すのではなく、ロードバランサーでこの状況を処理する方法はありますか?
Apacheでこの問題をどのように処理できますか?私はApacheバージョン2.2を使用しています。
答え1
Apacheでmod_evasiveを設定することをお勧めします。
mod_evasive は、HTTP DoS 攻撃または無差別代入攻撃が発生した場合に回避措置を提供する Apache の回避ポリシーモジュールです。また、検出およびネットワーク管理ツールとして設計されており、IPChain、ファイアウォール、ルーターなどと通信するように簡単に構成できます。 mod_evasiveは現在、電子メールおよびsyslogツールを介して乱用を報告します。
Debian にインストールするには:
apt-get install libapache2-mod-evasive
次に、mods-available/evasive.confを編集します。あなたの値は、サーバー上の仮想ホストの数によって異なります。
<IfModule mod_evasive20.c>
DOSHashTableSize 2048
DOSPageCount 50 <---- visites to site in the given time
DOSSiteCount 500 <---- to pages
DOSPageInterval 2.0 <---- 2 seconds
DOSSiteInterval 1.0
DOSBlockingPeriod 600.0 <--- seconds
DOSLogDir /var/log/apache2/evasive
DOSWhitelist 127.0.0.1
DOSWhitelist x.x.x.*
</IfModule>
新しいmod_evasive
設定を有効にするには、Apacheを再起動する必要があります。