DoS攻撃対策でApacheのmod_evasiveモジュールを使ってみました。mod_evasiveは一定時間に同じサイトから来るアクセスをブロックし、一定時間アクセスを禁止するモジュールです。モジュールはソースからインストールしました。
mod_evasiveのダウンロードは、下記のURLからできます。
http://www.zdziarski.com/blog/?page_id=442
1. mod_evasiveのインストール
ダウンロードしたソースを「/usr/local/src/」に移動してインストールを開始します。
[root@localhost src]# tar zxvf mod_evasive_1.10.1.tar.gz
[root@localhost src]# cd mod_evasive
[root@localhost mod_evasive]# /usr/local/apache2/bin/apxs -i -a -c mod_evasive20.c
(確認作業)
[root@localhost mod_evasive]# ls -la /usr/local/apache2/modules/
c mod_evasive20.c ←が見つかればOK
2. mod_evasiveの設定
[root@localhost ~]# vi /usr/local/apache2/conf/httpd.conf
アパッチの再起動
[root@web mod_evasive]# /usr/local/apache2/bin/apachectl restart
Apacheのベンチマーク測定(mod_evasiveモジュールの確認)
Apacheのベンチマーク「ab」コマンドでmod_evasiveモジュールの確認作業をします。今回httpd.confファイルに記述した設定では、「DOSWhitelist」でローカルからのアクセスをスキップしていますので、この一文をコメントアウトするか、外部からベンチマークしてください。
[root@localhost src]# /usr/local/apache2/bin/ab -n 50 -c 10 http://(確認したいwebページ)
(「ad」コマンドの説明)
-n 数字 ←連続アクセス回数
-c 数字 ←同時アクセスする件数
-A ユーザー名:パスワード ←ベーシック認証ページを測定する場合
以上のようにベンチマークを測定し、mod_evasiveモジュールの入れる前といれた後を比べてみてください。また、アクセスログファイルを見ると、403(Forbidden)になっています。