« swatch でログを監視し煩い host をハジく/VineLinux にて(その1) | メイン | Win2000 でも cygwin ssh のログ監視してIPアドレス指定ブロック »

2005年12月13日

swatch でログを監視し煩い host をハジく/VineLinux にて(その2~4) [ カテゴリ : memo - 自宅サーバ設定(Linux、たまにWindows) ]

結局まとめて書いてしまう。

その2:attack_block.pl
 swatch から呼ぶ奴。 $ARGV[0]に IP Address を入れて swatch から呼ぶ仕様。

その3:attack_block_again.pl
 その1の iptables 設定スクリプトから呼ぶ奴。 attack_block.pl が保存したファイルを読んで、iptables 再設定。

スクリプトの中のパスとかメアドは適当に自分用に書き換えるべし。


その4:については追記にて。

Vine Linux のパッケージではナイので、tarball で落としてきて、
tar zxvf とかで展開して、

$ perl Makefile.PL
$ make
# make install

とかやればとりあえず入る。あ、必要な perl module もあるので、まぁ

http://www.aconus.com/~oyaji/security/swatch.htm

とか参考にしてくれ(爆)


そして設定。
今回は sshd へのアクセスを /var/log/secure で監視するようにしている。

Dec 13 10:12:18 hostname sshd[23718]: Failed password for invalid user distributions from XX.XXX.XXX.X port 40491 ssh2

とかいうのに反応して、 attac_block.pl を実行したい。で、第一パラメータに IP アドレスを渡したい。
/root/.swatchrcあたりに

watchfor /Failed password for.*from (\d+.\d+.\d+.\d+) /
exec "/path/attack_block.pl $1"

と書いてやる。ここで /var/log/secure というのは出てこない。
正規表現は perl のと一緒( swatch が perl で書かれているモノだし)

で、これで swatch を起動すればいいのかというと、そうではない。
logrotate でログをローテーションしてる場合、ローテート後正しく動かないらしいので、
そこで再起動してやるよう、 /etc/logrotate.d/syslog も設定してやる。
うちの場合

/var/log/messages /var/log/secure /var/log/maillog /var/log/sudo.log /var/log/iptables.log {
sharedscripts
postrotate
/etc/rc.d/init.d/swatch restart > /dev/null || true
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
EXT=`date +%Y%m%d`
for f in $1;
do mv $f.1 $f.$EXT;
done
endscript
}
とかってしている。postrotate の後に、swatch の再起動があるのがミソ。
(他はウチの私的設定)

さて、 /etc/rc.d/init.d/swatch なんて気の利いたのは自分で入れてやる必要がある。

http://fstyle.ddo.jp/archives/2005/08/vinelinux-swatc.html

の service に登録、ってヤツをやっておく。
swatchrc のパスに注意。今回は1つだけ設定だが、監視したいログファイルの個数、swatch 起動行が必要。/var/log/secure を見張る設定として、/etc/swatchrc を使う場合は

/usr/bin/swatch -c /etc/swatchrc -t /var/log/secure &

のような設定をする。

あとは、
・chkconfig で再起動時 に 起動されるよう設定
・/sbin/service swatch start で開始


これで、

・krfilter 有効
・swatch が常時 /var/log/secure を監視し、
・secure に Failed password とかいう行が出てきたら、IPアドレスをパラメータに attack_block.pl を実行
・attack_block は IP アドレスごとの Failed password の回数をファイルに保存し、10回目のときに iptables で check_attack ってチェインに禁止ルールを追加し、自分に「追加したよ」ってメールする。
・再起動時とかで、これらを継続的に禁止したい場合は attack_block_again.pl を呼べばよし

という状態。


別の Windows マシンでも同様の設定をしたいところ。
IPアドレスが近いからか、いっつも似た時刻にアタックがくるので、(同時だったり Linux のが先だったり)ホントどうにかしたい。 Vine 側で iptables で DROP するようになったとたん、Windows 側も終わる相手もいれば、対策できてない Windows 側にえんえんログを羅列してくれるところもある。

swatch みたいな event log 監視ツールがあれば、あとは、iptables の変わりに netsh つかえばいいわけだが・・・

投稿者 JK : 2005年12月13日 23:54

トラックバック

このエントリーのトラックバックURL:
http://om.pizzica.to/mt-tb.cgi/40