Apache1.3~2.xでDoS対策をするためのモジュール「mod_evasive」。
バージョンによりインストール方法が違うので、ファイル同梱のREADMEを参照されたし。
Linux(ここではRedHat系ディストリ)+Apache 2.x系での導入方法は以下の通り。
※その前に、http-develをインストールしておくこと。
1.インストール
・epelレポジトリからインストールする場合
[code language=”bash”]
sudo rpm -Uvh http://ftp.riken.jp/Linux/fedora/epel/epel-release-latest-7.noarch.rpm
sudo yum –enablerepo=epel install mod_evasive
[/code]
・ソースからコンパイルする場合
[code language=”bash”]
wget http://www.zdziarski.com/blog/wp-content/uploads/2010/02/mod_evasive_1.10.1.tar.gz
tar xvzf mod_evasive_1.10.1.tar.gz
cd mod_evasive_1.10.1
#Apache2.4系は「mod_evasive20.c」内の文字列「remote_ip」を「client_ip」に変換してください。
sudo apxs -iac mod_evasive20.c
sudo chmod 755 /usr/lib64/httpd/modules/mod_evasive20.so
[/code]
※ Windows版のDLLライブラリは現在行方不明です(´・ω・`)
2.Apacheのコンフィグにモジュールを追加する
[code language=”bash”]
#sudo vi /etc/httpd/conf/httpd.conf
#Windowsでは「.so」を「.dll」に置換
LoadModule evasive20_module modules/mod_evasive20.so
[/code]
3.コンフィグ作成
[code language=”bash”]
#sudo vi /etc/httpd/conf.d/mod_evasive.conf
DOSHashTableSize 4096
DOSPageCount 3
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 5
DOSBlockingPeriod 30
DOSLogDir /var/log/httpd/mod_evasive
[/code]
※コンフィグ内訳:
[code language=”text”]
DOSHashTableSize → ハッシュテーブルのサイズ
DOSPageCount → 同一ページへのリクエスト数
DOSSiteCount → 同一サイトへのリクエスト数
DOSPageInterval → DOSPageCount値の計測間隔(秒)
DOSSiteInterval → DOSSiteCount値の計測間隔(秒)
DOSBlockingPeriod → アクセス禁止時間(秒)
DOSEmailNotify → メール通知先
DOSSystemCommand → ブラックリストに乗ったときにコマンドを起こす
DOSLogDir → DOSのログ、デフォは/tmp
DOSWhitelist → モジュールから除外するIP。複数指定可
[/code]
以上の設定例では、同一のユーザから
同一ページへ3回以上/1秒のアクセス、またはサイトへ50回以上/5秒のアクセスがあった場合に、30秒間アクセスを弾きます。
その際ユーザへ送られるHTTPリクエストは、403 Forbiddenとなります。
abコマンドで負荷テストをするなりして、いい具合に設定しましょう( ^ヮ^)ノ
4.Apache再起動
[code language=”bash”]
sudo systemctl restart httpd
[/code]
[amazon_link asins=’4774150363′ template=’SupportedAMP’ store=’10yendama-22′ marketplace=’JP’ link_id=’49b64cf9-2724-11e8-b3bf-2344f8a0748c’]
コメント