先週末くらいからしばしばこのサーバが止まりまして、swap_pagerでエラー発生で、強制リブート以外に動かす手段が無くなります。

apacheのログを見てみると、WordPressのログインに連続して関係無いアドレスから連続アクセスがあったりして、まあよくあることだけど攻撃されてるなと。因果関係がはっきりしないのだけど、集中的な攻撃の後、FreeBSDがswap確保に失敗するということもあるようなので、DoS攻撃対策をして様子を見ようと思いました。

ApacheのDos対策モジュールというと、mod_evasiveが有名です。インストール記録もいろんなサイトさんにあるのだけど、実は罠が。Apache2.2までは検索して出てくるサイトさんのやり方でインストールができるのですが、2.4で同じようにするとエラーが出てインストール不可能です。2.Xで使える、と書いてあるのでつい信用して痛い目を見ました。どうも、2.4からApacheのAPI変更があったのがきいているようです。動かすには、ソースコードを何行か変更しなければならないのです。それで、探し回って、修正済みのものがhttp://sites.extremehosting.ca/mod_evasive24/で公開されているのを見つけました。

このファイルをダウンロードしてきて、/usr/local/srcに入れます。
tar zxvf mod_evasive_1.10.1_apache_2.4.tar.gz
で、mod_evasiveというディレクトリに展開されます。mod_evasive24.cが、mod_evasive20.cを置き換えたものになります。変なコードが仕組まれてないか、オリジナルのものとdiffで確認しましたが大丈夫のようです。
ウチでは、apacheは、/usr/local/apache2に入れているので、

cd mod_evasive
/usr/local/apache2/bin/apxs -i -a -c mod_evasive24.c

でインストールが完了します。

一応、インストールするにはapacheにmod_so.cが入ってないといけないので、

/usr/local/apache2/bin/apachectl -l

で確認してから作業します。

インストールが終わると、httpd.confに、

LoadModule evasive20_module modules/mod_evasive24.so

が追加されます。

動かすには、ログファイル出力先を用意します。どこに作ってもいいので、Apacheのログのところに入れることにしました。

mkdir /usr/local/apache2/logs/mod_evasive/
chown nobody:nobody /usr/local/apache2/logs/mod_evasive/

書き込めるようにファイル所有者を変えておきます。

httpd.confに次の内容を追加します。

<IfModule mod_evasive24.c>
DOSHashTableSize 3097
DOSPageCount 3
DOSSiteCount 20
DOSPageInterval 2
DOSSiteInterval 1
DOSBlockingPeriod 3600
# DOSWhitelist 127.0.0.1 テスト後にこれをコメントアウトし、ループバックアドレスは全部許可に。
DOSLogDir "/usr/local/apache2/logs/mod_evasive"
# DOSEmailNotify xxxxx@xxxx.jp ←拒否したIPアドレスをメール送付。
</IfModule>

これが終わったら、./apachectl graceful を実行して設定を反映させます。

./apachectl -M

を実行すれば、モジュールが組み込まれたことを確認できます。

動作確認は添付のPerlスクリプトを使って行います。

cd /usr/local/src/mod_evasive
chmod +x test.pl
/usr/local/src/mod_evasive/test.pl

を実行し、途中まではOKで、途中からForbiddenになれば問題なく動作しています。このテストが棲んだら、httpd.confのループバックアドレスのところのコメントを外し、ループバックについては全て信頼するという設定に変更し、再度、./apachectl graceful を実行します。どこからのアドレスを拒否したかをメールで受け取りたければ、コメントを外して送り先メールアドレスを書き込めばできるようです。うるさそうなのでやってませんが。



Recently:


Comments


Name

Email

ウェブサイト

XHTML: 次のタグが使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

コメント

*