mod_dosdetectorを使う!
- wget http://ncu.dl.sourceforge.net/sourceforge/moddosdetector/mod_dosdetector-0.2.tar.gz
- tar xvzf mod_dosdetector-0.2.tar.gz
- cd mod_dosdetector-0.2
- make
- make install
httpd.confの設定
LoadModule dosdetector_module modules/mod_dosdetector.so
DoSDetection on
DoSPeriod 5
DoSThreshold 10
DoSHardThreshold 25
DoSBanPeriod 30
DoSTableSize 100
DoSIgnoreContentType .(js|png|jpe?g|gif|css|ico)
httpd.confの設定解説
上記例は
1. 同一IPアドレスから5秒間に10回以上のアクセスがあった場合「DoS攻撃の疑いあり」と見なし、その後30秒間のアクセスに対しては環境変数 SuspectDoS をセットする(値は”1″)
2. さらに5秒間のアクセス回数が25回に達した場合、「DoS攻撃の疑い濃厚」と見なし、環境変数 SuspectHardDoS もセットする(値は”1″)
3. 初めに「DoS攻撃の疑いあり」と判定してから30秒が経過したら、次のアクセスでもう一度判定をやり直す。直近5秒のアクセスが10回を下回っていれば、疑いは晴れる
という意味。
DoSDetection
DoS判定機能の有効・無効を設定。on で有効
DoSTableSize
クライアントの追跡記録の最大保存数。
この数値を大きくし過ぎるとメモリ使用量と負荷が上昇する
DoSShmemName
クライアントの追跡記録を保存しておくための共有メモリの名前。
(設定しなくても問題なし)
※icoを次のように AddType を追加しておけば image と判定される。
AddType image/vnd.microsoft.icon .ico
DoS攻撃に対する防御設定
mod_dosdetector が行うのはあくまでも攻撃の”検出”だけなので、防御する方法はまた別に設定する必要。
「DoS攻撃の疑い濃厚」なアクセスに対してステータスコード503 + 静的なHTMLを返す場合は次のように設定(Apache 2.2 only)。
RewriteEngine On
RewriteCond %{ENV:SuspectHardDoS} =1
RewriteRule .* - [R=503,L]
ErrorDocument 503 /server_is_busy.html
最後に
ログの設定をする。これを設定しておかないときっとこのモジュールが動いてんだかなんだか分からない・・・
DoS攻撃の疑いありなアクセスを普通のログと分けて記録。
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
実際に使ってみて
何故か
DoSIgnoreContentType
で指定したcontent-typeがignoreされませんでした。
ログを仕込んでみたところ、gifでもcssでもtext/plainと判断していることが分かりました。
が、AddType image/gif .gif や AddHandler image/gif .gif しても一向に現象が変わらず
困り果てていたときに、以下の改造版を使ったらうまくいった!感謝!
http://wp.serpere.info/archives/483
0 コメント:
コメントを投稿