Debian Jessieのsambaでファイルの操作を記録するための設定を実施したのでご報告します。
sambaサーバでは設定でファイルが監視できるんですね。
発端
「共有フォルダのファイルが消えているんですよね…。」
もう何回も聞いたこのセリフ。こうなるとバックアップからデータを復元するしか手がありません。
でも、ファイルを消したのは誰か?は分からなかったんですよね。ファイルを消した人にファイル消さないでくださいね、って伝えなきゃいけないからとりあえず共有フォルダの監視をして誰が消しているのかを特定できるようにしたい、というところから話は始まりました。
ファイルサーバはDebian JessieをOSとするsambaサーバで、ワークグループ環境で利用しています。
構成
構成としては、sambaで収集したログをsyslogに引き渡してログに記録します。
ログを引き受けたsyslogは/var/logの指定されたファイルに書き出します。
早速設定へ
共有フォルダ[share]に設定をいれてくことにします。
/etc/samba/smb.confの共有フォルダを設定している箇所に監査設定を追記します。
----------------------------------------------
[share]
comment = PCData
path = /home/samba/public/share
…以下略、↓ここから
vfs objects = full_audit
full_audit:facility = local1
full_audit:prefix = %m|%I
full_audit:failure = connect
full_audit:success = rmdir pwrite rename unlink
###share###
----------------------------------------------
こんな感じで削除イベントを収集するようにします。
「vfs objects = full_audit」を記述すると、その共有フォルダに対してのアクセスが記録されるようになります。sambaに「このフォルダのアクセスをログ収集しま―す」と教え込むようなイメージ。
「full_audit:facility = local1」でsyslogのファシリティlocal1にそのログデータはひきわたしますよ、ということを意味する設定です。
「full_audit:prefix = %m|%I」でどんな情報を収集してログに書き込むかを指定しています。%mがコンピュータ名、%IがIPアドレスを意味しています。ちなみにデフォルトだとユーザ名&IPアドレスのようです。
「full_audit:failure = connect」で失敗した操作の記録を指定します。connectのみを指定していますのでこのフォルダへの接続が失敗した場合に、そのタイミングで接続失敗ログを記録するようになります。※今のところ、ここは収集しなくてもよいため接続の失敗だけ指定することにしました。
「full_audit:success = rmdir pwrite rename unlink」が最後の一番ポイントになるところです。これは「success」となっているので操作が成功した履歴をログに収集します。
この設定の発端が
「誰かが勝手に共有フォルダのファイルを削除するので、そのアクションを記録する」
という目的があります。その目的を達成するために、以下の条件で操作履歴を収集することにしました。
- rmdir…フォルダ削除
- pwrite…ファイル作成
- rename…ファイル名変更
- unlink…ファイル削除
他にもオプションはあるのですが、今回はあくまでも「ファイル・フォルダを勝手に削除されることを記録する」という目的なので削除系のオプションのみを収集対象とします。
syslogの設定に続きます。
続いてsyslogの設定に入りますが、続きはまた明日に。