Webサーバが貧弱すぎて、単純なDoS攻撃(F5アタック)でもダメージを受けることがわかりましたので、mod_dosdetecterを使った、連続アクセス防止対策を入れてみました。
1. apxをインストール
サブのhttpdはiusリポジトリから入れているので、apxが含まれるhttpd-develもiusからインストールします。
# yum --disablerepo=base,extras,updates --enablerepo=ius -y install httpd-devel
2. mod_dosdetector.so のインストール
apxのパスがデフォルトと違うので、Makefileを修正してからインストールします。
# cd /usr/local/src/ # git clone https://github.com/stanaka/mod_dosdetector.git # cd mod_dosdetector/ # vi Makefile ------------------------------------- . . # the used tools #APXS=/usr/sbin/apxs APXS=/bin/apxs . . ------------------------------------- :wq
# make install
3. mod_dosdetector.so のロード
httpd.confを修正して、mod_dosdetector.soをロードします。
# vi /usr/local/httpd2/conf/httpd.conf ------------------------------------- . . LoadModule dosdetector_module /usr/lib64/httpd/modules/mod_dosdetector.so . . ------------------------------------ :wq
4. DoS対策するバーチャルホスト設定
DoS対策するバーチャルホスト内に、dosdetectorの設定を追記します。
# vi /usr/local/httpd2/conf/extra/httpd-vhost-https.conf ------------------------------------- <IfModule mod_ssl.c> <VirtualHost *:443> . . . # for dosdetector DoSDetection on DoSPeriod 10 DoSThreshold 30 DoSBanPeriod 60 DoSTableSize 100 RewriteEngine On RewriteCond %{ENV:SuspectDoS} =1 RewriteRule .* - [R=503,L] ErrorDocument 503 "<h1>Sorry, ji0vwl.net is busy.. Please access later.</h1>" </VirtualHost> </IfModule> ------------------------------------ :wq
# systemctl reload httpd2