我很不幸地不得不将网络服务器的访问权限授予一个我不完全信任的人,以完成他们从未完成的工作。
他们将远程访问服务器(即我将无法看到他们的屏幕)。
他们可以做些什么来 a) 主动限制任何潜在损害以及 b) 准确记录他们在服务器上所做的任何事情以供事后分析,即使一切看起来都很好?
他们将更新一个网络应用程序。
提前致谢!
--- 更多信息:该服务器是 Ubuntu AWS 服务器。
答案1
您可以为他们提供具有访问权限的非特权帐户sudo
,但/etc/sudoers
您只授予对命令的访问权限rootsh
。
根什记录在 root shell 中发生的所有事情,您可以将日志推送到 syslog 并立即将其发送到外部服务器。
它不是万无一失的,但你必须在一定程度上信任这个人,才能接受这个想法。
答案2
考虑另一种方法,使用配置管理工具。其中一个可能适合您的需求并且功能更强大:Puppet。
让这个人把所有要完成的配置都放到一个 Puppet 文件中。优点:
- 管理配置更改的一种非常强大的方法。所有内容都在一个文件中,而不是描述已完成的操作。
- 您将保持控制权,因为它可以让您...
- 在另一台机器上尝试配置并验证。
- 决定是否应用它,无论它看起来好不好。
- 选择发生变化的时刻
- 减少变更发生的时间。它是自动化的。
- 只需自定义配置定义,您就可以非常轻松地重复类似的配置。
归根结底就是:负责实际应用程序配置的人不需要 shell 访问权限,并且它提供了一种将他和系统管理员的职责分开的方法。
更新:
实际应用中也存在很大的缺点:打死一只蚊子就是打死一头大象,所以它可能不适合你目前的情况。并不是每个人都熟悉 Puppet,而且低质量的 Puppet 定义比用脚本设置所有东西更糟糕。
这让我想到了另一种类似但更简单的方法:让这个人开发一个脚本来运行更改配置所需的命令。它具有上面列出的一些优点,但不需要那么复杂的工具。
答案3
在开始之前拍摄快照/进行备份。
答案4
设置该帐户,以便为他提供屏幕会话(可以随时使用-rx 附加),可能还启用了脚本...