ユーザの操作履歴をとる方法

【操作履歴をとる方法】
 
(方法1)historyログを使用

長所:比較的実装が簡単
短所:ユーザが中身を改ざんできてしまう(致命的か、、、)
 
実装する前に確認
・改ざんの可能性をゼロにできないがよいか
・同一ユーザIDに複数人がログインすることがあるか(共有ユーザの有無)
   →ある場合は誰がログインしたかまで記録したほうがよい
   who am i | awk ‘{print $6}’
・コマンドの実行時間まで記録する必要があるか、またUNIXタイムの記載のままでもよいか。
   →AIXでhistoryログにコマンド実行時間の記載の設定をするとUNIXタイムで書き込まれる
    YYYY/MM/DD HH:MM:SSで表示するには、次のコマンドを実行する必要がある。
    fc -t 1 $HISTSIZE
 
(方法2)scriptコマンドを使用
長所:もれなく全操作ログを記録できる
短所:ログの容量が若干大きい
 
(方法3)audit機能を使う?
 
 
【実装方法】
(方法1)history
/etc/profileに以下を記載する。ユーザをスイッチしても誰がいつスイッチしたかログから追える。
 
if tty -s
then
   FROMUSER=$(/usr/bin/who am i | awk ‘{print $1}’)
   TOUSER=$(/usr/bin/whoami | awk ‘{print $1}’)
   TERMINAL=$(/usr/bin/who am i | awk ‘{print $6}’)
   HISTLOGDIR=/var/log/history
   HISTFILE=$HISTLOGDIR/.sh_history.$TERMINAL-$FROMUSER-$TOUSER.date +%Y%m%d%H%M%S
   HISTSIZE=10000    ←デフォルトは128
   EXTENDED_HISTORY=ON  ←コマンド実行時間を記録
   export readonly HISTFILE HISTSIZE EXTENDED_HISTORY  ←変数の上書き禁止
   echo “#” > $HISTFILE
   echo “# $TOUSER LOGIN $(uname -n)_$(date +%m-%d-%Y@%T)” >> $HISTFILE
   echo “#” >> $HISTFILE
fi
 
※ログは増え続けるのでログのメンテナンス処理が必要
※UNIXタイムからの変換が必要なら別途対応が必要
 
(方法2 script)
 要調査
※親プロセスがsshdだったらscriptコマンド実行としないとループする?

スポンサーリンク
勉強wikiの下部広告
  • このエントリーをはてなブックマークに追加
スポンサーリンク
勉強wikiの下部広告

コメントをどうぞ

メールアドレスが公開されることはありません。

CAPTCHA