ユーザ用ツール

サイト用ツール


serverapps:security:operationallog

操作ログ

Scrip

自動でログを取る

~/.bash_profile に以下のように記述

script -q -a -f /var/log/script/`whoami`_script.log

通常は以下のように記述するんだが、前述で動いてる…

P_PROC=`ps aux | grep $PPID | grep sshd | awk '{ print $11 }'`
if [ "$P_PROC" = sshd: ]; then
  script -q -a -f /var/log/script/`whoami`_script.log
  exit
fi

時刻付きでログを取る

SCRIPT_FILE="`whoami`_script.log"
SCRIPT_PATH="/var/log/script"
touch $SCRIPT_PATH/.$SCRIPT_FILE
tail -F $SCRIPT_PATH/.$SCRIPT_FILE | awk --assign awk_var="$USERNAME" '{ print strftime("%Y/%m/%d %H:%M:%S") " " $0 } {system (" ")}' >> $SCRIPT_PATH/$SCRIPT_FILE &
SCRIPT_PROCESS=$!
script -fq $SCRIPT_PATH/.$SCRIPT_FILE
kill $SCRIPT_PROCESS &
rm -f $SCRIPT_PATH/.$SCRIPT_FILE &
exit

時刻とユーザ名付きでログを取る

USERNAME="`whoami`"
SCRIPT_FILE="`whoami`_script.log"
SCRIPT_PATH="/var/log/script"
touch $SCRIPT_PATH/.$SCRIPT_FILE
tail -F $SCRIPT_PATH/.$SCRIPT_FILE | awk --assign awk_var="$USERNAME" '{ print strftime("%Y/%m/%d %H:%M:%S") " " awk_var ": " $0 } {system (" ")}' >> $SCRIPT_PATH/$SCRIPT_FILE &
SCRIPT_PROCESS=$!
script -fq $SCRIPT_PATH/.$SCRIPT_FILE
kill $SCRIPT_PROCESS &
rm -f $SCRIPT_PATH/.$SCRIPT_FILE &
exit

psacct

psacctはバイナリファイルにコマンドの実行ログのみを保存するサービス

記録されるのは何時・誰が・どのコマンドを実行したかという情報に限られ、コマンドのオプションや実行結果は確認することができないが、保存されるlog(/var/account/pacct) の所有者はrootであり、バイナリ形式で保存されるため、簡単に改竄することはできない。

一方、scriptコマンドは入力したコマンドや実行結果をすべて保存するものの、保存したファイルは保護されていない為、
オペレーションログに関する運用要件がある場合、scriptコマンドとpsacctサービスを併用して設定することが望ましい。

参考

serverapps/security/operationallog.txt · 最終更新: 2019/08/05 01:43 by hayashi