Linux 中的審計

Linux 中的審計

我正在嘗試在我的 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

此方法的一個缺點是所有擊鍵都會被記錄,包括在終端機中輸入的密碼。

可以使用助手來追蹤文件更改。這使用了校驗和驗證方法。但文件中更改的確切行是無法追蹤的。

相關內容