treedown’s Report

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

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

(2/2)Debian Jessieのsambaでファイル監視

昨日に引き続きsambaサーバのファイル監査設定のご報告です。
昨日はsmb.confまでが完了しました。
今日はsyslogの設定からログの確認までです。

syslog設定

smb.confに引き続いてsyslogも設定します。
Debian Jessieのsyslogは「/etc/rsyslog.conf」で設定します。
このファイルの「#### RULES ####」とあるあたりにそれっぽい設定がありますので設定しちまいましょう。
-----------------------------------------------------
#### RULES ####
###############
#
# First some standard log files. Log by facility.
#
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
#cron.* /var/log/cron.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log

# local facility
local1.* /var/log/samba/audit.log
-----------------------------------------------------
追記したのは
local1.* /var/log/samba/audit.log
です。(※# local facilityはコメント行)

要するにsmb.confに指定したlocal1というファシリティが受け取ったログファイルをどのファイルに書き出すかを指定します。ここでは巷でよくあるファイル名「/var/log/samba/audit.log」を指定しています。

あと、後ろの方に

-----------------------------------------------------
#
# Some "catch-all" log files.
#
*.=debug;\
auth,authpriv.none;\
news.none;mail.none -/var/log/debug
*.=info;*.=notice;*.=warn;\
auth,authpriv.none;\
cron,daemon.none;\
mail,news.none -/var/log/messages
-----------------------------------------------------
こんな感じの記述箇所がありますんで「local1.none;\」を追記します。
-----------------------------------------------------
# Some "catch-all" log files.
#
*.=debug;\
auth,authpriv.none;\
news.none;mail.none -/var/log/debug
*.=info;*.=notice;*.=warn;\
local1.none;\
auth,authpriv.none;\
cron,daemon.none;\
mail,news.none -/var/log/messages
-----------------------------------------------------
この箇所は「/var/log/messages」へログを書き出すのはどの種類か、を指定しているのですが、「local1.none;\」と記述すると、「/var/log/messages」には書き出さなくなります。これでRULESの箇所で指定した「/var/log/samba/audit.log」だけにアクセスログが記録されるようになります。

設定が終わったら一応syslogとsambaをリスタートしておきます。
----------------------------------------------
# /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.
----------------------------------------------

ログを確認

ログ</var/log/samba/audit.log>を見ると、以下のように表記されています。

----------------------------------------------
Jan 8 10:41:32 FILSVR smbd_audit: PC-02|192.168.1.2|pwrite|ok|PCデータ/test.txt
Jan 8 10:41:54 FILSVR smbd_audit: PC-02|192.168.1.2|unlink|ok|PCデータ/test.txt
Jan 8 15:56:02 FILSVR smbd_audit: PC009|192.168.2.18|rename|ok|新しいテキスト ドキュメント.txt|test.txt
Jan 8 15:56:24 FILSVR smbd_audit: PC009|192.168.2.18|pwrite|ok|test.txt
Jan 8 15:56:28 FILSVR smbd_audit: PC009|192.168.2.18|unlink|ok|test.txt
----------------------------------------------

上二行が「PC-02」というコンピュータ名のPC(IPアドレスが192.168.1.2)からShareフォルダ内のPCデータというフォルダ内にtest.txtを作成した(pwrite)履歴が記録されています。作った後に削除(unlink)を実行した記録が残っています。
次の三行が同じように別のPCである「PC009」というコンピュータ名のPC(IPアドレスが192.168.2.18)からアクセスした履歴です。このPCからは「新しいテキストドキュメント.txt」の名前を「test.txt」に変更したログがまずは記録されています。その後にtest.txtを作成して、最後にtest.txtを削除した操作履歴が記録されています。

これでファイルを削除したのは「指定のファイル(見つからないと申告があった)名称と、削除を意味する"unlink"をキーワードとしてログを検索すれば、どのコンピュータから削除の命令が実行されたかを突き止めることは可能になります。

あまりログを取得しすぎると、フォルダを開くだけで大量のログを書き出すことになるので、これくらい絞った方がいいのかもしれません。