2009-11-13

ApacheにDoS対策モジュールを

この間やった事メモ

DoS対策モジュールのインストール
apacheのモジュールである、mod_evasiveを導入する。
http://www.zdziarski.com/projects/mod_evasive/





まず、事前に必要なツール類をインストールする。

# yum install httpd_devel.x86_64


このコマンド実行で、下記7つのパッケージがインストールされる。

httpd-devel
apr-devel
apr-util-devel
cyrus-sasl-devel
db4-devel
expat-devel
openldap-devel


次に、mod_evasive本体をダウンロードし、解凍する。

# wget http://www.zdziarski.com/projects/mod_evasive/mod_evasive_1.10.1.tar.gz
# tar xvzf mod_evasive_1.10.1.tar.gz


apxsを(apacheモジュール用コンパイラ)使ってコンパイルする。

# apxs -i -a -c mod_evasive20.c


apacheの設定ファイルを確認&変更
# vi /etc/httpd/conf/httpd.conf
以下の行が追加されている事を確認した。

LoadModule evasive20_module /usr/lib/httpd/modules/mod_evasive20.so



以下の内容を追加した。

<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 3
DOSSiteCount 50
DOSPageInterval 2
DOSSiteInterval 1
DOSBlockingPeriod 60
# DOSWhitelist 127.0.0.1
DOSEmailNotify 私のメールアドレス
</IfModule>


なお、それぞれの項目の意味は以下の通り。

DOSHashTableSize
各子プロセスでのハッシュテーブル・サイズ
サイズを大きくするとパフォーマンスは良くなりますがメモリを消費します

DOSPageCount
同ページへのリクエスト数のしきい値

DOSSiteCount
同サイトへのリクエスト数のしきい値

DOSPageInterval
PageCountしきい値の計測間隔(秒)
デフォルト:1秒間隔

DOSSiteInterval
SiteCountしきい値の計測間隔(秒)
デフォルト:1秒間隔

DOSBlockingPeriod
IPアドレスを遮断する時間(秒)
この遮断されている間のアクセスには403 (Forbidden)を返します

DOSWhitelist
検出対象外とするIPアドレス


設定ファイルの文法チェック
下記のコマンドにて、httpd.confの文法チェックを行った。

# /etc/rc.d/init.d/httpd configtest
Syntax OK
#


Apacheの再起動

# /etc/init.d/httpd restart


実験
モジュールに同梱されているtest.plを実行した。
正しく制限されて、私のメールアドレスにBLACKLISTとされた127.0.0.1の情報が送られてきた。

今後やらなければならないこと
このモジュールの設定の最適値を求める必要あり。


以上


追記:
結構、簡単でした。
一度ブラックリストに載ったIPが、再度アタックしてきた場合にはメールが送られてこないのが悩ましいなぁ.....。何度も送られてくるのも困るんだけどねぇ.....。

0 件のコメント: