mod_evasiveモジュールの利用
このモジュールを使用することで、 特定のIPアドレスからの過度のリクエストに対して、 アクセスブロックを実行、ブロック解除を行うことができる。
<仕組み>
(1)mod_evasiveモジュールが、URLリクエストをApacheサーバーに送信するIPアドレスの記録を取る
(2)その後、あらかじめ設定した許容範囲を超えるリクエストがいずれかのIPアドレスから送信されていないか測定する
(3)許容範囲を超えるリクエストがあった場合、そのIPアドレスからのリクエストは一時的にブロック
<設定>
下記いづれかの条件にマッチした時に、Dos攻撃とみなして、 600秒アクセス禁止(403 Forbidden)にし、XXXX@XXXX.comへ拒否IPをメールで通知する。
条件1: 同一ページへ、2秒間に3回のリクエストがあった場合 条件2: 同一サイトへ、1秒間に30回のリクエストがあった場合
設定ファイル:/etc/httpd/conf/httpd.conf
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 3
DOSSiteCount 30
DOSPageInterval 2
DOSSiteInterval 1
DOSBlockingPeriod 600
DOSWhitelist 127.0.0.1 192.168.1.*
DOSLogDir “/var/log/mod_evasive”
DOSEmailNotify XXXX@XXXX.com
</IfModule>
※DOSHashTableSizeの値を大きくすることで、記録できるIPアドレスの数は多くなる
<その他>
モジュール配布サイト:
http://www.zdziarski.com/blog/?page_id=442
参考サイト:
http://dev.classmethod.jp/cloud/aws/mod_evasive20/
http://blog.livedoor.jp/imura81gt/archives/24866172.html
mod_evasiveのインストールから設定
tar zxvf mod_evasive_1.10.1.tar.gz
cd mod_evasive
/usr/local/apache2/bin/apxs -i -a -c mod_evasive20.c
cd /usr/local/apache2/modules
ls -l mod_evasive20.so
-rwxr-xr-x 1 root root 51287 Mar 1 15:33 mod_evasive20.so
mkdir /var/log/mod_evasive/
chown apache:apache /var/log/mod_evasive/
cd /usr/local/apache2/conf
vi httpd.conf
LoadModule evasive20_module modules/mod_evasive20.so ←インストールすると自動で設定される。
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 3
DOSSiteCount 20
DOSPageInterval 2
DOSSiteInterval 1
DOSBlockingPeriod 3600
DOSLogDir "/var/log/mod_evasive"
DOSEmailNotify xxxxx@xxxx.jp ←拒否したIPアドレスをメール送付。
</IfModule>
:wq
service httpd restart
/usr/local/apache2/bin/apachectl -M
cd /usr/local/src/mod_evasive
chmod +x test.pl
/usr/local/src/mod_evasive/test.pl