セキュリティ要件において、表記を実現しないといけないことは多々有り、調査してみると
いろいろな方法が見つかりましたが、Bashが対応していました。

特に、下記のブログが大変参考になります。

bash 4.1はヒストリーをsyslogにも記録する

SUZ-LAB AMI(CentOS6)でも同様のことを行ってみました。

○必要パッケージのインストール

ソースからビルドをするので、gccとmakeが必要です。

# yum -y install gcc
# yum -y install make

○Bashソースのダウンロードと展開

# cd /usr/local/src
# curl -OL http://ftp.gnu.org/gnu/bash/bash-4.2.tar.gz
# tar xvzf bash-4.2.tar.gz
# cd bash-4.2

○config-top.hの修正

/* #define SYSLOG_HISTORY */
#if defined (SYSLOG_HISTORY)
# define SYSLOG_FACILITY LOG_USER
# define SYSLOG_LEVEL LOG_INFO
#endif

ダウンロードと展開を行った時に上記だった部分を下記のように修正します。
(SYSLOG_HISTORYを有効にします。)

/* #define SYSLOG_HISTORY */
#define SYSLOG_HISTORY
#if defined (SYSLOG_HISTORY)
# define SYSLOG_FACILITY LOG_USER
# define SYSLOG_LEVEL LOG_INFO
#endif

○ビルドとインストール

# ./configure
# make
# make install

○ログインシェルの変更

/bin/bashから/usr/local/bin/bashに変更しています。

# vipw
root:x:0:0:root:/root:/usr/local/bin/bash
...

○Syslogの確認

再度ログインして上記の設定を有効にし、Syslogを確認してみると、下記のように実行コマンドに関するログが
出力されていることがわかります。

# /var/log/messages
...
Dec 28 11:44:42 ip-10-0-0-51 -bash: HISTORY: PID=19221 UID=0 ls
Dec 28 11:44:47 ip-10-0-0-51 -bash: HISTORY: PID=19221 UID=0 less /var/log/messages
...

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら