雖然 Samba 只會記錄使用者的登錄時間,但透過 VFS 可以將使用者的活動記錄,有效跟進使用者對文件的操作
要使用 VFS 當然要先安裝 VFS 模組
在 terminal 輸入
sudo apt-get install samba-vfs-modules記錄 Samba 使用者的活動,稱為 audit
VFS 提供 full_audit 來記錄使用者活動
以 Linux Mint 17.1 為例
修改 /etc/samba/smb.conf 輸入
sudo vim /etc/samba/smb.conf在 [global] 的位置加入
vfs objects = full_audit full_audit:prefix = [%U:%g@%I] full_audit:success = all full_audit:failure = all full_audit:facility = local7 full_audit:priority = info注意:因為在下發現很多教學網,vfs objects 的 objects ,一些有 s 一些冇 s ,所以在下到 Samba VFS 查證後,確定是有 s
full_audit:prefix 是 Samba audit 的前綴字串,可以是任意字串
根據 Samba 內建定義變數
%U 為使用者名稱
%g 為使用者群組
%I 為 IP 地址
除了在下運用的 3種 內建定義變數可以到 Variable Substitutions @ Samba 尋找
full_audit:success 及 full_audit:failure 分別是使用者存取到 Samba 後的活動,執行動作出現成功或失敗的記錄參巧
all 為記錄任何動作,有全選自然有全不選,為 none
但任何動作都記錄可能對管理員要檢查使用者活動變得困難
因此可能指定某些動作才盡行記錄,例如
pwrite 為使用者上載檔案
rename 為使用者向指定檔案更改檔名
unlink 為使用者向移除指定檔案
同樣還有其他動作可以到 Description @ Samba VFS 尋找
full_audit:facility 為設定嚴重程度,由 0 至 7 ,越小越嚴重
- 緊急級別 (Emergency) ,系統不穩定,有機會導至崩潰
- 警戒級別 (Alert) ,系統開始變得不穩
- 臨界級別 (Critical) ,系統持續發生錯誤
- 錯誤級別 (Error) ,已發生錯誤,但系統仍能進行修復
- 警告級別 (Waning) ,有機會對系統造成問題,需要注意系統運作
- 通知級別 (Notification) ,對系統不具威脅,但需要注意系統有潛在問題
- 資訊級別 (Informational) ,對系統不具威脅,只作資訊傳回處理
- 偵錯級別 (Debugging) ,對系統不具威脅,只作偵錯處理
full_audit:priority 為優先程度,會影響處理的優先次序,以 info < notice < warning < debug < alert ,以 info 等級最低,同樣由閣下自行判斷優先程度
但留意 full_audit:success 及 full_audit:failure 設定為 all 會將所以動作記錄,只是使用者每次登入 Samba 都有 672 個記錄
過量記錄反而會造成不良的管理,因此在下不建議使用 all ,應以每個不同的動作作為記錄
在下建議記錄 full_audit:success 設定為 connect, mkdir, pwrite, rename, rmdir, unlink 一般使用者常用的動作 (設定格式只需要用空格不需要有「,」)
而 full_audit:failure 則為可以設定為 none 不作記錄
完成 Samba 設定後輸入
sudo service smbd restart sudo service rsyslog restart重新啟動 smbd 及 rsyslog 服務,然後登入 Samba 伺服器測試
輸入
cat /var/log/syslog | grep 'smbd_audit'顯示類似
Jan 1 00:00:00 test smbd_audit: test|127.0.0.1|test-server|connect|ok|IPC$ Jan 1 00:00:00 test smbd_audit: test|127.0.0.1|test-server|connect|ok|test的資料表示成功載入 full_audit
但 /var/log/syslog 是整個系統大大小小的資訊都會記錄下來,將 full_audit 的資訊獨記錄,在分析會比較簡單
輸入
sudo vim /etc/rsyslog.d/50-default.conf將 *.*;auth,authpriv.none -/var/log/syslog 修改為 *.*;local6,auth,authpriv.none -/var/log/syslog
並在該行下插入新行為 local6.* /var/log/samba/audit.log
即
#*.*;auth,authpriv.none -/var/log/syslog *.*;local6,auth,authpriv.none -/var/log/syslog local6.* /var/log/samba/audit.log為避免錯誤修改,在下建議使用 # 保留不使用該行,再插入新行
不過由於 full_audit 的操作權並非 root 而是 syslog:adm 因此並不能建立 /var/log/samba/audit.log
必須由管理手動建立,並將修改擁有者,再加上操作權,輸入
file='/var/log/samba/audit.log' sudo touch "${file}" sudo chown syslog:adm "${file}" sudo chmod 0666 "${file}"當登入時 Samba 時, full_audit 的資訊便會記錄在 /var/log/samba/audit.log
Samba 原本不會像現代具有 GUI 的作業設計一般具有「回收」概念
使用者將文件刪除,雖然 full_audit 能翻查使用者的動作,但仍不能將檔案復原
不過 VFS 有提供 recycle 功能,當使用者進行刪除動作,會模擬成「回收」
在 terminal 輸入
sudo vim /etc/samba/smb.conf在 [global] 的位置加入
vfs objects = recycle recycle:repository = /home/%U/.recycle recycle:keeptree = yes recycle:versions = yes recycle:noversions = *.jpg *.png *.gif recycle:minsize = 0 recycle:maxsize = 0同樣在設定後,必須重新起動 Samba 才能接受新配置
recycle:repository 為設定「回收」的路徑位置
recycle:keeptree 為設定是否將「回收」的檔案以樹狀檢視方式類似 fake root 的方式保存
recycle:versions 為設定是否將「回收」的檔案設定回收版本,除了初版,往後的回收版本會以「Copy #n of filename」方式「回收」
recycle:minsize 為設定為當檔案小於設定值時不作回收,0 為不限,以 byte 計算
recycle:maxsize 為設定為當檔案大於設定值時不作回收,0 為不限,以 byte 計算
recycle:noversions 當 recycle:versions 為 yes 時才能生效,列入子集中的檔名不會有回收版本,能使用 ? 或 * 等 wlidcard 字元
還有更多設定可以到 Recycle @ Samba 尋找
但在設定前提,模擬成「回收」的路徑必須具使用者的存取權
假設「回收」的路徑為每個使用者的家目錄,只需要在各使用者建立「回收」路徑,便可以讓相對的使用者進行「回收」
但若果 Samba 允許匿名登錄,若需要讓匿名登錄使用者都能使用「回收」,便需要開放為 0777 的存取權
或建立專有位置,例如建立 recycle 使用者,放置「回收」檔案
沒有留言 :
張貼留言