Yura YuLife

ITエンジニアの覚え書き。

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/

MakefileUbuntuで動作するように修正

$ 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>

参考サイト