Web服务器用户 – 最佳实践

我想知道当几个开发人员/pipe理员需要访问相同的Web服务器时,什么被认为是最佳实践。

如果有一个非root用户拥有一个安全的用户名和密码,而不是每个人都login的Web服务器,或者应该为每个人提供一个用户名。

我倾向于每个人的用户名,以帮助logging等等。然而,同一个用户保持相同的凭据在几个服务器上,或至less应该改变他们的密码,取决于他们的服务器?

如果系统的任何非root用户被添加到sudoers文件,或者最好的做法是让所有人都离开它,只让root执行某些任务?

任何帮助将不胜感激。

  • 最佳实践:对所有特权操作具有可追溯性。 这意味着在正常情况下不会以root身份login。 人们用自己的ID和特权login。 他们采取的行动是可追溯的。 如果一个特定的账户受到损害,它可以被修复,而不会影响其他账户或整个系统。

  • 最佳实践:最低特权。 人员和应用程序获得他们执行授权活动所需的权限,但没有其他权限。

遵循这两个原则是你的问题的答案。 你究竟如何跟随他们取决于你。 这取决于你的网站的政策build议,你的服务器设置的复杂性,连续性计划等。请注意,遵循这些原则使得你的系统受到敌意攻击的危害更加困难,但更重要的是它限制了一个善意的后果错误。

对于Web服务器维护,大多数function都可以通过适当的用户/组所有权和权限来启用,而不需要root访问(注意原始问题有linux / unix标签)。 例如,Web服务器configuration文件可以由“wserver”组“wsgroup”拥有,并且被许可为664.这将允许任何用户读取configuration以及“wsgroup”中的任何人来编辑文件(不一定是你想要的) 。 Web内容可以在不同的组中,只要Web服务器进程已经读取或者可能执行权限,内容就可以被提供。 这将允许不同(可能重叠)的组维护Web服务器和内容。

您也可以为特定用户设置sudo以作为特定用户运行特定命令。 为了获得最佳实践,您应该限制对实际需要root权限的less数项目的根访问权限(例如,启动在特权端口上侦听的进程)。 根据需要设置其他必要的权限 – 这有助于限制错误的后果。 例如,如果要允许组编辑Web服务器configuration文件,请允许他们作为configuration文件的所有者执行{vim,emacs,gedit}。

我们是一个拥有less量服务器的小型webdev公司。

每个pipe理员在每台服务器上都有自己的帐户,通常通过证书login。 但是,他们也可以通过密码login,因为他们可能需要从远程位置login,他们可能没有证书。

直接以根用户身份login只能通过证书。 我们还没有完全禁止远程rootlogin,因为它通过rsync和scp在服务器之间传输文件非常有用,但是只有最值得信赖的pipe理员将他们的证书添加到root的authorized_keys文件中。

pipe理员通过sudo获得超级用户权限,使其成为wheel组的成员。

这不能防止恶意pipe理员,但它确实提供了一些日志logging,并能够在pipe理员离开时禁用个人帐户。 它也不能很好地扩展,但是对于less量的服务器来说是很好的。

需要超级用户权限的脚本(比如我们用来将版本控制部署到networking服务器的Capistrano)获得自己的用户帐户,并且可以使用sudo执行超级用户操作。 但是,他们仅限于他们需要的命令,通过sudo的Cmnd_Alias。

我正在考虑设置“同样打开”,以便将身份validation绑定到Active Directory域。 这样可以更轻松地集中身份validation,pipe理密码并提供精确的权限。