ab’s blog

インフラの呟きです。

REDHAT8 操作履歴を取得 snoopy logger

hahahahahaha

はじめに

snoopy loggerはコマンドの実行履歴をログに保存します。監査が厳しいサーバとかで操作履歴を残したいときに使用。操作ログを残す機能というと他にもauditがありますが、個人的にはsnoopy loggerのほうが見やすいと感じます。ただ、auditにはauditの良さがあるのでsnoopy loggerとどちらかを選ぶということではなく併せて使うのが良いと思っています。

yumでインストール

snoopyは標準リポジトリには無いので、拡張リポジトリ(EPEL)から入れます。

$ su - root
$ dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
$ yum install snoopy
実行例)
 インストール中   : snoopy-compat-2.5.1-1.el8.noarch 
 インストール中   : snoopy-2.5.1-1.el8.x86_64 
 インストール済み:
 snoopy-2.5.1-1.el8.x86_64 
 snoopy-compat-2.5.1-1.el8.noarch

完了しました!

コンフィグ編集

snoopyのコンフィグファイルを編集しますvim /etc/snoopy.ini。 ファイルにログの出力内容「message_format」パラメータを追記します。

message_format = "user=%{username} uid=%{uid} ttyuser=%{tty_username} cmdline=%{cmdline}"

※今回は以下のパラメータがログに残るようにしています。
 {username}:実行ユーザ
 {uid}:ユーザID
 {tty_username}:ログイン時のユーザ
 {cmdline}:実行したコマンド

他にもパラメータがあるので必要なものを適宜追加します。
その他パラメータについては「/etc/snoopy.ini」内に記載あり。

自動起動設定&OSリブート

編集が終わったら、snoopyの自動起動を有効化します。念のためOSも再起動して起動するか確認します。

$ snoopyctl enable(自動起動の有効化)
$ reboot (OS再起動)
$ snoopyctl status (再起動後、ステータス確認)

ステータスが↓のようになっていたらsnoopy起動しています。
/etc/ld.so.preload:            OK - Snoopy is enabled.
LD_PRELOAD environment var:    NOT OK - Not set.
Current process (shared libs): OK - libsnoopy.so is loaded in front of libc.so.6.
Current process (execve addr): OK - execve() symbol address changed, looks like Snoopy is loaded.

動作確認

操作ログが記録されているか見ます。デフォルトだと操作ログは/var/log/secureに記録されます。

$ tail -f /var/log/secure

↓出力例:ユーザ[user1]がrootに昇格したあと「ps -ef」コマンドを実行したときのログ
[時刻] host1 snoopy[3908]: authpriv.info: user=root uid=0 ttyuser=user1 cmdline=ps -ef

以上