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 件のコメント:
コメントを投稿