2006年03月10日
limitipconnを仕込む
キューバ方面からHTTPポートを占有してチンタラダウンロードする無作法なダウンローダが。ほかのアクセスに大いに支障を来たしていたので、とりあえずREJECTしつつ、対策を考える。
とりあえず一番簡単そうなのは、やはりIP単位のリクエスト数を絞ることだろうか。壁の中だったりすると問題があるかもしれないけど、皆で大きなダウンロードをしようというのでもない限りはまぁ大丈夫だろう。
Sargeのapache2にちょうど良さそうなものをうろうろした結果、mod_limitipconを使うことにした。残念ながらdebはまだない。
- tar.gzをダウンロードする。
- 実働環境で作ってもいいけど、-devがいろいろ入るのはナニな気がするので、とりあえず別マシンのsarge pbuilder環境で構築することにした。
- pbuidler環境でapt-get build-dep libapache2-mod-security のようにして、とりあえずApache2モジュール構築を作る。
- tar.gzを展開し、Makefile内をapxs→apxs2にしておく。
- makeを実行し、モジュールを作成する。さらにmake installを実行して、pbuilder環境内にインストールする。
- pbuilder環境内の/usr/lib/apache2/modules/mod_limitipconn.soを実環境にコピーする。
- 次のような/etc/apache2/mod-available/limitipconn.loadファイルを作成する。
LoadModule limitipconn_module /usr/lib/apache2/modules/mod_limitipconn.so ExtendedStatus On
- a2enmod limitipconnを実行して有効にする。
- 制限をかけるように設定する(とりあえず全体にかけることにした)。
<IfModule mod_limitipconn.c> <Location /> MaxConnPerIP 3 NoIPLimit image/* </Location> </IfModule> - /etc/init.d/apache2 restartで再始動。
- wget -O /dev/null でかいファイル &を数回やってサービスを拒否されることを確認。/var/log/apache2/error.logにも記録される。
![[hatena]](http://d.hatena.ne.jp/images/b_entry_de.gif)
![[RSS]](/d/rss10.png)