在Unix系统上监视用户的shell活动?

信任但要validation。

比方说,我想雇用一个系统pipe理员,让他们根访问我的Unix系统。 我想为它们禁用X窗口 ,只允许使用shell(也许通过SSH),以便它们执行的所有操作都将通过shell(不是鼠标操作)。

我需要一个工具来logging他们发出的所有命令的远程服务器 。 所以即使他们安装了一个后门并覆盖他们的轨道,也将被远程login。

  • 我如何禁用所有的shell访问?
  • 是否有一个工具,即时远程logging命令发出?

不要给他们根源。 给他们一个个人帐户,并把它放在sudoers。 他们使用sudo启动的每个命令都将被放入日志中。 但是,sudo权力仍然允许他们清理日志,并以sudo su -以root身份login。

解决方法是将日志分隔到另一台服务器上,例如syslog-ng 。 他们可以把它关掉,但他们这样做会被logging下来,应该是一个很大的红旗。 如将su - 。 我猜你可以用一些想法阻止在sudoers 。

是否有一个工具,即时远程logging命令发出?

Sudosh2( http://sourceforge.net/projects/sudosh2/ )会做一些你想要的。 以下是他们网站的描述:

sudosh是一个审计shellfilter,可以用作loginshell。 Sudoshlogging所有击键和输出,并且可以像录像机一样回放会话。

用户执行一个像“sudo sudosh2”的命令,然后他们有sudo。

sudosh2是一个sudo shell,它将logging所有击键并logging用户会话(input,输出,错误等)的所有内容。 您可以重放用户会话。 这可以很方便。

sudosh2支持syslog,你可以把这个输出发送到远程服务器。

这可能不会做你需要的一切,但它可以帮助。 有些人也使用rootsh ,但我不明白如何比较sudosh。

理论上你可以使用一个ssh代理(在一个人不能控制的系统上)来logging主机和系统之间的所有stream量。 他ssh到系统,你在那里logging所有数据,并将连接转发到目标服务器。 本地日志守护进程打破了不给用户pipe理访问系统的基本原则,期望限制他。

在实践中,阅读一个命令日志或者不知道这个人做了什么坏事或多或less是不可能的。 如果你不能相信你的系统pipe理员,你是拧紧的。 我不打扰尝试。

我同意马特。 如果你不能相信他们,他们不应该有根。

对于审计跟踪,可以使用rootsh 。 您只能允许他们sudo到rootsh。 结合这个和远程日志logging,停止比单纯的sudo稍微困难一些。

为了logging所有人input到你的控制台pam_tty_audit的是你以后的。 我很确定它通过系统日志logging它的输出,所以你可以将该日志泵送到另一个系统日志服务器。

注意,这logging了一切,按键(向上,向下,ctrl等),并且当他们键入密码字段时也会logging密码。

正如很多人所说的。 如果有人有根,他们有盒子。 信任在这里是国王。 但是,在某种程度上,你可以用sudo来获得你想要的行为。 pipe理员以普通用户身份login,然后被允许通过执行sudo / path / to / command来运行各种命令。这可能是最好的,你将得到没有玩很多游戏。