Linux

Apache2.2, 2.4 DoS対策 mod_dosdetector

mod_dosdetectorでApache DoS対策

寄稿しました。

 

 

条件

  • Amazon Linux2
  • ALB配下

 

mod_dosdetectorのインストール

 

# yum install git httpd-devel gcc

 

# httpd -M | grep rewrite
 rewrite_module (shared)

 

# which apxs
/usr/bin/apxs

 

# ln -s /usr/bin/apxs /usr/sbin/apxs

 

 

※Apache2.4の場合

cd /usr/local/src/
git clone https://github.com/stanaka/mod_dosdetector.git
cd mod_dosdetector/
make install

 

※Apache2.2の場合

cd /usr/local/src/
curl -LO http://downloads.sourceforge.net/project/moddosdetector/moddosdetector/version-0.2/mod_dosdetector-0.2.tar.gz
tar xzvf mod_dosdetector-0.2.tar.gz
cd mod_dosdetector-0.2
make
make install

 

 

ALB配下なので接続元IPを取得する

# vi /etc/httpd/conf.d/GlobalSetting.conf

# ALB利用中に接続元IPを取得してログへ
LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

 

mod_dosdetectorの設定をしよう

 

5秒間で60リクエストで503を返す設定を行う

# vi /etc/httpd/conf.d/mod_dosdetector.conf


#LoadModule dosdetector_module /usr/lib64/httpd/modules/mod_dosdetector.so

<IfModule mod_dosdetector.c>
DoSDetection on

# DoS攻撃判定計測時間
DoSPeriod 5

# DOS攻撃の嫌疑をかける判定計測時間の閾値 閾値を超えると変数SuspectDoSが1になる
DoSThreshold 60

# DOS攻撃と確定するアクセスカウント 変数SuspectHardDoSが1になる
DoSHardThreshold 60

# アクセス禁止時間
DoSBanPeriod 60

# 嫌疑をかけるIPの最大保存数
DoSTableSize 100

# X-Forwarded-For headerをIPとして扱うかどうかのチェック
# ●ALB(ELB)配下ではない場合は無効化して下さい!
DoSForwarded on

# ホワイトリスト
DoSIgnoreContentType ^(image/|application/|text/javascript|text/css)
</IfModule>

 

# vi /etc/httpd/conf.d/mod_dosdetector_rewrite.conf


## リライトルール
RewriteEngine On

# for DoS attack
RewriteCond %{ENV:SuspectDoS} .+ [OR]
RewriteCond %{ENV:SuspectHardDoS} .+
# クラスAのローカルIPアドレス帯を全て除外
RewriteCond %{REMOTE_ADDR} !^(10\.[0-9]+\.[0-9]\.[0-9])$
# クラスBのローカルIPアドレス帯を全て除外
RewriteCond %{REMOTE_ADDR} !^(172\.(1[6-9]|2[0-9]|3[0-1])\.[0-9]+\.[0-9]+)$
# クラスCのローカルIPアドレス帯を全て除外
RewriteCond %{REMOTE_ADDR} !^(192\.168\.[0-9]+\.[0-9]+)$
# 対クローラー排除
RewriteCond %{HTTP_USER_AGENT} !(google|yahoo|msn|bing) [NC]
RewriteRule .* - [R=503,L]

 

# vi /etc/httpd/conf.d/example.net


<VirtualHost *:80>
ServerAdmin root
ServerName example.net
DocumentRoot /var/www/vhost/example.net/httpdocs/

#※ 下記を追加して下さい--------------------------------------
<IfModule mod_rewrite.c>
    Include /etc/httpd/conf.d/mod_dosdetector_rewrite.conf
</IfModule>
#※ ここまで--------------------------------------------------
</VirtualHost>

 

 

 

設定の反映

httpd -t
systemctl restart httpd

 

F5を行って60リクエストで503が返ってきたら成功

 

ログを確認

# tail -f /var/log/httpd/error_log | grep dosdetector

[Mon Feb 18 15:01:39.414772 2019] [so:warn] [pid 3996] AH01574: module dosdetector_module is already loaded, skipping
[Mon Feb 18 15:01:53.625046 2019] [:notice] [pid 3997] dosdetector: 'xxx.xxx.xxx.xxx' is suspected as DoS attack! (counter: 16)
[Mon Feb 18 15:01:54.458100 2019] [:notice] [pid 4045] dosdetector: 'xxx.xxx.xxx.xxx' is suspected as Hard DoS attack! (counter: 21)

 

 

 

 

 

 

 

 

爆速レンタルサーバならConoHa WING

 

サーバはプロに全部お任せ!「仕事」に専念したいあなたにおすすめです。

   

ConoHa VPSで運営してま🐱

 

サーバの勉強がしたいあなたにおすすめ!現役エンジニアの管理人が選んだ、WordPress運用に適したVPSの終着点

   

ConoHa VPSで爆速WordPressを作ろう! 

 

Laravel, AWS ポートフォリオ作成サポート! 定員3名

https://menta.work/plan/2381

Laravel, AWSによるポートフォリオ作成を通して、エンジニア転職をサポートします

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)