HAPROXYセットアップの背後にApache2マシンがいくつかありますが、mod_rpafを使用して実際のX-FORWARDEDクライアントIPを取得しながら、それらのApacheマシンでmod_evasiveをセットアップしようとしました。
何らかの理由で、mod_evasiveはいくつかのipを取得してブロックします(ApacheBenchでテスト)が、いくつかは続行してより多くの接続を開き、基本的にサーバーをDOSします。
mod_evasiveで一方のIPをもう一方のIPから除外できるものはありますか?プロキシの背後にあり、実際のクライアントIPがApacheログに表示されているという事実を考慮しますか?
mod_evasiveの定義は、DOSWhitelistがサブネットマスクに設定されている場合のデフォルトです(たとえば、192.168。。)。
rpafモジュールには、HAPROXYIPを使用したRPAFproxy_ips定義があります。何か案は?
発生した問題は、mod_evasiveの設計の一部である可能性があります。ブロックに使用される統計は、各子プロセスに保存されます。したがって、Prefork MPMを使用していて、MaxClientsが50に設定されている場合、これらの50のクライアントのそれぞれへの接続は個別に追跡されます。
さらに、MaxRequestsPerChild設定があります。これに達すると、子供は殺され、統計も一緒に殺されます。したがって、場合によっては、mod_evasiveは単に効果的ではありません。
申し訳ありませんが、現時点で推奨できるより良い代替手段はありません。私は自分自身を探しています。 (他のMPMでもうまく機能するかどうかはまだ確認していません。)
参照:
mod_evasive_x を使用して、クライアントIPアドレスのX-Forwarded-Forヘッダー値と mod_rpaf の最後の安定バージョンを使用できます。ここで、RPAF_ProxyIPs値のネットワークサブネットマスクを設定できます。ロードバランサー(ELB)の背後にあるAWSの私のインスタンスでは、正しく機能します。