Apache,Linux

ApacheのDOS攻撃対策

More than 3 years have passed since last update.


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


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


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