MENU

溶けかけてるうさぎ HP GALLERY BLOG TOP RECENT ARTICLES POPULAR ARTICLES ABOUT THIS BLOG

CATEGORY

大学 (140) 仕事 (17) 航空宇宙 (104) 写真 (77) 旅行 (32) 飯・酒 (17) コンピュータ (118) その他 (44)

TAG

ARCHIVE

RECENT

【カメラ】X100 シリーズが好きすぎる(主にリーフシャッタ) 【カメラ】X100V から X100VI に買い替えました 【自宅サーバー】Google Domains から Cloudflare にドメインを移管 【カメラ】FUJIFILM XF レンズのサイズ比較ができるようにしてみた 【写真】自作写真閲覧ページにてフィルムシミュレーションで写真をフィルタできるようにした

【Apache】Apache 2.4系におけるDoS攻撃対策

事象発生日:2017-08-07

記事公開日:-

アクセス数:7020

だいぶ前に設定した,Apache 2.4系のDoS攻撃対策の設定がうまく働いていなかったので,修正した.

Apacheは2.2系と2.4系で設定ファイルの書き方などが随分と変更されたばかりか,UbuntuなどのDebian系ではhttpd.confなどはない.ネット上の記事はCentOSでのものが多く,あまり参考にならなかった.

Apacheを完全理解しているわけではないが,うまくいった設定を残しておく.

 

トップ画像の出典はこちら

1.動作環境

Ubuntu Server 16.04.2 LTS

Apache HTTP Server 2.4.18 (Ubuntu)

2.過去の設定

過去の設定をログを元に復元してみた.

なんか,右往左往しているなぁ.

さらに,当時はapache2.confか000-default.confのどちらに書けばいいかわかっていなかった.

$ cd
# apxs とか使うため?
$ sudo apt‐get install apache2‐dev

# mod_dosdetectorのインストール
$ cd git
$ git clone https://github.com/stanaka/mod_dosdetector.git
$ cd mod_dosdetector/

# Makefile をUbuntu で動作するように修正
$ emacs Makefile
# 7‐8 ⾏⽬を以下のように修正
# ここから
# APXS=/usr/sbin/apxs
# APACHECTL=apachectl
APXS=/usr/bin/apxs2
APACHECTL=apache2ctl
# ここまで

$ sudo make install


# Apache2 の設定
# mod_rewrite の有効化
$ sudo a2enmod rewrite      # できない...

$ service httpd restart     # ないって⾔われた...
$ service apache2 restart
$ sudo a2enmod rewrite      # でokだった.


$ sudo /etc/init.d/apache2 restart

$ cat /etc/apache2/mods-available/rewrite.load
# ↓結果
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so


$ cd /etc/apache2/
$ sudo emacs apache2.conf
# 最終行以降に以下を追記
# ここから

    # 使うならオンにしましょう
    DoSDetection on
    # DoS 攻撃判定をする為の計測時間
    DoSPeriod 1
    # DoSPeriod の間にDoS 攻撃の嫌疑をかけるアクセスカウント(ちなみにこれを突破したら変数SuspectDoS が1 になる)
    DoSThreshold 10
    # DoSPeriod の間にDoS 攻撃と確定するアクセスカウント(変数SuspectHardDoSが1 になる)
    DoSHardThreshold 10
    # DoS 攻撃認定されてから解除までの時間(秒)
    DoSBanPeriod 60
    # このモジュールが⼀部使うメモリの名前?よく分からん
    DoSShmemName dosshm
    # 嫌疑をかけるIP の保存数
    DoSTableSize 100
    # X‐Forwarded‐For header をIP として扱うかどうかのチェック
    DoSForwarded on
    # 無視リスト。ここではjs とcss と画像全部
    DoSIgnoreContentType (image/|text/css|text/javascript)

# ここまで

$ cd sites‐available/
$ sudo emacs 000‐default.conf
# < VirtualHost *:80>に以下を追加
    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]
# ここまで


$ sudo /etc/init.d/apache2 restart

3.過去の設定の問題

」の「」で陥ったように,この設定だと,除外しているはずのクローラーやLANからのアクセスもDoSと判定し,ブロックしてしまう.

4.設定の修正

えっと,結論がすごくアホらしかったです.

単に,RewriteCond{}が全角になってただけでした....半角に直しましょう.

まあ,これを気に,rewriteについておさらいできたので良しとしましょうか....

たとえば,

RewriteCond[OR]は,[AND]よりも優先順位が高い,とか.

5.参考サイト

情シスハック. mod_dosdetector でDoS対策. Retrieved August 7, 2017, from http://success.tracpath.com/blog/2009/11/18/mod_dosdetector-でdos対策/
Yura YuLife. UbuntuのApacheにmod_dosdetectorをインストール. Retrieved August 7, 2017, from http://yura2.hateblo.jp/entry/2015/10/06/UbuntuのApacheにmod_dosdetectorをインストール
あぱーブログ. Apache 2.4 の DoS攻撃対策 mod_dosdetector 設定メモ. Retrieved August 7, 2017, from https://blog.apar.jp/linux/7407/
Qiita. Apache2 Debian conf どこになにを置けばいいのか. Retrieved August 7, 2017, from http://qiita.com/hikachan/items/3801c8f1c088817d6d53
よちよち歩きのLinux. Debian Apache2の設定(1). Retrieved August 7, 2017, from http://www.linux.net-japan.info/install08.html

関連記事

コメントを投稿

名前

Email (※公開されることはありません)

コメント