前回DoS攻撃対策としてmod_evasiveを導入しました。
今までは攻撃をあまり気にしていませんでしたが
そこそこmod_evasiveが働いているようなので、更に攻撃対策を強化することに。
今回導入するのは、同時接続数を制限してくれるmod_limitipconnというモジュールです。
このモジュールは同一IPからの同時接続数を制限してくれます。
まずは、適当なディレクトリにmod_limitipconnのページからソースをDLしてインストール。
ディレクトリ移動
#cd /usr/local/src
mod_limitipconn-0.23のDL
#wget http://dominia.org/djao/limit/mod_limitipconn-0.23.tar.bz2
解凍
#tar xjvf mod_limitipconn-0.23.tar.bz2
解凍したソースディレクトリに移動
#cd mod_limitipconn-0.23
Apache2用にMakefileを変更
#vi Makefile
7行目のAPXSコマンドをApache2用に変更
※APXSが未インストールの場合は
#apt-get install apache2-prefork-devで先にインストールしてください。
# the used tools APXS=apxs APACHECTL=apachectl
↓ のように書き換え
# the used tools APXS=/usr/bin/apxs2 APACHECTL=apachectl
コンパイル&インストール
#make install
Apacheの設定にモジュールの記述を追加
#vi /etc/apache2/apache2.conf
LoadModule limitipconn_module /usr/lib/apache2/modules/mod_limitipconn.so ExtendedStatus On MaxConnPerIP 3 NoIPLimit image/*
※Locationの設定は複数記述することが出来ます。
また、.httaccessに記述することも可能です。
複数の設定を行うことで、より細かく制限を行う事が出来ます。
上記の設定の意味は、/(httpルート)以下のディレクトリで
同一IPからの同時接続数を3に制限する。
但し、MIMEタイプ image/* は除く、という設定になります。
MaxConnPerIPが3だとサイトによっては少ないかもしれません。
ZIPや大きなファイルなど、回線負荷に関わるものを、MIMEで少なめに指定するのは有効だと思います。
しかし通常のページを3に制限してしまうと、JavaScriptファイルを裏で読んでくれなかったりしますので
ページとして問題が出る場合があります。
その場合は数字を少し大きくしてあげるか、特定のファイルタイプのみカウントの対象(または非対象)にするか
MIMEタイプでカウントの対象外になるようにしましょう。
設定が終わったらconfが正しく設定されたかを確認。
#apache2ctl -M
上記コマンド実行後にlimitipconn_moduleとSyntax OKが表示されれば、設定自体は問題ない事になります。
設定が問題なければ、apacheを再起動
#/etc/init.d/apache2 restart
最後にうまく動作するかテストを行うといいと思います。
※ページによってはうまく読み込めなかったりしますので、テストされる事をお勧めします。
ブラウザを複数開いて、一気にアクセスしてみると簡単にテスト出来ます。