mod_evasiveを使ってみた
What is mod_evasive?
mod_evasive is an evasive maneuvers module for Apache to provide evasive action in the event of an HTTP DoS or DDoS attack or brute force attack. It is also designed to be a detection and network management tool, and can be easily configured to talk to ipchains, firewalls, routers, and etcetera. mod_evasive presently reports abuses via email and syslog facilities.
サービス拒否攻撃を回避するモジュールmod_evasiveをインストール。
1. Apacheのインストール
$ gzip -dc httpd-2.2.4.tar.gz | tar xvf -
$ cd httpd-2.2.4
$ ./configure --enable-so
$ make
$ su -
# make install
DSOでインストールするため、「--enable-so」オプションを指定。
2. mod_evasiveのインストール
$ gzip -dc mod_evasive_1.10.1.tar.gz | tar xvf -
$ cd mod_evasive
$ su -
# /usr/local/apache2/bin/apxs -i -a -c mod_evasive20.c
3. 設定
httpd.confに下記設定を追加。
LoadModule evasive20_module modules/mod_evasive20.so
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
DOSLogDir "/usr/local/apache2/logs"
あるIPアドレスが、同サイトに1秒間に50アクセス、もしくは、同ページに1秒間に2アクセスした場合は、10秒間アクセスをブロックする設定。
DOS攻撃ログは「/usr/local/apache2/logs」に「dos-IPアドレス」という形で出力。
また、攻撃された時に特定アドレスへのメール通知などの設定も可能なようです。
4. 動作確認
mod_evasiveに付属のtest.plで動作確認。
$ ./test.pl
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
(中略)
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
途中からアクセスをブロックされている。
Nuclear Elephant: mod_evasiveにunofficialなRPMパッケージはあります。
残念ながら、Debパッケージはない*1ようです。
http://www.zdziarski.com/projects/mod_evasive/
Apacheに対するサービス拒否攻撃を回避する方法 | 日経 xTECH(クロステック)
*1:自分で作るしかないか・・・。