我想监视服务器中所有用户的活动。
即使用户从诸如vim之类的编辑器执行shell命令,我也希望在日志文件中看到它们。
我已经检查了工具acct,但未列出完整的命令。(如果我已经错过了一些选择,请纠正我)。
我应该使用哪种Linux工具来解决此问题?
我想监视服务器中所有用户的活动。
即使用户从诸如vim之类的编辑器执行shell命令,我也希望在日志文件中看到它们。
我已经检查了工具acct,但未列出完整的命令。(如果我已经错过了一些选择,请纠正我)。
我应该使用哪种Linux工具来解决此问题?
Answers:
将此行添加到负责登录的pam配置(基于redhat的发行版上的system-auth)
session required pam_tty_audit.so enable=*
要找出已完成的操作,可以使用。
ausearch -ts <some_timestamp> -m tty -i
这将产生如下输出:
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>
唯一的缺点是可能有点难以阅读,但它比大多数提出的解决方案要好得多,因为从理论上讲,它可以用来记录整个会话,这不尽人意。
编辑:哦,您可以使用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>
auditd
,必须首先启用守护程序(默认情况下,在我的CentOS 6.7安装中未启用该守护程序)。要启动守护程序,请使用:service auditd start
,并使更改永久生效(在重新引导后),请使用chkconfig auditd on
Source:access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/…和access.redhat.com/documentation/en-US/ Red_Hat_Enterprise_Linux / ...
最好的解决方案是Linux的内置审核系统。使用man 8 auditd
或检查此页面以获取更多信息:http : //linux.die.net/man/8/auditd。
此外,您可以查看本教程 -尽管它超出了您的问题范围,但它显示了审核系统的工作方式。
一个鲜为人知的技巧,但很容易做到的最棒的就是使用的内置审计功能sudo
。Sudo附带了sudoreplay
使重播会话变得容易的命令。它甚至可以中继vim
会话(如您所建议)。
以下是几个简单步骤的使用方法:
sudosh
在您的系统上安装;这是一个围绕sudo
命令的外壳程序包装程序,该命令程序使用户sudo
自己(不是root
)成为用户,并且可以用作系统登录外壳程序启用sudo
日志记录。编辑/etc/sudoers.d/sudosh
:
Defaults log_output
Defaults!/usr/bin/sudoreplay !log_output
Defaults!/sbin/reboot !log_output
添加此命令以/etc/shells
允许使用它登录:
/usr/bin/sudosh
提示:为防止用户使用其他Shell登录,请从中删除这些其他Shell /etc/shells
。
更新用户foobar
以使用sudosh
外壳程序。
chsh -s /usr/bin/sudosh foobar
有关更多详细信息,请参见:https : //github.com/cloudposse/sudosh/
这是一个神奇的解决方案:http : //www.cyberciti.biz/tips/howto-log-user-activity-using-process-accounting.html
您可以显示有关用户命令/连接等的统计信息。
列出给定用户调用的所有命令...
通过命令名称搜索记帐日志:$ lastcomm rm $ lastcomm passwd
等等,有关更多信息,请访问上面的链接..