概要
過剰なWebクローラーによりサーバのパフォーマンスが落ちることがあるため、mod_dosdetectorを入れてみます。
mod_dosdetector は、Apache HTTP Server 用のモジュールで、DoS(Denial of Service)攻撃を検出し、対策を講じるためのものです。このモジュールは、特定のIPアドレスからの過剰なリクエストを監視し、しきい値を超えた場合にそのIPアドレスを一時的にブロックすることで、サーバーのリソースを保護します。
Ubuntu 20.04にはこちらを入れましたが、
- ufwとの連携でサーバに負荷がかかる
- 細かい設定が可能
ということで、こっちをUbuntu 24.04に入れてみます。
環境
- Ubuntu 24.04
- Apache 2.4
- Apache2-devがインストールされていることが前提です。
さっくりとした手順
- gitでソースをダウンロードします。
- Makefileを書き換えた上でインストールします。
- 設定ファイルを作成します。
- 設定を有効化し、Apacheを再起動します。
mod_dosdetectorのダウンロード
- ソース格納ディレクトリに移動
cd /usr/local/src && pwd
自分の環境に合わせます。
- git clone
sudo git clone https://github.com/stanaka/mod_dosdetector.git
- 展開したディレクトリに移動
cd mod_dosdetector && pwd
Makefileの書き換えとインストール
- Makefile修正
デフォルトのMakefileは/usr/sbin/apxs
となっているため書き換えます。
sudo sed -i 's|^APXS=.*|APXS=/usr/bin/apxs|' Makefile
- インストール
sudo make install
- インストール確認
cat /etc/apache2/mods-available/dosdetector.load
LoadModule dosdetector_module /usr/lib/apache2/modules/mod_dosdetector.so
と表示されます。
設定ファイル追加
参考: mod_dosdetectorを使ってみましょうよ。~挫折を乗り越え~
sudo tee /etc/apache2/mods-available/dosdetector.conf > /dev/null <<EOF
<IfModule dosdetector_module>
DoSDetection on
DoSPeriod 60
DoSThreshold 5
DoSHardThreshold 10
DoSBanPeriod 60
DoSTableSize 100
DoSIgnoreContentType ^(image/|application/|text/javascript|text/css)
</IfModule>
EOF
- DoSDetection on
- 説明: DoS (Denial of Service) 検出を有効にします。
- DoSPeriod 60
- 説明: DoS攻撃を検出するための監視期間を秒単位で指定します。
- DoSThreshold 5
- 説明: DoS攻撃と見なすリクエストの閾値を指定します。
- DoSHardThreshold 10
- 説明: より厳しい閾値を指定します。
- 60秒間に同一IPアドレスから10回以上のリクエストがあった場合、即座にそのIPアドレスをブロックします。
- DoSBanPeriod 60
- 説明: DoS攻撃と見なされたIPアドレスをブロックする期間を秒単位で指定します。
- DoSTableSize 100
- 説明: DoS検出のために保持するIPアドレスの最大数を指定します。
- DoSIgnoreContentType ^(image/|application/|text/javascript|text/css)
- 説明: DoS検出から除外するコンテンツタイプを正規表現で指定します。
設定有効化とApache再起動
- mod有効化
sudo a2enmod dosdetector
- Webサービス再起動
sudo systemctl restart apache2.service
まずはこれで様子を見てみます。