TurboLinuxではafpdに関するログは/var/log/message に出力されます。AppleTalkに関してはルーターでフィルタリングしているため監視の必要はないがAppleTalkログインに関してはローカルユーザーを監視したい、に例えれば、以下のように設定します。
watchfor = /LOGIN/i
mail=root@my_domain.homeip.net
watchfor = /checksum/,/sendmail/,/biff/,/afpd/
ignore
watchfor = /refuse/i
mail=root@my_domain.homeip.net
afpd を含む文字列は、ignore (何もしない)の上に LOGINに関する指定があるので、こちらが先に実行されます。afpdを含む ignoreを指定した文字列に対してLOGINだけはアクションを起こすことになります。
また、ignoreで指定された文字を含む行は、それ以下に指 定された他の文字を見つけても無視する事になります。
このように上から順番に実行されるので優先順位を利用して例外を設けます。
注意
igonoreを複数指定する場合は注意が必要です。複数の行を同時に指定する形式でignoreが使えるのは一カ所限り?のようです。以下のように指定した場合正しく動作しませんでした。
watchfor = /checksum/,/sendmail/,/biff/
ignore
watchfor = /LOGIN/i
mail=root@my_domain.homeip.net
watchfor = /afpd/
ignore
watchfor = /refuse/i
mail=root@my_domain.homeip.net
以下のように、一列に含まれる文字列を指定する場合は、複数ignoreを指定することが可能です。
×正しく動作しない(複数行に渡る設定はNG)
watchfor = /文字/,/文字/,/文字/
ignore
watchfor = /文字/,/文字/
ignore
watchfor = /文字/,/文字/
○正しく動作した(一列に含まれる文字指定ならOK)
watchfor = /文字/,/文字/,/文字/
ignore
watchfor = /(文字|文字|文字|文字|文字)/
ignore
watchfor = /(文字|文字|文字|文字|文字)/
ignore
先ほどのafpdのやり方ではログは、無視した上で採取したいログを指定するやり方でした。注意しなければ、大切なログを無視してしまう可能性があります。特定のログのみを除外する場合を named のログ を例に説明します。
1時間に一度、messageログにこのようなログが書き出されます。
Apr 6 12:35:52 mydomain named[266]: XSTATS 1018064152 1018024552 RR=131 RNXD=15 RFwdR=86 RDupR=0 RFail=0 RFErr=0 RErr=0 RAXFR=0 RLame=0 ROpts=0 SSysQ=35 SAns=483 SFwdQ=61 SDupQ=1 SErr=0 RQ=491 RIQ=0 RFwdQ=61 RDupQ=0 RTCP=0 SFwdR=86 SFail=0 SFErr=0 SNaAns=192 SNXD=264 RUQ=0 RURQ=0 RUXFR=0 RUUpd=0
これはbindが出力しているログで無視して構わないログです。
ここで設定したmassegeログの定義ファイルの"ERR" というキーワードが含まれるので、以下の定義にひかかります。
watchfor = /err/i
mail=root@my_domain.homeip.net
1時間に一度、swatchにより管理者にメールが送信される事になります。非常にうざったいです。本来ならnamedの方でログの出力を止めればそれで良いのですが、下手にログレベルを下げる事はしたくなかったので、swatchに無視してもらうことにします。
namedとXSTATS二つの文字を含む場合は、無視するようにします。
/home/swatch/.swatchrc
watchfor = /LOGIN/i
mail=root@my_domain.homeip.net
watchfor = /checksum/,/sendmail/,/biff/,/afpd/i
ignore
watchfor = /(named|XSTATS)/
ignore
watchfor = /refuse/i
mail=root@my_domain.homeip.net
:
:省略
:
watchfor = /err/i
mail=root@my_domain.homeip.net
watchfor = /err/i の上に
watchfor = /(named|XSTATS)/
ignore
を定義することで文字列に " err " が含まれても、named,XSTATSが含まれるigonerが優先されるため、この文字列に関してはアクションが起こりません。
Linuxにサウンドカードあり、認識して音が出る状態であれば、コマンドを使って任意のサウンドを鳴らすことが出来ます。bellでは愛想がないのでちょっとした警告メッセージを鳴らす方法を紹介します。
.wav .auなどのサウンドファイルを /home/taro/sys-snd に置きターミナルから
音が出なければ
を試します。 音が出ればこのコマンドを設定ファイルに登録します。
watchfor = /refuse/i
mail=root@my_domain.homeip.net
exec=cat /home/taro/sys-snd/atack.wav > /dev/dsp
このように表記すれば、文字列refuseを検知するとroot@my_domain.homeip.netにメールを送り、atack.wavを鳴らして知らせる事ができます。 最初は楽しい?ですが、あまりの不正アクセスの多さにうんざりする事間違いなしです。