DoS攻撃対策 Apacheモジュール mod_dosdetector 導入
仕事でお客様からの特定のIPアドレス帯から大量アクセスが有りサーバーが不安定になるて相談があり、
Apacheモジュールの【mod_dosdetector】を導入したのでその際の作業メモです
mod_dosdetectorは、『サーバ/インフラを支える技術』で知ったDoS攻撃判定モジュール mod_dosdetector の使い方が載っています
自分はこちらの本でそのモジュールを知りました
24時間365日サーバ/インフラを支える技術 [ 伊藤直也 ]
mod_dosdetector インストール
パッケージをダウンロードして、make, make install の一般的な流れです
# cd /usr/local/src # wget http://ncu.dl.sourceforge.net/sourceforge/moddosdetector/mod_dosdetector-0.2.tar.gz # tar -xzvf mod_dosdetector-0.2.tar.gz # cd mod_dosdetector-0.2 # make # make install
※ apachectl のパスを変更してインストールしている場合はMakefileを編集してパスを修正します
# vi /usr/local/src/mod_dosdetector-0.2/Makefile APXS=/usr/local/apache2/bin/apxs APACHECTL=apachectl
mod_dosdetector 設定
設定は以下のようにしました
編集箇所はhttpd.conf の最終行に追記
- 10秒間(DoSPeriod)で20アクセス(DoSThreshold)で環境変数SuspectDoSに1をセット(Dos攻撃の疑いあり)
- 10秒間で50アクセス(DoSThreshold)で環境変数SuspectHardDoSに1をセット
- 10秒間(DoSBanPeriod)で対象アドレスを解除
- クライアントの追跡記録の最大保存数(DoSTableSize)は、100
- *.js|png|jpe?g|gif|css|ico のファイルは除外対象
# vi /usr/local/apache2/conf/httpd.conf DoSDetection On DoSPeriod 10 DoSThreshold 20 DoSHardThreshold 50 DoSBanPeriod 10 DoSTableSize 100 DoSIgnoreContentType .(js|png|jpe?g|gif|css|ico)
バーチャルホストごとにDoS攻撃対策ができますが、今回はバーチャルホストの設定をしていない
サーバーにインストールしたので、バーチャルホストごとに設定はしていません
編集箇所はhttpd.conf の最終行に追記
- 環境変数SuspectHardDoSが付与されたIPは、503(ErrorDocument)のステータスを返す
- REMOTE_ADDR,REQUEST_URI で指定したIP,URIは除外
- ログは、logs/surugaya/dos_suspect_log に保存
# vim /etc/httpd/conf/httpd.conf RewriteEngine On RewriteCond %{ENV:SuspectHardDoS} =1 RewriteRule .* - [R=503,L] RewriteCond %{REMOTE_ADDR} !127.0.0.0 RewriteCond %{REMOTE_ADDR} !192.168.0 RewriteCond %{REQUEST_URI} !^/hoge ErrorDocument 503 "Server is busy." LogFormat "%{SuspectHardDoS}e %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" dos_suspect CustomLog "logs/dos_suspect_log" dos_suspect env=SuspectDoS
mod_dosdetector 設定
最後にapache を再起動して有効にします
# /etc/init.d/httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ]
あとは設定したURLをブラウザで開いて「F5」連打して、503のステータスが変えればOKです
ディスカッション
コメント一覧
まだ、コメントがありません