信任但要验证。
假设我想聘请某人担任系统管理员,并授予他们对我的 Unix 系统的 root 访问权限。我想为他们禁用 X 窗口,只允许使用 shell(可能通过 SSH),这样他们执行的所有操作都将通过 shell(而不是鼠标操作)。
我需要一个工具,在他们发出命令时将他们发出的所有命令记录到远程服务器。因此,即使他们安装了后门并掩盖了踪迹,也会被远程记录。
- 如何禁用除 shell 访问之外的所有内容?
- 是否有一种工具可以在发出命令时立即远程记录命令?
信任但要验证。
假设我想聘请某人担任系统管理员,并授予他们对我的 Unix 系统的 root 访问权限。我想为他们禁用 X 窗口,只允许使用 shell(可能通过 SSH),这样他们执行的所有操作都将通过 shell(而不是鼠标操作)。
我需要一个工具,在他们发出命令时将他们发出的所有命令记录到远程服务器。因此,即使他们安装了后门并掩盖了踪迹,也会被远程记录。
不要给他们根。给他们一个个人帐户并将其放在 sudoers 中。他们使用 sudo 启动的每个命令都将被放入日志中。但是,sudo power 仍然允许他们清理日志,并以 root 身份使用
sudo su -
.解决方案是将日志隔离在另一台服务器上,例如syslog-ng。他们可以关闭它,但他们这样做会被记录下来,应该是一个很大的危险信号。一样会
su -
。我猜你可以通过一些想法在sudoers中阻止它。Sudosh2 ( http://sourceforge.net/projects/sudosh2/ ) 会做一些你想做的事。这是他们网站上的描述:
用户执行类似“sudo sudosh2”的命令,然后他们就有了 sudo。
sudosh2 是一个 sudo shell,它将记录所有击键并记录来自用户会话的所有内容(输入、输出、错误等)。您可以重播用户会话。这可能非常方便。
sudosh2 支持 syslog,您可以将此输出发送到远程服务器。
这可能无法满足您的所有需求,但可能会有所帮助。有些人也使用rootsh,但我不明白它与 sudosh 相比如何。
理论上,您可以使用 ssh 代理(在人员无法控制的系统上)记录主机和系统之间的所有流量。他 ssh 到系统,您在那里记录所有数据并将连接转发到目标服务器。本地日志记录守护程序违反了不授予用户对预期会限制他的系统的管理访问权限的基本原则。
在实践中,阅读命令日志并确定该人是否做了坏事或多或少是不可能的。如果你不能信任你的系统管理员,那你就完蛋了。我不会费心去尝试。
我同意马特的观点。如果你不能信任他们,他们就不应该有根。
对于审计跟踪,可以使用rootsh 。您只能允许他们 sudo 到 rootsh。结合这个和远程日志记录,它会比简单的 sudo 更难停止。
将某人键入的所有内容记录到您的控制台中, pam_tty_audit就是您所追求的。我很确定它会通过 syslog 记录它的输出,因此您可以将该日志泵送到另一个 syslog 服务器。
注意,这会记录所有内容,击键(向上、向下、ctrl 等),并且还会在他们输入密码字段时记录密码。
正如很多人所说。如果有人有根,他们就有盒子。信任是王道。但是,在某种程度上,您可以使用 sudo 获得您想要的行为。管理员以普通用户身份登录,然后允许通过执行 sudo /path/to/command 运行各种命令。这可能是您在不玩很多游戏的情况下获得的最好结果。