Apacheを実行するサーバーを構成しましたが、数日前にログで、サイトに対して無限のクエリを実行しているボットがあることに気付きました。ログは、これらのボットが同じIPアドレスから約20分間、1秒あたり約60のクエリを実行していることを示しています。クエリを制限するにはどうすればよいですか?また、そのようなボットを処理する適切な方法は何ですか?
前もって感謝します。
律速ソフトウェアのインストールを検討してください。合法的なボットから防御するだけでなく、防御にも役立ちます。 Apacheにはmod_evasive
を使用するか、NginxをフロントエンドとしてインストールしてそのHttpLimitZoneModule
を使用することができます。これは組み込みです。
ツールを強くお勧めしますfail2ban( http://www.fail2ban.org/ );独自のサーバーで使用しており、Apache以外のDoSフラッドを制限するのに非常に便利です。
fail2banは、さまざまなパターンのさまざまなログをアクティブに監視し(Apacheヒットのみを監視するように設定しています)、特定のIPからの特定の時間内にヒットが多すぎると判断した場合、そのIPを一定期間禁止します。決定します(20分の禁止ウィンドウを使用します)
fail2banには、ほとんどの配布用にビルド済みのパッケージがあります。または、ソースを入手することもできます。 Pythonなので、コンパイルする必要もありません。 :D
簡単な解決策は、robots.txtファイルを編集して、次の行を追加することです。
ユーザーエージェント: *
クロール遅延:60
クロール遅延をリクエスト間の秒数に変更します。 「良い」ボットはこれを聞いて、リクエストの合間に待つ必要があります。ただし、「悪い」ロボットはrobots.txtルールをリッスンしません。