Apache HTTP Serverでは、同一IPアドレスからのアクセス回数をカウントして一定回数以上の場合に永続的に拒否することは可能か
Apache HTTP Serverでは、同一IPアドレスからのアクセス回数をカウントして一定回数以上の場合に永続的に拒否することが可能です。これを実現するためには、Apacheのmod_securityモジュールやmod_evasiveモジュール、あるいはFail2Banのような外部ツールを使用することがあります。
以下に、mod_evasiveモジュールを使用した例を示します。このモジュールはDoS攻撃などからの保護を目的としていますが、同一IPアドレスからのアクセス回数制限も実現可能です。
mod_evasiveモジュールのインストール:bash sudo apt-get install libapache2-mod-evasive
インストールが完了したら、Apacheを再起動します。
bash sudo systemctl restart apache2
- Apacheの設定:
Apacheの設定ファイル(通常は
/etc/apache2/apache2.confや/etc/httpd/conf/httpd.conf)に以下のような設定を追加します。apache <IfModule mod_evasive20.c> DOSHashTableSize 3097 DOSPageCount 2 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 3600 </IfModule>これにより、同一IPアドレスからの1秒あたりのリクエストが2回を超えるか、同一サイト全体で1秒あたり50回を超える場合に、そのIPアドレスを1時間ブロックします。設定は適宜調整してください。
- モジュールの有効化:
mod_evasiveモジュールを有効にします。bash sudo a2enmod evasive
Apacheを再起動します。
bash sudo systemctl restart apache2
これにより、mod_evasiveモジュールが同一IPアドレスからのアクセスを監視し、設定に基づいてブロックするようになります。この例では1時間のブロック期間が設定されていますが、適切な期間を選択してください。

ディスカッション
コメント一覧
まだ、コメントがありません