treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

sambaサーバの操作ログ、二系統取得したい

sambaサーバに追加設定を入れたので、その設定内容をご報告します。
以前に取得するように設定したauditlogに関する設定です。

依頼事項

「共有フォルダの中がおかしくなってるんですよね…。」

ある日の午後、こういう話が舞い込んできました。
いやな予感をしつつ、フォルダの場所を聞いてみます。

聞き出したフォルダの場所をバックアップのログから確認してみると、

  1. 数日前にフォルダを移動(たぶん間違えて移動)していて、
  2. 一日そのまま放置されていて、
  3. 当日、削除(多分いままで存在しなかったデータだから、要らないって思ったんだろう)

その数時間後に、この連絡が入ってきました。

とりあえず、バックアップからデータはリストア。
リストア完了後に、

「これね…、誤操作からのリカバリーのために、このフォルダも操作ログ取得しといて」

というわけで、以前

(1/2)Debian Jessieのsambaでファイル監視 - treedown’s Report

(2/2)Debian Jessieのsambaでファイル監視 - treedown’s Report

で設置したauditlogに操作履歴を取得することになりました。

取得方法を考える

取得方法を考えたときに、
「以前の設定で取得しているauditlogと今回取得するauditlogは、別々のファイルになったほうがいいな」
と思いました。
以前のログ設定で監視しているフォルダのユーザと、今回監視するフォルダのユーザはガラッと違っていて、アクセス数もアクセスの時間帯も傾向が違うことがあって、別ファイルとしてログ取得をしたい、と考えました。
あと、以前のログ設定では共有フォルダへログファイルを蓄積し同じ部署の別のユーザがログファイルを閲覧できるようにしていたのもあって、今回取得するログは以前に設定したauditlogと同一にならないほうがよさそうです。

さっそく、別系統の別ファイルに記録されるような設定を実施してみました。

設定する

さっそく設定してみます。
前回と違ってDebian GNU/Linuxのバージョンは8⇒9と変化していますが、やることは同じ。
前回の設定の下に同じような設定をいれていけばいいので、前回は探り探りの設定だったのが、今回は前回の設定をなぞってやれば成功するので気楽に取りかかれます。

まずはsambaの設定、smb.confの対象フォルダの場所に以下の行を追記します。
--------------------------------
/etc/samba/smb.conf
--------------------------------
vfs objects = full_audit
full_audit:facility = local2
full_audit:prefix = %u|%m|%I
full_audit:failure = connect
full_audit:success = rmdir pwrite rename unlink
--------------------------------
前回syslogのlocal1ファシリティを使っていますので、今回は別系統で取得するためにlocal2のファシリティを使うようにしました。
また、前回は「full_audit:prefix = %m|%I」と%mがコンピュータ名、%IがIPアドレスだけを取得するようにしていたのですが、今回は%uを入れてユーザ名も取得するようにしています。

ここまで設定したら、次はsyslog設定、local1の設定行の後ろに、今回のlocal2の設定を追記していきます。
--------------------------------
/etc/rsyslog.conf
--------------------------------

local1.* /var/log/samba/audit.log
local2.* /var/log/samba/audit-share2.log

local1.none;\
local2.none;\
--------------------------------
local2で始まる行が追記対象の行になります。これでsmb.confで設定したログ収集設定がsyslogのlocal2のファシリティに引き渡され、指定した場所のファイル(/var/log/samba/audit-share2.log)に記録されるようになります。

終わったらリスタート
----------------------------------------------
# /etc/init.d/rsyslog restart
[ ok ] Restarting rsyslog (via systemctl): rsyslog.service.
# /etc/init.d/samba restart
[ ok ] Restarting nmbd (via systemctl): nmbd.service.
[ ok ] Restarting smbd (via systemctl): smbd.service.
[ ok ] Restarting samba-ad-dc (via systemctl): samba-ad-dc.service.
----------------------------------------------

設定完了

ログを確認

設定完了後ログを見てみました。
ここまでで、今までのログはaudit.logで変わらず記録されていますし、それとは別に新しく収集するログaudit-share2.logも収集を開始しています。

試しに対象のフォルダに「新しいテキスト ドキュメント.txt」を作成して、test.txtにファイル名を変更したあと、ファイルを開いて上書き保存し、最後にtest.txtを削除したログの記録です。
ユーザ名はuser1でログインしたPC名NotePC-01(IPは192.168.11.24)で共有フォルダを操作した時のログエントリです。
--------------------------------------------------------------
root@filesvr:/etc/samba# tail -f /var/log/samba/audit-share2.log
Aug 23 01:49:25 filesvr smbd_audit: user1|NotePC-01|192.168.11.24|rename|ok|新しいテキスト ドキュメント.txt|test.txt
Aug 23 01:49:32 filesvr smbd_audit: user1|NotePC-01|192.168.11.24|unlink|ok|test.txt
Aug 23 01:49:32 filesvr smbd_audit: user1|NotePC-01|192.168.11.24|pwrite|ok|test.txt
Aug 23 01:50:32 filesvr smbd_audit: user1|NotePC-01|192.168.11.24|unlink|ok|test.txt
--------------------------------------------------------------
一行目で作成したファイルのファイル名をtest.txtにリネームしたことが記録されています。
次にunlink⇒pwriteでファイルを開いて上書きした履歴が記録されています。
最後に削除したtest.txtの記録がされています。

ひとまずこれでログの収集は成功しました。