Swatchによるリアルタイムログ監視システムを構築する【後編】

Swatchを用いたログ監視システムの構築(後編)

はじめに

前編では、Swatchの基本的な使い方について、具体例を用いて解説しました。後編は、本番運用のための設定について解説します。

設定ファイルの作成

secureログを監視するための設定を行い、必要な外部コマンドを作成します。

設定する監視機能は、次のとおりです。

  • Swatchの監視ログを/var/log/swatch.logに出力する。
  • suコマンドの認証が失敗した時、マッチしたログを赤色で表示し、vagrantユーザーにメールで送信する。
  • suコマンドの認証が失敗した時、マッチしたログを/var/log/swatch/secure.logにロギングする。
  • sudoコマンドが実行された時、マッチしたログを水色で表示する。
  1. 設定ファイルの作成

    $ sudo mkdir -p /etc/swatch/conf /etc/swatch/script
    $ sudo vi /etc/swatch/conf/secure.conf
    

    設定ファイルを下記のとおり編集します。

    watchfor   /authentication failure/
      echo red
      mail addresses=vagrant,subject="ALERT su: authentication failure"
      pipe "/etc/swatch/script/logging.sh secure"
    watchfor   /sudo:/
      echo cyan
    
    4008-01
  2. ロギングコマンドの作成

    マッチした行をロギングするコマンドを作成します。

    $ sudo vi /etc/swatch/script/logging.sh
    
    #!/bin/sh
    DEST=/var/log/swatch
    NAME=$1
    FILE=${DEST}/${NAME}.log
    
    read BUFFER
    
    touch ${FILE}
    echo "${BUFFER}" >> ${FILE}
    
    4008-02

    作成したコマンドに実行権を付与します。

    $ sudo chmod 0700 /etc/swatch/script/logging.sh
    

自動起動の設定

自動起動のためのSwatch起動コマンドを作成し、動作確認を行った後、自動起動設定を行います。

  1. 起動コマンドの作成

    Swatchをデーモンとして起動するコマンドを作成します。

    sudo vi /etc/rc.d/init.d/swatch
    
    #/bin/sh
    #
    # swatch
    #
    # chkconfig: 2345 90 35
    # description: swatch start/stop script
    #
    . /etc/rc.d/init.d/functions
    
    [ ! -d /var/log/swatch ] && mkdir -p /var/log/swatch
    
    PATH=/bin:/sbin:/usr/bin:/usr/sbin
    
    start() {
      ls /var/run/swatch_*.pid 1> /dev/null 2>&1
      if [ $? -ne 0 ]; then
        echo -n "Starting swatch"
        pno=0
        RET=0
        for conf in /etc/swatch/conf/*.conf
        do
          log=`basename $conf | cut -d\. -f1`
          if [ -f /var/log/$log ]; then
            pno=`expr $pno + 1`
            swatch -c $conf -t /var/log/$log --daemon \
            --pid-file /var/run/swatch_$pno.pid 1>> /var/log/swatch.log 2>& 1
            RET=$?
            [ $RET != 0 ] && return $RET
          fi
        done
        if [ $pno -gt 0 ]; then
          echo
          [ $RET = 0 ] && touch /var/lock/subsys/swatch
        fi
        return $RET
      else
        echo "swatch already started"
      fi
    }
    stop() {
      ls /var/run/swatch_*.pid 1> /dev/null 2>&1
      if [ $? -eq 0 ]; then
        echo -n "Stopping swatch"
        for pid in /var/run/swatch_*.pid
        do
          kill $(cat $pid)
          rm -f $pid
        done
        echo
        rm -f /var/lock/subsys/swatch /tmp/.swatch_script.*
      else
        echo "swatch is not starting"
      fi
    }
    status() {
      ls /var/run/swatch_*.pid 1> /dev/null 2>&1
      if [ $? -eq 0 ]; then
        echo -n "swatch (pid"
        for pid in /var/run/swatch_*.pid
        do
          echo -n " `cat $pid`"
        done
        echo ") is running"
      else
        echo "swatch is stopped"
      fi
    }
    
    case "$1" in
      start)  start;;
      stop)    stop;;
      restart)stop && start;;
      status)  status;;
      *)      echo "Usage: swatch {start|stop|restart|status}" && exit 1;;
    esac
    
    exit $RET
    
    4008-03

    作成したコマンドに実行権を付与します。

    $ sudo chmod 0755 /etc/rc.d/init.d/swatch
    
  2. 動作確認

    作成したコマンドを起動し、動作を確認します。

    $ sudo /etc/rc.d/init.d/swatch start
    
    4008-04

    sudoコマンドを実行し、/var/logフォルダを表示します。

    $ sudo ls /var/log
    
    4008-05

    swatch.logにログが水色で表示されます。

    4008-06

    suコマンドを実行し、rootログインを試みます。

    $ su -
    
    4008-07

    ログインに失敗すると、swatch.logにログが赤色で表示されます。

    4008-08

    また、secure.logには、マッチしたログが表示されます。

    4008-09 4008-10 4008-11
  3. 自動起動設定

    作成した起動コマンドを、自動起動設定します。

    $ sudo chkconfig --add swatch
    $ sudo chkconfig swatch on
    
    4008-12

まとめ

ここまで、前編、後編の2回に渡って、Swatchの基本的な使い方から本番運用の設定について解説しました。 本記事を参考に、本番システムのリアルタイム監視にチャレンジしてみましょう。

Comments are closed.