WEB TECKS - WEBサイト構築知識いろいろ

DOS攻撃対策の為のApache Mod Dosdetector(mod_dosdetector)のインストール設定

更新日:2024-02-23 20:53:03 登録日:2024-02-23 20:38:12

 WEBサーバを運用する場合、DOS攻撃(Denial of Service)と呼ばれる一定数以上のリクエスト(アクセス)がサーバに送信され、サーバに高負荷を掛けられる攻撃に晒される場面があります。DOS攻撃はWEBサーバのシステムやネットワークリソースを意図的に過負荷させ、合法的なユーザーのアクセスを阻害する攻撃手法の一つです。  「Apache Mod Dosdetector」は、Apache HTTP Server用の拡張モジュール(モジュール名: mod_dosdetector)であり、DOS攻撃を検出するためのツールです。

 mod_dosdetectorは、Apacheで構築されたWEBサーバが受信したリクエストのパターンを監視し、異常なアクセスパターンや大量のリクエストを検出することで、DOS攻撃を検知します。具体的には、同一のIPアドレスから短時間に多数のリクエストが送信される、大量の異なるIPアドレスからの同時接続が発生するなどの挙動を検知します。

 mod_dosdetectorは、検知されたDOS攻撃をログに記録したり、攻撃元のIPアドレスを自動的にブラックリストに登録してアクセスをブロックしたりすることができます。これにより、DOS攻撃からサーバーを保護し、サービスの可用性を確保することが可能です。

 Apache Mod Dosdetectorは、Apache HTTP Serverのセキュリティ対策の一部として使用されることがあり、特に大規模なウェブサイトやWebアプリケーションを運用する場合に重要な役割を果たします。
 今回Apache Mod Dosdetector(mod_dosdetector)をインストール設定する手順を記述致します。

[動作確認環境]
Amazon Linux 2
Apache/2.4.57

設定手順

 Tera TermなどのターミナルエミュレーターからWEBサーバにログイン

$ # rootユーザに変更
$ sudo su -
#
# # 必要なパッケージ、ライブラリ・ソフトウェアをインストール
# # Apacheのモジュールを設定するために必要なパッケージインストール
# yum install httpd-devel -y
#
# # プログラミング言語用のコンパイラと関連するツールを含むパッケージインストール
# yum install gcc gcc-c++ make -y
#
# # 分散型のバージョン管理システムインストール
# yum install git -y
#
# # mod_dosdetectorソースコード取得用のディレクトリに移動
# cd /usr/local/src
#
# # mod_dosdetectorソースコード取得
# git clone https://github.com/stanaka/mod_dosdetector.git
#
# # apxs(Apacheのモジュールをインストールするために必要なプログラム)の存在パス位置を確認
# which apxs
/usr/bin/apxs
#
# # mod_dosdetectorインストールディレクトリに移動
# cd /usr/local/src/mod_dosdetector/
#
# # Makefileの[APXS]パス設定を上記で確認したapxsのパスに変更
# vi Makefile
APXS=/usr/bin/apxs
(修正後[Esc]:wq!でviを閉じる)

#
# # mod_dosdetectorのインストール
# make install

 上記実行後、「/etc/httpd/conf/httpd.conf」ファイルに以下が自動的に追記されます。
 (※先頭にコメントアウト「#」が付いている場合は外して下さい。)

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

 さらに「/etc/httpd/conf/httpd.conf」に以下内容を追記修正し、apacheを再起動します。

# vi /etc/httpd/conf/httpd.conf

# 以下を追記する

# Dos検出を有効にする
DoSDetection on

# 判定間隔(秒)
DoSPeriod 5

# このアクセス数を超えるとSuspectDoSと判定される
DoSThreshold 5

# このアクセス数を超えると、SuspectHardDoSと判定される
DoSHardThreshold 10

# この期間アクセスを制限する (秒)
DoSBanPeriod 300

# 判定対象とするIPアドレスの数
DoSTableSize 100

# 判定対象外のContentType
DoSIgnoreContentType image|javascript|css

# URL書き換え(リライト)エンジンを有効化
RewriteEngine On

# 環境変数にSuspectHardDoSに1がセットされたらリライトする(503エラー表示になる)
RewriteCond %{ENV:SuspectHardDoS} =1
RewriteRule ^.*$ - [R=503,L]

# 環境変数にSuspectDoSに1がセットされたらリライトする(403エラー表示になる)
#RewriteCond %{ENV:SuspectDoS} =1
#RewriteRule ^.*$ - [R=403,L]
(修正後[Esc]:wq!でviを閉じる)

#
# #apache再起動
# systemctl restart httpd

 Dosの判定方法には「SuspectDoS」と「SuspectDoS」の二つがあります。
 上記サンプルではSuspectDoS判定のリライト部分は、コメントアウトしておりますが、SuspectHardDoS判定は使用せず、SuspectDoS判定を使用する場合は、SuspectHardDoS側をコメントアウトして、SuspectDoSのコメントアウトは外して下さい。