以前、ログイン時にscriptコマンドを実行させて、自動的にターミナルのログを記録させる方法についてを記述した。 今回紹介するSnoopy Loggerは、そのコマンドの実行結果(catで開いた出力内容など)は記録することは出来ないが、どのユーザーがいつ、どのようなコマンドを実行したのかをsyslogで記録指定くれるLoggerだ。
1.インストール
まずはインストールから。 インストール方法は、パッケージ管理ツールからインストールする方法とスクリプトからインストールする方法、ソースからコンパイルする方法がある。 今回は、パッケージ管理ツールからのインストールとスクリプトからのインストールについて紹介する。
Debian/Ubuntuの場合
sudo apt-get install snoopy
RHEL系の場合
yum install --enablerepo=epel snoopy
インストールスクリプトを用いる場合
wget -q -O - https://github.com/a2o/snoopy/raw/master/bin/snoopy-install.sh | sh
2016/07/03 追記
インストールスクリプトのPATH変わってたので記述しておく。
rm -f snoopy-install.sh &&
wget -O snoopy-install.sh https://github.com/a2o/snoopy/raw/install/doc/install/bin/snoopy-install.sh &&
chmod 755 snoopy-install.sh &&
./snoopy-install.sh stable
2.Snoopy Loggerの有効化
上記インストール方法であればすでに実行済のはずなのだが、「/etc/ld.so.preload」というファイルに「libsnoopy.so」というファイルのPATHが記述されている必要がある。 このファイルが存在し、PATHが記述ているならばそのままでいいのだが、もし記述がない場合は以下のコマンドで 追記を行う。
echo $(find /usr /lib -name libsnoopy.so) >> /etc/ld.so.preload
上記コマンド実行後、念のためOSの再起動を行うといいだろう。
reboot
3.ログの確認
さて、それでは実際にログを確認してみよう。 Snoopy Loggerで取得したコマンドの実行ログは、各OSごとに以下のログファイルに出力されている。
- RHEL系⇛/var/log/secure
- Debian/Ubuntu系⇛/var/log/auth.log
- それ以外⇛/var/log/messages
今回は、CentOS 7で確認をしてみる。 以下のようにコマンドを実行する。
tail -F /var/log/secure | grep snoopy
確かに、tail -Fなどのコマンドが記録されている。 コマンドの実行結果までは記録されていないのだが、監査ログとしては有りではないだろうか。
なお、細かい設定については「/etc/snoopy.ini」で行える。 設定内容については、こちらを参考にしてもらいたい。