« すっかり忘れていたライブ情報 | メイン | C3写真集(2002.08.24) »
2005年11月10日
■iptablesのipt_recentモジュールが狂った
[]

うちのサーバではパケットのフィルタのためにiptablesを使っているんですが、こいつが突然狂い始めた。
ipt_recentモジュールを使ってbrute force対策を行っているわけだが、こいつの条件式が正しく動いてくれない。
関連部分を抜粋すると以下のような部分。

IPTABLES="/sbin/iptables"

$IPTABLES -N isbfssh
$IPTABLES -N bfssh

$IPTABLES -A isbfssh -m recent --name badssh --set -j LOG --log-level INFO --log-prefix "iptables SSH REJECT "
$IPTABLES -A isbfssh -j REJECT
$IPTABLES -A bfssh -p tcp --syn -m recent --name badssh --rcheck --seconds 300 -j REJECT
$IPTABLES -A bfssh -p tcp --syn -m recent --name sshconn --rcheck --seconds 60 --hitcount 5 -j isbfssh
$IPTABLES -A bfssh -p tcp --syn -m recent --name sshconn --set

斜字体の部分の判定が正しく行ってくれず、秒数もヒット数も無視して、sshconnに存在するだけで isbfssh に飛びやがる。
/proc/net/ipt_recentをチェックしながら動きを確かめたが、見事に存在するだけで条件一致に見なされる。
試しに、--secondsオプションのみの動作、--hitcountオプションのみの動作を確認してみたが、そのときは正しい動作をする。
つまり、--secondsと--hitcountの併用をするとバグった判定をするということだ。
しかし、それらを併用しないとなると、同じことをやろうとするとチェインのルールの書き方が煩雑になる。
困った。
誰か解決法知りませんか。
iptablesのバージョンは1.3.3-2。
この前apt-get upgradeしたときから狂ったんだろうが。。。原因は何なんだ。(;´Д`)

投稿者 邑波。 : 2005年11月10日 01:21

トラックバック

このエントリーのトラックバックURL:
http://union.waterblue.net/MT/mt-tb.cgi/194

* こちらの記事へのリンクの含まれないトラックバックは受け付けないようになっています。
コメント
コメントしてください




保存しますか?