下周,我将让承包商在我们的其中一台服务器上安装一个 Web 应用程序。我创建了一个帐户,以便他们可以通过 SSH 访问我们的服务器。
系统是 CentOS。基本上,除了基本的用户操作外,他们还需要能够:
- 通过 yum 安装新的库
- 修补现有库
- 修改 apache 配置
因此,我想授予他们 sudo 访问权限,但要有一些限制。例如,我不希望他们能够修改 sudoers 文件、以其他人的身份登录或关闭服务器。此外,由于我要对我所属组织中任何滥用此服务器的行为负责,因此我想记录已执行的每条命令,以便证明如果出现问题,我不会承担责任。
我该如何继续?
答案1
如果您需要承担责任,但又不能轻易追究他们的责任,那么您就不应该授予他们 sudo 访问权限。也许您可以将其锁定为特定的“sudo service apache2 reload”,并让他们使用这些参数运行该命令。
要编辑配置,请使用 acl / 文件系统权限授予他们访问他们应该更改的特定配置文件的权限。授予他们访问sudo
编辑器的权限意味着他们可以编辑/修改系统上的任何文件(包括sudo
其自身),或更改sudo
的配置,以便它不会记录任何内容。
如果他们可以安装软件,他们也可以安装恶意软件。不要让他们这样做,而要找一个可以保证系统安全的人来做。
如果他们可以修补库,他们也可以修补核心库并注入恶意代码。不要让他们这样做,让那些可以保证系统安全的人来做(如果必须这样做的话)。
sudo
本身可以配置为将每个命令记录到 syslog,并且您可以设置 syslog 将日志条目通过网络转发到安全服务器,以保持对日志的责任。
我可能不会给他sudo
访问权限,但会配置系统,使他属于可以写入 apache 配置文件和 webroot 的组。
他需要一种方法来告诉 apache 重新加载配置,因此您可能需要研究一个不允许进入 shell 的 ssh-key,但当service apache2 restart
有人使用它登录时会触发。另一种方法是使用 setuid 程序,它不需要输入并重新启动 apache。或者当他需要重新加载时,他可以通过电子邮件或 IM 向您发送 ping 消息。
对于安装软件包,我只需让他向您发送一个列表,然后浏览列表后安装它们。从安全角度来看,负责的人(您)应该下载/编译/修补任何需要修补的库。
sudo
应该已经将每个命令记录到 syslog 中(至少,如果我没记错的话,它在 Ubuntu 中默认这样做,在您的设置中可能会有所不同),所以您应该验证它是否确实这样做,并且为了增加责任,将 syslog 配置为记录到可以保护的远程 syslog 服务器。
如果你总体上信任承包商,那么你可能真的不需要担心太多。但如果你有为了能够让他承担责任,就必须从“他利用特权能做什么最糟糕的事情”的角度来看待这个问题X?”的立场。