2013年1月10日木曜日

mod_dosdetector でDoS攻撃を防ぐ

引用:サーバにDoS耐性を付ける
http://stanaka.hatenablog.com/entry/20070204/1170553603
ウェブサービスでは、アクセスが集中して、サイトが落ちる、というのは、よくある話です。
純粋に人気が出てアクセス集中するなら、サーバ管理側の責任と言われても、しかたないと思います。
しかし、botやF5アタックによる突発的な集中アクセスで、落ちてしまう、というのは、運営側としても、あまり納得がいくものではありません。
そのような突発的なアクセスに対応するために、大量のアクセスをしてくるクライアントを検出し、優先度を落すか、アクセス禁止にする方法などがあります。
というわけで、Apacheモジュールでそれを検出するためのmod_dosdetectorを開発しました。


◆インストール手順

1.mod_dosdetector-0.2のダウンロード
# wget http://sourceforge.net/projects/moddosdetector/files/moddosdetector/version-0.2/mod_dosdetector-0.2.tar.gz/download
2.mod_dosdetector-0.2の展開
# tar -xzvf mod_dosdetector-0.2.tar.gz
3.httpd-develのインストール(apxsコマンドを使用できるようにする)
# yum install httpd-devel
4.mod_dosdetector-0.2のコンパイル
# make
5.mod_dosdetector-0.2のインストール
# make install


◆設定
# vi /etc/httpd/conf/httpd.conf
下記を追加
AddType image/vnd.microsoft.icon .ico

DoSDetection On
DoSPeriod 60
DoSThreshold 50
DoSHardThreshold 60
DoSBanPeriod 30
DoSTableSize 100
DoSIgnoreContentType ^(image/|application/|text/javascript|text/css)

RewriteEngine On
RewriteCond %{ENV:SuspectHardDoS} =1
RewriteRule .*  - [R=503,L]
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
  • AddType image/vnd.microsoft.icon .ico・・・favicon.icoのMIME typeをimageに変更し、DoSIgnoreContentTypeの定義にヒットさせて除外する
  • DoSDetection On・・・検知を有効にする
  • DoSPeriod 60・・・・カウンタのリセット周期(秒)
    • 60=1:00,2:00,3:00・・・のタイミングでリセット
    • 30=1:00,1:30,2:00,2:30・・・のタイミングでリセット
    • 13=1:13,1:26,1:39・・・のタイミングでリセット
  • DoSThreshold 50・・・閾値(60秒間で50アクセスなら攻撃かも?⇒環境変数SuspectDoSに1がセットされる)
  • DoSHardThreshold 60・・・閾値(60秒間で60アクセスなら攻撃確定⇒環境変数SuspectHardDoSに1がセットされる)
  • DoSBanPeriod 30・・・解除までの時間(秒)
  • DoSTableSize 100・・・メモリサイズ(チェックするIPアドレスの上限数?)
  • DoSIgnoreContentType ^(image/|application/|text/javascript|text/css)
  • RewriteEngine On
  • RewriteCond %{ENV:SuspectHardDoS} =1・・・SuspectHardDoSが1の場合
  • RewriteRule .* - [R=503,L]・・・503返信
  • ErrorDocument 503 "Server is busy."・・・アクセス元に503「Server is busy.」を返信する


参考
http://stanaka.hatenablog.com/entry/20070204/1170553603 http://www.trajectory.jp/tech/server/dosdetector.phphttp://up-point-server.info/?p=54 http://tkyk.name/blog/2009/05/07/Apache-mod_dosdetector-Server-mod_dosdetector/

0 件のコメント:

コメントを投稿