bashの実行コマンドをsyslogに記録
bash 4.x から bash command historyをsyslog に記録することができるようになりました。
ただしソースをGNUからDLし少々の設定とコンパイルが必要となります。
ソースの取得
wget http://ftp.gnu.org/gnu/bash/bash-4.2.tar.gz
syslogにコマンドを記録するため設定
ref: http://tiswww.case.edu/php/chet/bash/NEWS
l. There is a new configuration option (in config-top.h) that forces bash to
forward all history entries to syslog.
$vi config-top.h
変更前
/* Define if you want each line saved to the history list in bashhist.c:
bash_add_history() to be sent to syslog(). */
/* #define SYSLOG_HISTORY */
#if defined (SYSLOG_HISTORY)
# define SYSLOG_FACILITY LOG_USER
# define SYSLOG_LEVEL LOG_INFO
#endif
変更後
/* Define if you want each line saved to the history list in bashhist.c:
bash_add_history() to be sent to syslog(). */
/* #define SYSLOG_HISTORY */
#define SYSLOG_HISTORY
#if defined (SYSLOG_HISTORY)
# define SYSLOG_FACILITY LOG_USER
# define SYSLOG_LEVEL LOG_INFO
#endif
./configure
make -j2
確認
./bash
tail /var/log/messege
2012-07-24T13:59:43.208391+09:00 hostname bash: HISTORY: PID=15980 UID=0 tail /var/log/messages
しっかりとコマンド履歴が確認できます。
rsyslogなどでcollector へ送信するといつ誰が何を行ったか記録が残るので、ドキュメント作成、調査などいろいろ便利です。