MENU

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

CATEGORY

大学 (85) 航空宇宙 (55) 写真 (25) 旅行 (14) 飯・酒 (11) コンピュータ (88) その他 (13)

TAG

ARCHIVE

2018 (92) 2017 (80) 2016 (0)

RECENT

【駅メモ】4年目に突入して,ようやく3000駅突破 【WebRTC】Raspberry Pi搭載ロボットをWebRTCで遠隔操作しようとして失敗した 【航空宇宙】航空宇宙アドベントカレンダー 始まります! 【Perl】YAPC::Tokyo 2019 のチケットを確保しました! 【カメラ】Canonから富士フイルムに乗り換えました

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

2017-08-07

だいぶ前に設定した,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.関連記事

6.参考サイト

情シスハック. 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 (※公開されることはありません)

コメント