はじめに
前編では、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

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}

作成したコマンドに実行権を付与します。
$ 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

作成したコマンドに実行権を付与します。
$ sudo chmod 0755 /etc/rc.d/init.d/swatch
2.動作確認
作成したコマンドを起動し、動作を確認します。
$ sudo /etc/rc.d/init.d/swatch start

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

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

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

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

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



3.自動起動設定
作成した起動コマンドを、自動起動設定します。
$ sudo chkconfig --add swatch $ sudo chkconfig swatch on

まとめ
ここまで、前編、後編の2回に渡って、Swatchの基本的な使い方から本番運用の設定について解説しました。
本記事を参考に、本番システムのリアルタイム監視にチャレンジしてみましょう。
本ブログは、Git / Subversion のクラウド型ホスティングサービス「tracpath(トラックパス)」を提供している株式会社オープングルーヴが運営しています。
開発の効率化をしたい!もっと便利なツールを使いたい!そんなお悩みをtracpathで解決!
「tracpath(トラックパス)」は、企業内の情報システム部門や、ソフトウェア開発・アプリケーション開発チームに対して、開発の効率化を支援し、品質向上を実現します。
さらに、システム運用の効率化・自動化支援サービスも提供しています。
”つくる情熱を支えるサービス”を提供し、まるで専属のインフラエンジニアのように、あなたのチームを支えていきます。


 
	
















No Comments