Swatchでログ監視する


Swatch はログを監視して特定のログが吐きだされたらメールやポケベルに 連絡をいれることができるPerlスクリプトです。

http://www.engr.ucsb.edu/~eta/swatch

swatch-3.x からCPANのPerlモジュールも利用しているのでこれらのパッケージ が必要です。RedHat RawHide にもあるのでそれを利用するのがいいでしょう。
インストールはRPMでやれば簡単だし、ソースからインストールしても大した作業 ではないのでここでは割愛させて頂く。

だって本当に欲しいのはインストール方法でなくて設定のメモなんだもの♪。

1つのログを追うのに1つのSwatchを起動する必要がある。
今回は /var/log/messages と /var/log/secure を追うことにしよう。

基本的に設定ファイルは正規表現によりログから特定のものをつかむ。

★/var/log/secure を追う★
            #
            # Personal Swatch configuration file for Security.
            #  for RedHat Linux 6.2 and Swatch 3.0.1
            #
            # written by < ryosuke@cool.email.ne.jp >
            #       
            
            # tcp_wrapper で telnet を禁止しているネットワークからアクセス
            # して拒絶されたことを教える。
            watchfor = /in.telnetd\[[0-9].*\]: refused/
                echo
                mail=ryosuke@cool.email.ne.jp

            # tcp_wrapper で ftp を禁止しているネットワークからアクセス
            # して拒絶されたことを教える。
            watchfor = /in.ftpd\[[0-9].*\]: refused/
                echo
                mail=ryosuke@cool.email.ne.jp

            # tcp_wrapper で finger を禁止しているネットワークからアクセス
            # して拒絶されたことを教える。
            watchfor = /in.fingerd\[[0-9].*\]: refused/
                echo
                mail=ryosuke@cool.email.ne.jp

            # tcp_wrapper で rsh を禁止しているネットワークからアクセス
            # して拒絶されたことを教える。
            watchfor = /in.rshd\[[0-9].*\]: refused/
                echo
                mail=ryosuke@cool.email.ne.jp

            # tcp_wrapper で talk を禁止しているネットワークからアクセス
            # して拒絶されたことを教える。
            watchfor = /in.ntalkd\[[0-9].*\]: refused/
                echo
                mail=ryosuke@cool.email.ne.jp
            
★/var/log/messages を追う★
            #
            # Personal Swatch configuration file
            #  for RedHat Linux 6.2J and Swatch 3.0.1
            #
            # written by < ryosuke@cool.email.ne.jp >
            #       
            
            # コンソールから root でログインに失敗した。
            # 最初から root で入らずに一般ユーザで利用しましょう。
            watchfor = /root for login service/
                echo
                mail=ryosuke@cool.email.ne.jp

            # su が失敗した。
            # 管理者が失敗したならわかるけど知らないところでやられては
            # 困ります。
            watchfor = /root su login service/
                echo
                mail=ryosuke@cool.email.ne.jp

            # はなしかけてくるなってーの。
            watchfor = /talkd\[[0-9.*].*\]: refused/
                echo
                mail=rysouke@cool.email.ne.jp

            # 3回もログイン失敗してるってパスワード忘れたか、確信犯?
            watchfor = /FAILED LOGIN 3/
                echo
                mail=ryosuke@cool.email.ne.jp
            
Swatch のバージョン2以前はログローテート機能を持つUNIXシステムには向いて いない、ローテートされると Swatch が見ていたファイルがバックアップしたファ イルに移るからだ。

ローテート前ローテート後
/var/log/messages <- swatch
/var/log/messages.1
/var/log/messages
/var/log/messages.1 <- swatch
/var/log/messages.2

Swatchをアップデートするのが一番楽だが cron でローテートするタイミングで 再起動させてやる手段もある。

/etc/rc.d/init.d/swatch

この rcスクリプトを使ってSwatchをローテートのタイミングで再起動させる。


[UNIX/Linuxエンジニアへの道] [DEER N' HORSEトップページ]
Copyright DEER N' HORSE 1993-2001 All right reserved.
ryosuke@cool.email.ne.jp
Last modified: Sat Jul 28 16:24:46 JST 2001