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>