Snoopy Loggerでコマンドの実行ログをSyslogで残す

以前、ログイン時に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」で行える。 設定内容については、こちらを参考にしてもらいたい。