はじめに
前編では、Swatchの基本的な使い方について、具体例を用いて解説しました。後編は、本番運用のための設定について解説します。
設定ファイルの作成
secureログを監視するための設定を行い、必要な外部コマンドを作成します。
設定する監視機能は、次のとおりです。
- Swatchの監視ログを/var/log/swatch.logに出力する。
- suコマンドの認証が失敗した時、マッチしたログを赤色で表示し、vagrantユーザーにメールで送信する。
- suコマンドの認証が失敗した時、マッチしたログを/var/log/swatch/secure.logにロギングする。
- sudoコマンドが実行された時、マッチしたログを水色で表示する。
- 設定ファイルの作成
$ 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
- ロギングコマンドの作成
マッチした行をロギングするコマンドを作成します。
$ 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起動コマンドを作成し、動作確認を行った後、自動起動設定を行います。
- 起動コマンドの作成
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
- 動作確認
作成したコマンドを起動し、動作を確認します。
$ sudo /etc/rc.d/init.d/swatch start
sudoコマンドを実行し、/var/logフォルダを表示します。
$ sudo ls /var/log
swatch.logにログが水色で表示されます。
suコマンドを実行し、rootログインを試みます。
$ su -
ログインに失敗すると、swatch.logにログが赤色で表示されます。
また、secure.logには、マッチしたログが表示されます。
- 自動起動設定
作成した起動コマンドを、自動起動設定します。
$ sudo chkconfig --add swatch $ sudo chkconfig swatch on
まとめ
ここまで、前編、後編の2回に渡って、Swatchの基本的な使い方から本番運用の設定について解説しました。 本記事を参考に、本番システムのリアルタイム監視にチャレンジしてみましょう。