Top過去ログ目次掲示板

作成日:2005年05月07日 作成:おやじ
掲示板で過去に質問された内容です。

No.4615 Swatch


No.4615 投稿時間:2005年05月07日(Sat) 23:36 投稿者名:瀬戸っぷ URL:
タイトル:Swatch

ずっとROMってました。
書き込みは久しぶりです。

コンテンツにSwatchが追加されたようで。
ウチの自宅サーバでは外部からのSSH接続(公開鍵方式のみ)も
稼働していて、SSHスキャンでの試行が以前からありました。
LogWatchのレポートが大きくなるのでおやじさんの方法と同じく、
Swatchでのログ監視&iptablesでのブロックを実行しています。

というコトで設定例です。
監視対象は/var/log/secureです。
watchfor /Did not receive identification string from (\d+\.\d+\.\d+\.\d+)$/
exec /etc/swatch/ssh-block $1 SSH_Protocol_1

watchfor /Invalid user (\S+) from (\d+\.\d+\.\d+\.\d+)$/
exec /etc/swatch/ssh-block $2 Invalid_user $1

ssh-blockは自作のスクリプトで、やっているコトはおやじさんの
hacker.cgiと似た感じで
引数で受け取ったIPアドレスをrejectするように…。
相手はプログラムかスクリプトでスキャンしているようなので、
連続で反応してしまうのを防ぐためにiptablesに登録済みか調べています。(ついでに初回登録時にBeep鳴らしてみたり)
24時間稼働ではないのでiptablesからの削除は考慮していないです。

#!/usr/bin/perl

if (@ARGV < 2) {
exit;
}

$SrcAddr = $ARGV[0];
$iptables = "/sbin/iptables";
$ChianName = "SSH-REJECT";
$PortNo = "22";

$regist = system("$iptables --list $ChianName -n | grep -q $SrcAddr");
if ($regist != 0) {
use Swatch::Actions;
ring_bell(1,1,1);

system("$iptables -I $ChianName -s $SrcAddr/32 -p tcp -m tcp --dport $PortNo -j REJECT");
}


No.4616 投稿時間:2005年05月08日(Sun) 08:56 投稿者名:おやじ URL:http://http://www.aconus.com/~oyaji/
タイトル:少しショックを受けてます。

> コンテンツにSwatchが追加されたようで。
> ウチの自宅サーバでは外部からのSSH接続(公開鍵方式のみ)も
> 稼働していて、SSHスキャンでの試行が以前からありました。
> LogWatchのレポートが大きくなるのでおやじさんの方法と同じく、
> Swatchでのログ監視&iptablesでのブロックを実行しています。
>
> というコトで設定例です。
> 監視対象は/var/log/secureです。
> watchfor /Did not receive identification string from (\d+\.\d+\.\d+\.\d+)$/
> exec /etc/swatch/ssh-block $1 SSH_Protocol_1
>
> watchfor /Invalid user (\S+) from (\d+\.\d+\.\d+\.\d+)$/
> exec /etc/swatch/ssh-block $2 Invalid_user $1
>
> ssh-blockは自作のスクリプトで、やっているコトはおやじさんの
> hacker.cgiと似た感じで
> 引数で受け取ったIPアドレスをrejectするように…。
> 相手はプログラムかスクリプトでスキャンしているようなので、
> 連続で反応してしまうのを防ぐためにiptablesに登録済みか調べています。(ついでに初回登録時にBeep鳴らしてみたり)
> 24時間稼働ではないのでiptablesからの削除は考慮していないです。
>
> #!/usr/bin/perl
>
> if (@ARGV < 2) {
> exit;
> }
>
> $SrcAddr = $ARGV[0];
> $iptables = "/sbin/iptables";
> $ChianName = "SSH-REJECT";
> $PortNo = "22";
>
> $regist = system("$iptables --list $ChianName -n | grep -q $SrcAddr");
> if ($regist != 0) {
> use Swatch::Actions;
> ring_bell(1,1,1);
>
> system("$iptables -I $ChianName -s $SrcAddr/32 -p tcp -m tcp --dport $PortNo -j REJECT");
> }

おやじの所はSSHは開けていないのですが、FTPがうるさいのでつけて見ました。
一発でアウトでもよかったのですが外部に身内がいますので猶予を与えてます。
Swatch::Actionsはよいアイデアを見せてもらいました。こういう使い方もありですね。
iptablesが単純なフィルタでしか動作していないなら、Iチェーンでもよかったですね。
いろいろ勉強になります。
ただ、Swatchいれたのはいいのですが、SuSEの起動スクリプトを書いているうちにSuSEではsyslog-ngもオプションでサポートしていることがわかり、昨日Swatchをアップしたので予備機に入れてテストしたら、メールもiptablesの設定も簡単にできてしまいました。
SuSE用の起動スクリプトを書いたりRPMを作ったりしたのはなんだったのかと、少しショックを受けてます。
ただ、syslogdとの差異等、細かいところがわからないのですぐに導入というわけではありませんが、Swatch機能が組み込みなのでいいかもしれません。Swatchの場合、パターン設定はSwatchのみでiptablesの制御スクリプト側は共通化できますが、syslod-ngはマッチング条件を書き、スクリプトは受け取ったログを解析しなければならず、こちらにもマッチングを書かなければならないので、少し面倒くさそうです。メールだけならとても簡単でした。



掲示板▲頁先頭