VineLinux3.x/Apache2.x/同一IPからの同時アクセスを制限する
Last-modified: 2018-02-03 (土) 09:34:03 (2499d)
概要 †
poorなマシンやメモリの少ないマシンで運用している場合、F5によるリロード攻撃を受けるとスワップが大量に発生したりして、数時間反応が返ってこなくなり、結局再起動せざるを得なくなる場合がある。
F5連打によるリロード攻撃対策のために同一IPからの同時アクセスを制限する。
それを行うには、apache2用のモジュール、mod_limitipconn.cをインストールする。
詳しくはこちら、http://dominia.org/djao/limitipconn2.html
設定手順 †
インストール †
上記URLよりtar.gz package をダウンロードする。
# wget http://dominia.org/djao/limit/mod_limitipconn-0.22.tar.gz --01:35:14-- http://dominia.org/djao/limit/mod_limitipconn-0.22.tar.gz => `mod_limitipconn-0.22.tar.gz' dominia.org をDNSに問いあわせています... 18.208.0.43 dominia.org[18.208.0.43]:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 6,333 [application/x-gzip] 100%[==============================================>] 6,333 13.19K/s 01:35:15 (13.18 KB/s) - `mod_limitipconn-0.22.tar.gz' を保存しました [6333/6333]
# tar zxf mod_limitipconn-0.22.tar.gz # cd mod_limitipconn-0.22
ここではDSOとしてインストールします。
Makefileの編集
# vi Makefile
修正
# the used tools APXS=/usr/local/apache2/bin/apxsapache2のapxsの場所を指定
# make install
/usr/local/apache2/modules/mod_limitipconn.so が自動的にインストールされます。
httpd.confの編集 †
# vi /usr/local/apache2/conf/httpd.conf
LoadModule limitipconn_module modules/mod_limitipconn.soが追加されていることを確認する。
その下の辺りに以下を追加。ExtendedStatus On <IfModule mod_limitipconn.c> <Location /> MaxConnPerIP 10 </Location> </IfModule>Location / 以下すべてに対して、MaxConnPerIP 10 で同一IPからの同時接続を10個に制限する。あまり小さい値にすると、同時に沢山のコネクションを張るブラウザや、ブラウザのコネクション数の設定を変更されている場合は画像などが表示されなくなってしまう。
apache2の再起動 †
# /etc/rc.d/init.d/apache2 restart httpdを停止中: [ OK ] httpdを起動中: [ OK ]
動作確認 †
これで、F5を連打しても、
のように、同一IPから同時に10接続以上アクセスするとエラーが出るようになる。