次のページへswatchによるログの常時監視ログを監視して、特定の文字列が出力されると管理者へ知らせるツールとして「swatch」があります。syslogdのマニュアルには「異常なログをメールで送信するようでは手遅れである」と書かれていますが、実際問題としては対応が遅れることになってもメールで異常を確認できる方が良い環境もあると思われます。ログをリアルタイムで監視しているため、不正アクセスされてローカルのログの改ざんが行われた際も、swatchが起動していれば必要な情報を転送しておくことなどが可能です。このように、swatchを使えばセキュリティと運用面で有効な仕組みを作ることができます。swatchのインストールswatchの最新のバージョンは3.0.4です(2002年11月2日現在)。http://www.oit.ucsb.edu/~eta/swatch/からswatch-3.0.4.tar.gzファイルをダウンロードします。http://www.oit.ucsb.edu/~eta/swatch/swatch-3.0.4.tar.gzまた、swatchはPerlで記述されたプログラムであり、Perl5(注)のほかに、Date::CalcDate::ParseFile::TailTime::HiResの4つのモジュールが必要です。CPANのサイト(Perlのフリーモジュールがダウンロードできる)http://search.cpan.org/から上記の4モジュールをダウンロードします。上記サイトにアクセスすると、トップページが検索画面になっています。各モジュールを検索してダウンロードします。注:Perl(Perl5)はすでにインストール済みという前提で進めます。2002年11月現在の最新モジュールファイルは以下になります。http://search.cpan.org/CPAN/authors/id/S/ST/STBEY/Date-Calc-5.3.tar.gzhttp://search.cpan.org/CPAN/authors/id/G/GB/GBARR/TimeDate-1.1301.tar.gzhttp://search.cpan.org/CPAN/authors/id/M/MG/MGRABNAR/File-Tail-0.98.tar.gzhttp://search.cpan.org/CPAN/authors/id/J/JH/JHI/Time-HiRes-1.37.tar.gzwgetあるいはWebブラウザを利用してダウンロードしましょう。各Perlモジュールのインストール方法は同じです。ここでは、ダウンロードしたファイルを保存したディレクトリを$SOURCEとし、Date::Calcを例に説明します。testで正常にコンパイルが完了していることを確認します。4つのモジュールをインストールしたら、swatchをインストールします。testで正常にコンパイルが完了していることを確認します。swatchの設定swatchの設定ファイルは、デフォルトでは~/.swatchrcです。swatchには設定ファイルのサンプルが含まれているので、このサンプルファイルを規定のディレクトリにコピーしてひな型ファイルとして利用します。サンプルファイルには、$SOURCE/swatch-3.0.4/examples/swatchrc.monitor$SOURCE/swatch-3.0.4/examples/swatchrc.personalの2種類があります。swatchrc.monitorには、サーバへの不正アクセスやハードの発熱、システムのクラッシュや停止、再起動の監視を行うためのサンプル設定が記述されています。swatchrc.personalでは、swatchrc.monitorの内容に加えて、特定プログラムの実行監視とそれ以外のすべてのログをコンソール上に表示する設定が行われています。swatchrc.monitorの内容はおおむねswatchrc.personalにも設定されているため、swatchrc.personalをコピーして編集します。これをホームディレクトリ(注)に「.swatchrc」としてコピーします。~/.swatchrc注:/var/log/ディレクトリ内のログファイルの多くは、root権限でなければ読み込めません。一般ユーザーでもswatchを実行することは可能ですが、監視対象のログファイルに読み取り権限が必要です。ここでは、rootユーザーでswatchを実行しています。設定ファイルで指示する内容は、監視する文字列および文字列発見時の処理方法です。上から下へ、記述された「パターン」にマッチしているかどうかを順番にチェックしていきます。パターンにマッチすると、それに対応する「アクション」を実行して終了します。設定ファイルの書式は以下のようになります。/パターン/アクション1アクション2......1.パターン監視したい文字列を、watchforの後に「/」で挟んで記述します。ここで記述するパターンにはPerlの正規表現を使用することができます。swatchで一般的に使用される正規表現として、「faile|error」などのように「|」で区切ってfaileかerrorをマッチさせるパターン、「[Ll]inux」のように記述してLinuxとlinuxの両方にマッチさせるパターン、任意の1文字を表す「.」を「a.c」のように文字間に記述してaで始まりcで終わる3文字の文字列にマッチさせるパターンがあります。「/faile/,/error/」のように区切ることで、複数のパターンを指定することもできます。パターンの最後に「/faile/i」のように「i」を付ければ、パターンの大文字小文字を区別しなくなります。watchforの代わりにignoreを指定して、特定の文字列を含む行を無視させることも可能です。ignoreはwatchforより上に記述します。2.アクションアクションには、パターンがマッチした場合の処理を記述します。指定できるアクションには、以下のようなものがあります。[modes]ターミナルにメッセージを表示。[N]beep音をN回鳴らす。command指定したコマンドを実行する。コマンドの引数として「$0」を指定すると、表示されるログそのものを意味する。[=address:address:...][,subject=your_text_here]指定されたアドレスにメールを送信する。メールは複数指定できるほか、サブジェクトの指定が可能。command[,keep_open]パイプでコマンドに結果を渡す。hours:minutes:seconds,[use=message|regex]一度検出されたパターンが再度検出された場合、検出を抑えることができる。標準では「use=messges」が指定されており、同じmessagesは検出されない。アクションの種類と機能echoのmodesには、以下のようなものを指定できます。echoに指定できるmodes注:コンソールによっては、表示形式が正常に反映されないものがあります。swatchrc.personalをコピーした.swatchrcを基に、設定ファイルを作成します。使用するプログラムやディストリビューションによって出力されるログは異なりますし、監視すべき内容も変わってきます。ここでは設定例を挙げてみます。Linux専用の記述があります。swatchの起動swatchの設定が終了したら、swatchを実行します。バックグラウンドで動作させるために、「&」を引数に実行します。JSTsshやtelnetなどで、わざと認証に失敗してみましょう。メッセージがコンソールに表示されるのが確認できます。--tail-file=/var/log/messagesのようなオプション指定で実行され、/var/log/messagesファイルを監視します。--tail-file=/var/log/syslogが実行されてmessagesの代わりに/var/log/syslogを監視します。これらのオプションの詳細は、表3を参照してください。