獲得審核以記錄原始使用者
這個問題與我之前的問題有關:Log all commands run by admins on production servers
管理員通過個人使用者名登錄伺服器,然後執行
sudo -i
成為 root 是公司的政策。執行後sudo -i
,sudo 將創建一個名為 的環境變數SUDO_USER
,其中包含原始使用者的使用者名。是否可以
auditd
在每個命令的日誌中包含此變數?或功能等價物。這是目前的規則集
auditd
:# First rule - delete all -D # Increase the buffers to survive stress events. # Make this bigger for busy systems -b 320 # Log any command run on this system #-a exit,always -F arch=b64 -S execve -a exit,always -F arch=b32 -S execve
如此處所述:
使用
session required pam_loginuid.so
在所有與登錄相關的 PAM 配置文件(不是 su 和 sudo 的配置文件)中,將允許
auditd
在欄位中記錄呼叫使用者的 uidauid
。您可以使用 搜尋
auditd
此 id 的日誌
ausearch -ua <uid>
產生使用者發出的所有命令,即使在模擬另一個帳戶時也是如此。
高興地,您請求的資訊已經包含在日誌中。您要查找的特定欄位是
aud
。從手冊頁auditctl
:auid The original ID the user logged in with. Its an abbreviation of audit uid. Sometimes its referred to as loginuid. Either the user account text or number may be used.
例如,這是我使用以下方法生成的很多條目:
- 添加規則:
-a always,exit -S sethostname -S setdomainname -k system-locale
- 使用我的使用者帳戶登錄系統並通過發出啟動 root shell
su -
- 執行命令:
hostname audit-test.home.private
type=SYSCALL msg=audit(1358306046.744:260):arch=c000003e syscall=170 成功=yes 退出=0 a0=2025010 a1=17 a2=7 a3=18 項=0 ppid=23922 pid=26742 auid=1000 uid= 0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts4 ses=16 comm=“hostname” exe="/usr/bin/hostname" subj=unconfined_u:unconfined_r:unconfined_t :s0-s0:c0.c1023 key=“系統語言環境”
所以,雖然是的,但日誌消息非常冗長,我們可以
auid=1000
在日誌消息中清楚地看到,它對應於我的使用者帳戶的 uid。有關上述範例的更多詳細資訊以及 auditd 的簡要說明,請查看來自IT Security的社區部落客(我)的這篇博文,其標題為 Auditd 簡介。
fuero 提到的
ausearch
命令是一組應用程序的一部分,該應用程序用於針對這些相當詳盡的日誌搜尋和執行報告。