【2/17】今年は「濃厚」技術トーク!@ITメールセミナー スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷


第4回 サーバのログ監視ツールを使いこなそう

浅野史彦、小川典嗣
アイティーブースト(http://www.itboost.co.jp/
2002/11/12

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::Calc
  • Date::Parse
  • File::Tail
  • Time::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.gz
http://search.cpan.org/CPAN/authors/id/G/GB/GBARR/TimeDate-1.1301.tar.gz
http://search.cpan.org/CPAN/authors/id/M/MG/MGRABNAR/File-Tail-0.98.tar.gz
http://search.cpan.org/CPAN/authors/id/J/JH/JHI/Time-HiRes-1.37.tar.gz

 wgetあるいはWebブラウザを利用してダウンロードしましょう。

 ではインストールです。各Perlモジュールのインストール方法は同じです。ここでは、ダウンロードしたファイルを保存したディレクトリを$SOURCEとし、Date::Calcを例に説明します。

$ tar zxvf $SOURCE/Date-calc-5.3.tar.gz
$ cd $SOURCE/Date-Calc-5.2
$ perl Makefile.PL
$ make
$ make test
$ su
# make install
注:make testで正常にコンパイルが完了していることを確認します。

 4つのモジュールをインストールしたら、swatchをインストールします。

$ tar zxvf $SOURCE/swatch-3.0.4.tar.gz
$ cd $SOURCE/swatch-3.0.4
$ perl Makefile.PL
$ make
$ make test
$ su
# make install
注:make 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」としてコピーします。

# cp $SOURCE/swatch-3.0.4/examples/swatchrc.personal ~/.swatchrc

注:/var/log/ディレクトリ内のログファイルの多くは、root権限でなければ読み込めません。一般ユーザーでもswatchを実行することは可能ですが、監視対象のログファイルに読み取り権限が必要です。ここでは、rootユーザーでswatchを実行しています。

 設定ファイルで指示する内容は、監視する文字列および文字列発見時の処理方法です。上から下へ、記述された「パターン」にマッチしているかどうかを順番にチェックしていきます。パターンにマッチすると、それに対応する「アクション」を実行して終了します。

 設定ファイルの書式は以下のようになります。

watchfor   /パターン/
        アクション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. アクション

      アクションには、パターンがマッチした場合の処理を記述します。指定できるアクションには、以下のようなものがあります。

    アクション
    説明
    echo [modes] ターミナルにメッセージを表示。modesにより表示形式を変更可能
    bell [N] beep音をN回鳴らす。数字を指定しなければ1回
    exec command 指定したコマンドを実行する。コマンドの引数として「$0」を指定すると、表示されるログそのものを意味する。「$N」は、N番目のフィールドの文字列を意味する
    mail [=address:address:…][,subject=your_text_here] 指定されたアドレスにメールを送信する。メールは複数指定できるほか、サブジェクトの指定が可能。アドレスを指定しなければswatchを起動したユーザーに送信される
    pipe command[,keep_open] パイプでコマンドに結果を渡す。keep_openを指定すると異なるパイプが実行されるか、swatchが終了するまでパイプが実行されたままになる
    write [user:user:…] swatchを実行しているサーバにログインしているユーザーに、writeコマンドを使用して結果を送信する
    throttle hours:minutes:seconds,[use=message|regex] 一度検出されたパターンが再度検出された場合、検出を抑えることができる。標準では「use=messges」が指定されており、同じmessagesは検出されない。「use=regex」を指定すると、同じ正規表現の場合は検出されない
    continue 通常は、マッチするパターンが検出されると指定されたアクションが実行されて終了するが、continueが指定されている場合はさらにマッチするパターンの検出が行われる
    quit マッチするパターンを検出するとswatchが終了する
    表1 アクションの種類と機能

     echoのmodesには、以下のようなものを指定できます。

    modes
    説明
    normal 通常の表示
    bold 太字で表示
    underscore 下線で表示
    blink 点滅で表示
    inverse 反転して表示
    [color] black、red、green、yellow、blue、magenta、cyan、whiteの色で表示
    [color_h] black_、red_h、green_h、yellow_h、blue_h、magenta_h、cyan_h、white_hの色で反転
    random 上記のものをランダムに使用
    表2 echoに指定できるmodes
    注:コンソールによっては、表示形式が正常に反映されないものがあります。

 swatchrc.personalをコピーした.swatchrcを基に、設定ファイルを作成します。もちろん、使用するプログラムやディストリビューションによって出力されるログは異なりますし、監視すべき内容も変わってきます。ここでは設定例を挙げてみます。

#login
watchfor   /3 more authentication failures/ ←login認証に3度失敗
    echo ←コンソールに表示
    mail=hoge,subject=swatch_login_log ←hogeあてにメール
#sshd
watchfor   /sshd/ ←ssh接続
    echo
    continue ←チェックを続行(continueを指定しなければここでチェック終了)
watchfor   /sshd.*reject/ ←ssh接続で認証失敗
    bell 3 ←beep音を3回
    write hoge ←メッセージ送信
    mail=hoge,subject=swatch_sshd_log ←hogeあてにメール
#ftpd
watchfor   /ftpd.*authentication failure/ ←FTP接続で認証失敗
    bell
    echo
    mail=hoge,subject=swatch_ftpd_log
#reboot
watchfor   /red hat linux/i ←起動時
    mail=hoge,subject=server_reboot
#fail,err,bad,reject
watchfor /fail|err|badreject/i ←そのほかエラーなど
    echo
注:一部Red Hat Linux専用の記述があります。

swatchの起動

 swatchの設定が終了したら、swatchを実行します。バックグラウンドで動作させるために、「&」を引数に実行します。

# swatch &
*** swatch-3.0.4 (pid:1987) started at 2002年 10月 27日 日曜日 20:58:22 JST

 sshやtelnetなどで、わざと認証に失敗してみましょう。メッセージがコンソールに表示されるのが確認できます。

 今回のように、特にオプションを指定しない場合は、

swatch --config-file=~/.swatchrc --tail-file=/var/log/messages

のようなオプション指定で実行され、/var/log/messagesファイルを監視します。/var/log/messagesファイルが存在しない場合は、

swatch --config-file=~/.swatchrc --tail-file=/var/log/syslog

が実行されてmessagesの代わりに/var/log/syslogを監視します。

 これらのオプションの詳細は、表3を参照してください。

オプション
別オプション
説明
swatchの制御
--config-file=filename -c filename 設定ファイルを指定。デフォルトでは${HOME]}/.swatchrc
--help   swatchの情報を表示
--input-record-separator=regular_expression   改行コードの指定。デフォルトはCR
--restart-time=[+]hh:mm[am|pm} -r [+]hh:mm[am|pm] swatchを再起動する時間をhh:mmで指定する。am/pmを指定しなければ24時間制とみなされる。+を指定した場合は、現在から指定した時間が経過した後に再起動される
--script-dir=/path/to/directory   swatchを起動するとスクリプトファイルが作成される。この際の作成場所を指定。誰もが書き込める/tmpディレクトリなどを指定してはならない
--version -V バージョンを表示する
対象ファイルの設定
--tail-file=filename -t filename 監視対象となるログのファイル名を指定
--read-pipe=command -p command コマンドの実行結果をswatchにパイプする
--examine=filename -f filename 設定ファイルに適合する内容をスキャンする。ファイルの最後まで確認をすると終了する
そのほか
--dump-script[=filename]   デバッグ用のオプション。swatchスクリプトを実行する代わりに、指定したファイルを標準出力に書き出す
表3 swatchのオプション

 一般的なswatchの使用方法は、

