Apache 2.4系 DoS攻撃対策 mod_dosdetector 導入
mod_dosdetector について
以前にも同じような記事(DoS攻撃対策 Apacheモジュール mod_dosdetector 導入)DoS攻撃対策を書きましたが、内容的は同じ内容になります。こちらはCentOS 7系のサーバーでApache 2.4系に「mod_dosdetector」を導入した記事となります
mod_dosdetectorは、一定の時間内に同一IPアドレスからリクエスト数の閾値を超えた場合に環境変数に値をセットして、その環境変数を見てmod_rewriteに403, 503 のステータスを返します
mod_dosdetector インストール
GitHubからダウンロードしてインストールをします
$ cd /usr/local/src $ sudo git clone https://github.com/stanaka/mod_dosdetector.git $ cd mod_dosdetector/
apxsのパスの確認して、MakeFileを編集します
$ which apxs /usr/bin/apxs $ sudo vim Makefile APXS=/usr/bin/apxs
make install を実行して、mod_dosdetector をインストールします
$ sudo make install
以上でインストールは終了です。次に設定を行っていきます
mod_dosdetector 設定
Apacheで、「mod_dosdetector.so」をロードして、DoS攻撃の判定をする閾値の設定をおこないます
$ sudo vim /etc/httpd/conf/httpd.conf # mod_dosdetector.soを読み込むように設定します LoadModule dosdetector_module /usr/lib64/httpd/modules/mod_dosdetector.so # 60秒間で100アクセスで環境変数SuspectDoSに1をセット(Dos攻撃の疑いあり) # 60秒間で200アクセスで環境変数SuspectHardDoSに1をセット # 300秒間で対象アドレスを解除 *.js|png|jpe?g|gif|css|ico のファイルは除外対象 <IfModule dosdetector_module> DoSDetection on DoSPeriod 60 DoSThreshold 100 DoSHardThreshold 200 DoSBanPeriod 300 DoSTableSize 100 DoSIgnoreContentType .(js|png|jpe?g|gif|css|ico) </IfModule>
- DoSDetection on・・・mod_dosdetector モジュールを有効にします。
- DoSPeriod(単位:秒)・・・設定した秒数でアクセス数をカウントします。
- DoSThreshold・・・DoSPeriod で設定した秒数で、指定したアクセス数があると、環境変数「SuspectDoS」に 1 がセットされます。
- DoSHardThreshold・・・DoSPeriod で設定した秒数で、指定したアクセス数があると、環境変数に「SuspectHardDoS」に 1 がセットされます。
- DoSBanPeriod(単位:秒)・・・環境変数「SuspectDoS」、「SuspectHardDoS」に 1 がセットされ続ける秒数を指定します。指定した秒数をこえるとDoS攻撃判定が解除されます
- DoSIgnoreContentType・・・DoS攻撃の検出から除外するコンテンツタイプを指定します。
カスタムログ出力設定とDoS攻撃にアクセス制限
mod_dosdetectorでDoS攻撃の判定があったアクセスのログをカスタムログとして出力するようにします。また、DoS攻撃あった場合に「403」、「503」のステータスを返すようにします。
私の環境では、Wordpressを利用しているドメインのバーチャルホストのみに設定するので、VirtuslHostディレクティブに設定しています
下記では、環境変数に「SuspectHardDoS」と設定された場合は、403のステータスを返すようしています。
設定が変更するとApacheの再起動を行います
$ sudo vim /etc/httpd/conf.d/vhosts/example.com <VirtualHost *:443> # dosdetector_module Log LogFormat "%{SuspectHardDoS}e %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" dos_suspect CustomLog "logs/surugaya/dos_suspect_log" dos_suspect env=SuspectDoS # dosdetector_module RewriteEngine On RewriteCond %{ENV:SuspectHardDoS} =1 RewriteCond %{REMOTE_ADDR} !127.0.0.0 RewriteRule .* - [R=403,L] </VirtualHost> $ systemctl restart httpd
ディスカッション
コメント一覧
まだ、コメントがありません