Tips記事
» 2001年08月01日 00時00分 UPDATE

IDSで不正アクセスを監視したい〜swatch編〜

[木田佳克,ITmedia]

 IDSとは,Intrusion Detection System(イントリュージョン・ディテクション・システム)の略。不正アクセス監視システム,または侵入検知を行うためのシステム(ソフトウェア)だと捉えればよいだろう。

 日ごろからLinuxをインターネットにつなげて稼動させていると,syslogにさまざまなアクセス状況が記録される。このログを人の目で日々監視し続けるのはかなり酷なことだ。そこで,専用のツールを利用してモニタリングさせると,警告時にさまざまな動作をさせることができる。

 今回は,厳密にいえばIDSとはいえないものの,syslogをリアルタイムに監視して,キーワードとマッチする際に動作を行うツール「swatch」のインストールから設定方法を紹介しよう。ポイントは,「syslogの記録レベル確認」,「Perlモジュールのインストール」,「キーワードファイルの作成」である。

 なお,ダイヤルアップルータを使っている場合には,「ダイヤルアップルータのsyslogをサーバで一元管理させたい」Tipsを参考にして。ログファイルをLinux上に記録させておくのがよいだろう。

現在のsyslog記録レベルを確認

 まず最初に現状のsyslog記録状況を確認する。次のように指定して設定内容を確認しよう。ここでの例で見ておくべきポイントは,「*.info」が「/var/log/messages」に記録されているという点だ。監視するログは,「info」(ファシリティレベル)で記録されている必要がある。swatchで「/var/log/messages」ファイルを監視させるのだ。次のようになっていれば,特に変更する必要はない。

$ cat /etc/syslog.conf

*.info;mail.none;authpriv.none  /var/log/messages

 次のサイトからswatchをダウンロードしよう。2001年8月1日現在,swatch-3.0.2.tar.gzが公開中である。

swatchの入手先
http://www.oit.ucsb.edu/~eta/swatch/

$ wget http://www.oit.ucsb.edu/~eta/swatch/swatch-3.0.2.tar.gz

Perlモジュールのインストール

 ダウンロード後にインストールを試みてもエラーになる可能性がある。swatchはPerlで記述されているプログラムであり,次のようにswatchのメイク時に4つのモジュールがチェックされる。このモジュールの所在が不明な人は,インストールしておけば無難だ。

# perl Makefile.PL
Checking for Time::HiRes 1.12 ... ok
Checking for Date::Calc ... ok
Checking for Date::Parse ... ok
Checking for File::Tail ... ok
Writing Makefile for swatch

 チェックされるPerlモジュールは,CPANから手に入れる。次のモジュール検索ページから探してみよう。今回ダウンロードしたのは,次の4つのモジュールだ。

CPAN
http://search.cpan.org/

File-Tail-0.98.tar.gz
Date-Calc-4.3.tar.gz
TimeDate-1.10.tar.gz
Time-HiRes-01.20.tar.gz

 続いて,それぞれのアーカイブを解いてメイクを行う。同じ操作が続くため,「File::Tail」の操作例を挙げておく。

$ tar zxfv File-Tail-0.98.tar.gz
$ cd File-Tail-0.98
$ perl Makefile.PL  ←./configureではないことに注意
〜前略〜
Looks good
Writing Makefile for File::Tail
$ make
$ make test
〜前略〜
t/10open............ok
t/20tail............ok  ←このように表示されればOK
All tests successful.
〜後略〜
# make install

swatchのインストール

 swatchのインストールに移ろう。アーカイブを解いたディレクトリに移動して,Perlモジュール同様にインストール用のPerlスクリプトを動かす。前述のようにCPANからのモジュールが認識され次のように表示されればOKだ。

# perl Makefile.PL
Checking for Time::HiRes 1.12 ... ok
Checking for Date::Calc ... ok
Checking for Date::Parse ... ok
Checking for File::Tail ... ok
Writing Makefile for swatch

$ make
# make install

# which swatch
/usr/bin/swatch   ←/usr/bin/にインストールされた

キーワードファイルを作成

 最後に,swatchで警告を表示させたりするためのキーワード設定ファイルを作成する。ディレクトリおよびファイル名は任意だが,ここでは「/etc/」ディレクトリ下に次のファイル名で作成した。「watchfor」以下の数行がキーワード設定になる。「/」にはさまれた文字列がキーワードになるが,例えば最上段では「reject」の文字列をログ内に見つけた場合,ビープ音のベルを3回,さらにykida@xx.xxxxxx.jp宛へメール送信を行う。

# cat /etc/.swatchrc

#
watchfor /reject/
bell 3
mail=ykida@xx.xxxxxx.jp

#
watchfor /Rejected/
bell 3
mail=ykida@xx.xxxxxx.jp

#
watchfor /nessus@/
bell 3
mail=ykida@xx.xxxxxx.jp

#
watchfor /unreachab/
bell 3
mail=ykida@xx.xxxxxx.jp

#
watchfor /not allowed/
bell 3
mail=ykida@xx.xxxxxx.jp

#
watchfor /unknown/
bell 3
mail=ykida@xx.xxxxxx.jp

#
watchfor /debug/
bell 3

#
watchfor /peer died/
bell 3

#
watchfor /not connected/
bell 3
mail=ykida@xx.xxxxxx.jp

# Bad connection
watchfor /Connection reset/
bell 3
mail=ykida@xx.xxxxxx.jp

# Bad request
watchfor /Can't|Cannot/
bell 3
mail=ykida@xx.xxxxxx.jp

# Bad request
watchfor /NULL/
bell 3

#
watchfor /Bad|bad/
bell 3

#
watchfor /denied/
bell 3
mail=ykida@xx.xxxxxx.jp

#
watchfor /FAILED|failed|failure|illegal/
bell 3
mail=ykida@xx.xxxxxx.jp

#
watchfor /Broken pipe/
bell 3

#
watchfor /EXT2-fs warning/
bell 3
mail=ykida@xx.xxxxxx.jp

#
watchfor /deny/
bell 3
mail=ykida@xx.xxxxxx.jp

#
watchfor /INVALID|REPEATED|INCOMPLETE/
bell 3
mail=ykida@xx.xxxxxx.jp

# System crashes and halts
watchfor /(panic|halt)/
bell
mail=ykida@xx.xxxxxx.jp

キーワードファイルを指定して実行

 以上の設定でswatchを起動させるには,次のように指定すればよい。デーモンとしてプロセス実行される。

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

 次のようにプロセスが確認できればOKだ。

# ps ax|grep swatch
15486 ?  SW  0:01 [swatch]
15487 ?  S   0:04 perl /root/.swatch_script.15486

こんな警告メールが届く

 ちなみに,以上の設定で監視を行って届く警告メールは次の通り。これはメールリレーを試みようとして弾いたものである。この手のアタック? は何度もリトライしてくるものが多いが,やめてほしいものだ……。

To: ykida@xxxxxx.jp
Subject: Message from Swatch

Jan 29 21:30:39 xxxxx postfix/smtpd[15450]: reject: RCPT from ppp161.as5300-1.advdata.net[63.77.235.161]: 554 <retro345@runbox.com>: Recipient address rejected: Relay access denied; from=<mirage047@partysales.org> to=<retro345@runbox.com>

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