Swatch の設定ファイルは実行させるユーザーのホームディレクトリに設置します。ここではユーザーswatch を新規に作成し、Swatch を実行する例で説明します。
/home/swatch/.swatchrc
ユーザーtaro で Swatch を走らせる場合は、監視するログファイルに対して、ユーザーtaro に読み込み権限が必要になります。rootユーザーで実行すればその必要はありませんが、セキュリティ上問題なので、taroにログファイルの読込み許可を与えます。
新規に secureグループを作成し、secureグループに所属するユーザーswatchを作成します。rootユーザーで行います。
システムログ messages にsecureグループに対して読み込み許可を与えます。
複数のログを監視する必要がある場合は、同じようにsecure グループに読み込み許可を与えておきます。
ホームディレクトリに設定ファイルを作成します。
適当なエディタで開き設定を行います。
起動オプションなしでswatchを起動した場合のデフォルトの監視ログは、/var/log/message となります。また、デフォルトで参照する定義ファイルは "~/.swatchrc" となります。先に作成した .swatchrc を編集します。
設定例
watchfor = /checksum/,/sendmail/,/biff/,/afpd/
ignore
watchfor = /(panic|halt)/
mail=root@my_domain.homeip.net
bell=4
watchfor = /INVALID|REPEATED|INCOMPLETE/i
mail=root@my_domain.homeip.net
watchfor = /err/i
mail=root@my_domain.homeip.net
watchfor = /warning/i
mail=root@my_domain.homeip.net
watchfor = /denied/i
mail=root@my_domain.homeip.net
watchfor = /fail/i
mail=root@my_domain.homeip.net
watchfor = /Warn/i
mail=root@my_domain.homeip.net
watchfor = /refuse/i
mail=root@my_domain.homeip.net
watchfor = /LOGIN/i
mail=root@my_domain.homeip.net
watchfor = /passwd/i
mail=root@my_domain.homeip.net
watchfor = /telnetd/i
mail=root@my_domain.homeip.net
watchfor = /-root/i
mail=root@my_domain.homeip.net
判定する文字列を改行し、アクションの前にtabを挿入します。
watchfor = /判定する文字列/i
アクション
バージョン2系統と3系統では定義書式が異なるので注意して下さい。ここでは3系統について説明しています。
/~/で判定する行を指定します。i は大文字小文字の区別をしません。
Swatchで指定可能な良く使用するアクションです。
echo=mode
文字列が一致した時に起こすアクションを指定します。一致した場合に書き出すテキストのモードを指定します。tail コマンド等で表示されるテキストモードです。モードには次の5つがあります。
normal | 一致した文字を普通の文字 |
---|---|
bold | 一致した文字をボールドで表示 |
underscore | 一致した文字を下引き線で表示 |
blink | 一致した文字を点滅させる |
inverse | 一致した文字を反転表示 |
bell=N
文字列が一致した場合、ビープ音をならします。N は回数を指定します。
bellとのみ表記したときは1回になります。
例 bell=3
ignore
文字列が一致したとき何もしません。 例えば上記の設定例では最初にこのように設定しています。
watchfor = /checksum/,/sendmail/,/biff/,/afpd/
ignore
watchfor = /refuse/i
mail=root@my_domain.homeip.net
移行省略
1行目の指定で /checksum/,/sendmail/,/biff/,/afpd/ に対し ignore が指定されているので、igonore 以降の watchfor に afpd と refuse を同時に含む文字列を検知した場合、それらを無視します。 つまりアクションを起こしません。
例外を設ける上で重要な役割があります。
exec=コマンド
文字列が一致したときに実行するコマンドを指定します。直接コマンドを記入するか、スクリプトを作成します。
mail=メールアドレス
検出された文字列をメールで送信します。
throttle=時間:分:秒
連続して同じ文字列が検出された場合、指定した時間は無視します。例えば、メールで送信していた場合、大量のメールが配送される事になります。また、ウイルスフィルタなどを導入していた場合、サーバーに高負荷がかかります。
特に不正アクセス、アタックをかけられるとこのような状況に陥ります。以下の例では、検出されてから15秒の間はアクションを起こさなくなります。
例 throttle 00:00:15
Swatchの起動は以下の様にします。ここではswatchユーザーで起動します。
この様にswatchをオプションを付けずに起動した場合は、/var/log/message を /home/swatch/.swatchrc で定義した内容に基づいて処理されます。
複数のログを監視したい場合は、それぞれに定義ファイルを用意する必要があります。次のページで説明します。