这个问题与我之前的问题有关: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
在 的日志中搜索此 IDausearch -ua <uid>
产生用户发出的所有命令,即使在模拟另一个帐户时也是如此。
令人高兴的是,您请求的信息已经包含在日志中。您要查找的特定字段是
aud
。从联机帮助页auditctl
:例如,这是我使用以下方法生成的大量条目:
-a always,exit -S sethostname -S setdomainname -k system-locale
su -
hostname audit-test.home.private
所以,虽然是的,但日志消息非常冗长,我们可以
auid=1000
在日志消息中清楚地看到,它对应于我的用户帐户的 uid。有关上述示例的更多详细信息以及 auditd 的简要说明,请查看IT 安全社区博主(我)富有想象力的题为A Brief Introduction to Auditd的博客文章。
fuero 提到的
ausearch
命令是一套应用程序的一部分,用于针对这些相当详尽的日志搜索和运行报告。