セキュリティ要件において、表記を実現しないといけないことは多々有り、調査してみると
いろいろな方法が見つかりましたが、Bashが対応していました。
特に、下記のブログが大変参考になります。
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
...