#DOS対策手順(mod_evasive)
前提条件
- 検証OS: CentOS7
- アパッチバージョン: httpd24u
- アパッチが既にインストールされていること
#手順
-
対象サーバーにログインして、rootにsu
-
モジュールの確認
# httpd -l
Compiled in modules:
core.c
mod_so.c ←これがあることを確認。ない場合はhttpd24u-develをインストールする
http_core.c
# httpd -M | grep evasive
evasive20_module (shared) ←これがないことを確認。ある場合はすでにDOS対策設定されている可能性高
3.epelからmod_evasiveをインストールする。
# yum install epel-release
# yum install --enablerepo=epel mod_evasive
4.任意のDOS設定を行う。
# vi /etc/httpd/conf.d/mod_evasive
DOSHashTableSize 3097 ←各子プロセスでのハッシュテーブルサイズ。大きくするとパフォーマンス向上するが、メモリを消費する。
DOSPageCount 2 ←同ページへのリクエスト数のしきい値
DOSSiteCount 50 ←同サイトへのリクエスト数のしきい値
DOSPageInterval 1 ←PageCountしきい値の計測間隔(秒)
DOSSiteInterval 1 ←SiteCountしきい値の計測間隔(秒)
DOSBlockingPeriod 10 ←IPアドレスを遮断する時間(秒) 遮断されている時間は403 (Forbidden)を返す。
DOSLogDir "/var/lock/mod_evasive" ←ログの排出先
#DOSWhitelist 127.0.0.1 ←検出対象外とするIPアドレス
5.Apacheの再起動
# systemctl restart httpd
6.モジュールの確認
# httpd -M | grep evasive
evasive20_module (shared) ←これがあることを確認。
7.動作確認
# cd /usr/share/doc/mod_evasive-1.10.1
# chmod +x test.pl
# perl test.pl ←実行結果が「200 OK」から、途中で「403 Forbidden」になれば完了。
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
参考
http://dev.classmethod.jp/cloud/aws/mod_evasive20/
http://www.frontier-line.org/lognote/?p=2884
http://makizou.com/1341/