我正在嘗試在我的 centos 6.x 機器上設定一個強大的審核機制。我嘗試並測試了各種審計工具,例如
- 審計
- 助理
- 普薩克特
但沒有一個能完全滿足我的要求。我的要求非常簡單,我知道一種審核系統無法滿足所有人的需求,我可能必須同時使用不同的審核系統。我想要
- 監控使用者執行的所有命令
psacct 做得很完美,但它只告訴使用者執行的命令,而不告訴傳遞給命令的參數。即如果使用者運行vim /erc/passwd
,則lastcomm <username>
只會告訴 vim 命令已運行,但不會告訴實際編輯了哪個檔案。
auditd 會告訴您,例如 vim 命令已執行且特定檔案已編輯,但不告訴誰編輯了該檔案。
假設我以 sudo 用戶身份運行命令,那麼如果有 10 個 sudo 用戶,它不會告訴我哪個用戶編輯了特定文件,因為命令輸出中的 gid 和 uid 將是超級用戶:
time->Sat Jun 20 15:52:45 2015
type=PATH msg=audit(1434795765.057:54685): item=4 name="/etc/passwd" inode=152790 dev=fd:00 mode=0100644 ouid=0 ogid=0 rdev=00:00 nametype=CREATE
type=PATH msg=audit(1434795765.057:54685): item=3 name="/etc/passwd" inode=152786 dev=fd:00 mode=0100644 ouid=0 ogid=0 rdev=00:00 nametype=DELETE
type=PATH msg=audit(1434795765.057:54685): item=2 name="/etc/passwd+" inode=152790 dev=fd:00 mode=0100644 ouid=0 ogid=0 rdev=00:00 nametype=DELETE
type=PATH msg=audit(1434795765.057:54685): item=1 name="/etc/" inode=130562 dev=fd:00 mode=040755 ouid=0 ogid=0 rdev=00:00 nametype=PARENT
type=PATH msg=audit(1434795765.057:54685): item=0 name="/etc/" inode=130562 dev=fd:00 mode=040755 ouid=0 ogid=0 rdev=00:00 nametype=PARENT
type=CWD msg=audit(1434795765.057:54685): cwd="/etc"
type=SYSCALL msg=audit(1434795765.057:54685): arch=c000003e syscall=82 success=yes exit=0 a0=7fffba897300 a1=7fd7cc94ece0 a2=7fffba8971c0 a3=0 items=5 ppid=14041 pid=14043 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts1 ses=8494 comm="useradd" exe="/usr/sbin/useradd" key=(null)
- 想要追蹤文件所做的實際更改
aide工具告訴我們一個文件被修改了,但是如何知道實際修改的內容以及哪個使用者進行了修改呢?
答案1
您可以使用auditd 和pam 模組來實現這一點。您需要pam_tty_audit
在會話下載入 pam 模組,例如
session required pam_tty_audit.so disable=testuser1 enable=testuser,root
在/etc/pam.d/password-auth
和/etc/pam.d/system-auth
文件中。
然後啟用使用者的擊鍵將被記錄到審核日誌中。
產生審核報告時,使用 -i 選項和 aureport 來準確取得使用者名稱。
例如:aureport --tty -i -ts today
此方法的一個缺點是所有擊鍵都會被記錄,包括在終端機中輸入的密碼。
可以使用助手來追蹤文件更改。這使用了校驗和驗證方法。但文件中更改的確切行是無法追蹤的。