PHREL
SoftwareDesignの2007年1月号のセキュリティニュースで知ったのですが、面白そうだったのでちょっと試してみました。
PHREL(Per Host RatE Limiter)はトラフィック監視&アクセス制限を自動的に行うツールで、パケットをキャプチャしつつ、iptablesのチェーンを動的に設定・解除する仕組みのようです。アーキテクチャの説明ページに詳しい図があります。
インストール手順はおなじみのconfigure・make・make installです。
$ tar jxf /export/Download\ Files/phrel-0.9.6.tar.bz2 $ cd phrel-0.9.6/ $ ./configure $ make $ su # make install #
配布サイトやSDの紙面では、主にDNSやSSHへの攻撃回避についての説明がなされていますが、今回はHTTPポート(80)に対してphreldを起動してみました。起動オプションは「-h」で確認できます。オプションの意味ですが、とりあえず「30秒間に5回以上のアクセスがあった場合に10秒間遮断する」というものにしてみました。
# phreld -p 80 -A sum -i 30 -D 10 -T 5:0 -X 127.0.0.1 # ps axww | grep phrel 8812 pts/4 SNl 0:00 phreld -p 80 -A sum -i 30 -D 10 -T 5:0 -X 127.0.0.1 8817 pts/4 R+ 0:00 grep phrel # tail -f /var/log/messages Feb 23 00:49:15 ofnir phreld[8812]: phreld v0.9.6 Feb 23 00:49:15 ofnir phreld[8812]: libpcap version 0.8.3 Feb 23 00:49:15 ofnir phreld[8812]: starting to monitor traffic
ここで、ブラウザからガシガシアクセスすると、messageに
Feb 23 00:49:45 ofnir phreld[8812]: changing threshold for 192.168.0.21 from 0 to 5 (pps 152, rate 0, burst 5, decay 10) Feb 23 00:49:45 ofnir phreld[8812]: inserting chain 192.168.0.21-5-8812
と出力され、接続がタイムアウトするようになります。iptablesのチェーンを確認してみると、以下のような感じでDROPされていることが分かります。
# iptables -L 192.168.0.21-5-8812 Chain 192.168.0.21-5-8812 (1 references) target prot opt source destination DROP all -- anywhere anywhere #
しばらく放置しておくと、
Feb 23 00:50:45 ofnir phreld[8812]: changing threshold for 192.168.0.21 from 5 to 0 (pps 1, rate none, burst 0, decay 0) Feb 23 00:50:45 ofnir phreld[8812]: deleting chain 192.168.0.21-5-8812
とmessageに表示され、ブラウザからアクセスできるようになります。当然、iptablesのチェーンが削除された結果なんですが。。。
# iptables -L 192.168.0.21-5-8812 iptables: Table does not exist (do you need to insmod?) #
結構良い感じですね。ちょっと消極的ですが、急激な負荷への対策にもなりそうです。