如何记录用户执行的每个命令?

Sup*_*tik 38 linux user-management

我想监视服务器中所有用户的活动。

即使用户从 vim 等编辑器执行 shell 命令,我也想在日志文件中看到它们。

我已经检查了工具 acct 但它没有列出完整的命令。(如果我错过了一些已经存在的选项,请纠正我)。

我应该使用哪种 Linux 工具来解决这个问题?

Mat*_*Ife 35

将此行添加到负责登录的 pam 配置(它在基于 redhat 的发行版上的系统身份验证)

session    required     pam_tty_audit.so enable=*
Run Code Online (Sandbox Code Playgroud)

要找出做了什么,你可以使用。

ausearch -ts <some_timestamp> -m tty -i
Run Code Online (Sandbox Code Playgroud)

这会产生如下输出:

 type=TTY msg=audit(11/30/2011 15:38:39.178:12763684) : tty pid=32377 uid=root
 auid=matthew major=136 minor=2 comm=bash data=<up>,<ret>
Run Code Online (Sandbox Code Playgroud)

唯一的缺点是可能有点难以阅读,但它比大多数提出的解决方案要好得多,因为理论上它可以用来记录整个会话,全部都没有。

编辑:哦,您可以使用 aureport 生成一个更有帮助的列表。

# aureport --tty
...
12. 11/30/2011 15:50:54 12764042 501 ? 4294967295 bash "d",<^D>
13. 11/30/2011 15:52:30 12764112 501 ? 4294967295 bash "aureport --ty",<ret>
14. 11/30/2011 15:52:31 12764114 501 ? 4294967295 bash <up>,<left>,<left>,"t",<ret>
Run Code Online (Sandbox Code Playgroud)

  • 请注意,值得一提的是,要使上述工作正常运行,需要先启用 `auditd` 守护程序(在我的 CentOS 6.7 安装中默认情况下不是这样)。要启动守护进程,请使用:`service auditd start`,并且要使此更改持久化(重新启动后),请使用 `chkconfig auditd on` 来源:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/ 6/html/Security_Guide/sec-Configuring_PAM_for_Auditing.html 和 https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Security_Guide/sec-starting_the_audit_service.html (3认同)

Vla*_*kov 9

您的问题的最佳解决方案是 Linux 的内置审计系统。使用man 8 auditd或查看此页面以获取更多信息:http : //linux.die.net/man/8/auditd

此外,您可以查看本教程- 虽然它稍微超出了您的问题范围,但它显示了审计系统的工作原理。