apache mod-evasive のインストールとxmlrpc.phpへのアクセス拒否設定

また海外からdosを食らったのでいい加減対策することにする。

手順

// インストール
yum install mod_evasive
// 設定ファイルで設定値を調整
vi /etc/httpd/conf.d/mod_evasive.conf
// ログフォルダ作成
mkdir /var/log/mod_evasive/
// 権限設定
chown apache. /var/log/mod_evasive/
// 反映
service httpd restart
// テスト用スクリプト(最初から入っている)
perl /usr/share/doc/mod_evasive-1.10.1/test.pl

テスト用スクリプトだとなぜか全て403になった。多分httpd.confの設定が悪いんだろう。

これで大丈夫だと思ってブラウザからF5連打しても何故か403にならない。。ログには出るのだけど。。よくわからんので要調査。

さらに調査したところabコマンドだと403になった。

ab -n 100 -c 10 http://sample.com/index.php

しかし全て403になる訳では無く、途中ちらほら200になったりする。ブロック時間は30秒にしているはずなのに挙動がよくわからん。「-c 1」にしたら全部403になった。
さらに動作確認していたら何故かブラウザのF5連打でもちゃんと403が出るようになった。もう訳ワカメ。考えても良く分からんのでひとまずOKにする。
さらにサイト上で確認したところ、ページ毎にアクセスできたりできなかったりした。もしかすると拒否するのがプロセス単位だからかもしれん。AページはAプロセス、BページはBプロセスで、Aプロセスで拒否されてもBプロセスであれば大丈夫みたいな。多分そんな感じなんだろう。いや、もしかするとキャッシュのせいかもしれん。不確定要素が多すぎるのでこれ以上考えるのを止める。mod-evasiveは気休め程度に思っておいた方がよいのかもしれない。


mod-evasiveはあくまでdos対策なので少し間を置きながらxmlrpc.phpにアクセスしてくるようなアクセスには対処できない。なのでxmlrpcに対するアクセスは全て拒否しておく。

<Files "xmlrpc.php">
 order deny,allow
 deny from all
</Files>

Apache F5攻撃対策 mod_evasiveでDoS攻撃防御 | ITオフィスサポートとシステム開発|システムガーディアン AWSクラウド導入|東京都中央区八丁堀
Apache DoS攻撃にそなえる | Developers.IO