2012年12月28日金曜日

BashのHistoryをSyslogに出力(CentOS6)

スズキです。

セキュリティ要件的に、表記を実現しないといけないことは多々有り、ネットを調べると
いろいろな方法が見つかりましたが、そもそも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
...

あとは、"Fluentd → S3 → Glacier"、... (何回言ってるんだろう...)

RPMにでもしておくか。
--------
http://www.suz-lab.com

0 コメント: