UbuntuのApacheにmod_dosdetectorをインストール
Ubuntu上で動かしているApacheに、DoS攻撃対策用のモジュールmod_dosdetectorをインストールする手順です。
環境
下準備
$ sudo apt-get install apache2-dev
mod_dosdetectorのインストール
$ git clone https://github.com/stanaka/mod_dosdetector.git
$ cd mod_dosdetector/
$ vi Makefile
# 7-8行目を以下のように修正 # APXS=/usr/sbin/apxs # APACHECTL=apachectl APXS=/usr/bin/apxs2 APACHECTL=apache2ctl
$ sudo make install
Apache2の設定
mod_rewriteの有効化
$ sudo a2enmod rewrite
特定のVirtualHostに対してmod_dosdetectorの設定を変更する
<VirtualHost>
ServerName example.com
ServerAdmin example@localhost
...
<IfModule mod_dosdetector.c>
# mod_dosdetectorの設定
DoSDetection on
# DoS判定をする期間(sec)
DoSPeriod 10
# この回数を超えるとDoSの可能性有りのフラグが立つ
DoSThreshold 30
# この回数を超えるとDoSのフラグが立つ
DoSHardThreshold 50
# フラグ解除までの時間
DoSBanPeriod 60
# モジュールが利用するシェアードメモリの名前(デフォルト設定)
DoSShmemName dosshm
# レコードを保存するテーブルのサイズ
DoSTableSize 100
# X-Forwarded-For headerをリモートアドレスとして利用するか
DoSForwarded on
# 画像、JS、CSSへのリクエストはカウントしない
DoSIgnoreContentType ^(image/|application/|text/javascript|text/css)
</IfModule>
RewriteEngine On
# DoS判定された場合は以下の設定を適用
RewriteCond %{ENV:SuspectDoS} .+
# ただし、ローカルIPを除く
RewriteCond %{REMOTE_ADDR} !^(10\.[0-9]+\.[0-9]\.[0-9])$
RewriteCond %{REMOTE_ADDR} !^(172\.(1[6-9]|2[0-9]|3[0-1])\.[0-9]+\.[0-9]+)$
RewriteCond %{REMOTE_ADDR} !^(192\.168\.[0-9]+\.[0-9]+)$
# DoS判定された場合は503(Service Unavailable)を返す
RewriteRule .* - [R=503,L]
</VirtualHost>