# swatch -c [設定ファイル] -t[ログファイル]

です。

 ログファイルはmessagesファイルだけではなく、テキストファイルとして読み出せるものであればどのファイルでも指定できます。複数のログファイルを異なる内容で監視したい場合は、swatchを複数起動します。オプションの指定を変更して、swatchを複数回実行しましょう。

 ~/swatchrcが存在しない状態で、オプションで設定ファイルを指定しなかった場合は、

watchfor /.*/
     echo modes=random

の内容で実行されます。「.*」は、正規表現において「任意の文字が1文字以上連続すること」を意味します。よって、あらゆる行をランダムな形式で表示します。

 システムの起動時にswatchを自動起動させたい場合は、/etc/rc.localなどに以下の行を追記します。

swatch -c /root/.swatchrc -t /var/log/messages &

2/3

Index
Linux管理者への道
 第4回 サーバのログ監視ツールを使いこなそう
  Page 1
ログチェックの前提条件:時間合わせ
  Page 2
swatchによるログの常時監視
 swatchのインストール
 swatchの設定
 swatchの起動
  Page 3
Logwatchによるログの定期チェック
 Logwatchのインストール
 Logwatchの設定
サーバの用途に合ったツール選択を

連載 Linux管理者への道


 Linux Squareフォーラム Linux/システム学習関連記事
連載:Windowsユーザーに教えるLinuxの常識(全12回)
Windowsのセオリーが通用しないLinux。Linux初心者向けに、LinuxというOSの考え方/常識をゼロから伝授!
連載:LFSで作って学ぶLinuxの仕組み(全4回)
管理者(root)は、何をしなければならないのか? 管理に際して検討すべきことは? 管理のための技術とは? など、駆け出し管理者のための考え方や方法論を検討する
連載:Linux管理者への道(全8回)
「Linux From Scratch」というシンプルなLinuxをインストール&環境構築する作業を通して、LinuxがOSとして機能するための仕組みや設定を見直そう
Linux Squareフォーラム全記事インデックス

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します

ホワイトペーパーTechTargetジャパン

Linux Square フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

スキルアップ/キャリアアップ(JOB@IT)



- PR -
- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  企業の仮想化に足りない“発想”とは?
仮想化運用管理のキモは意外なところに!

New!
  操作もマニュアルも分かりやすい!
ユーザー視点で開発されたPC管理ツール

New!
  仮想化すればコストは削減できるか?
仮想化に必要な「3つの視点」を解説する

  セキュリティを知り尽くす上野氏が登壇!
@ITメールソリューションLive! in Tokyo

  運用管理の課題を“2つの観点”から分析
ユーザー満足度の高い「仮想環境」とは?

  世界に通用するストレージの作り方とは?
製品に込めた思いを富士通の開発者に聞く

  OSSで手間も時間も、障害も減った――
「マピオンの事例」オープンソース活用法

  「ノートPCの持ち出し禁止」で大丈夫?
情報漏えいを防ぐ管理手法とインフラは?

  1日の処理を1秒に――MySQLの達人が語る
「コスト削減」できるチューニング

  ドキュメント作成を自動化して、SEの作業
効率を大幅アップ! Visio 2007の魅力

  急速に広がるHyper-Vでのサーバ仮想化
そのベストプラクティスをデルが解説

  @IT主催セミナーで語られた、「担当者に
求められるセキュリティ対策」をレポート

  @IT「Windows 7」 特設サイトオープン!
最新情報・移行ノウハウを公開しています