当几个开发人员/管理员要求访问同一个web服务器时,我想知道什么是最佳实践。
如果有一个具有安全用户名和密码的非根用户登录到每个人登录的web服务器,或者每个人都应该有一个用户名。
我倾向于为每个人提供一个用户名,以帮助登录等等,但是相同的用户是否在多个服务器上保留相同的凭据,或者至少应该根据他们所在的服务器更改密码吗?
应该将系统的任何非根用户添加到sudoers文件中,还是最好的做法是让每个人都离开它,只让root执行某些任务?
任何帮助都将不胜感激。
发布于 2010-05-05 14:11:26
遵循这两条原则是你问题的答案。你到底是怎么跟踪他们的取决于你。这取决于您的站点策略建议的内容、服务器设置的复杂性、连续性计划等。请注意,遵循这些原则将使您的系统更难以通过恶意攻击进行妥协,但更重要的是,它限制了善意错误的后果。
对于web服务器维护这样的问题,大多数功能可以在不需要通过适当的用户/组所有权和权限进行根访问的情况下启用(请注意,最初的问题是linux/unix标记)。例如,web服务器配置文件可以由"wserver“、组"wsgroup”和许可的664拥有。这将允许任何用户读取配置,并允许"wsgroup“中的任何人编辑文件(不一定是您想要的)。Web内容可能在不同的组中,只要web服务器进程具有读取权限或执行权限,就可以为内容提供服务。这将允许不同的(可能是重叠的)组维护web服务器和内容。
您还可以为给定的用户设置sudo,以便以特定用户的身份运行特定的命令。对于最佳实践,您应该将根访问限制在实际需要根特权的几个项上(例如,启动一个侦听特权端口的进程)。根据需要设置其他权限,尽可能少授予特权--这有助于限制错误的后果。例如,如果要允许某个组编辑web服务器配置文件,则允许它们作为配置文件的所有者执行{vim、emacs、gedit}。
发布于 2010-05-05 14:33:14
我们是一家拥有少量服务器的webdev小公司。
每个管理员在每个服务器上都有自己的帐户,通常通过证书登录。但是,他们也可以通过密码登录,因为他们可能需要从一个远程位置登录,在那里他们可能没有他们的证书。
只有通过证书才允许以root身份直接登录。我们没有完全不允许远程根登录,因为它对于通过rsync和scp在服务器之间传输文件非常有用,但是只有最受信任的管理员才会将他们的证书添加到root的authorized_keys文件中。
管理员通过sudo获得超级用户特权,使他们成为轮组的成员。
这并不能防止恶意管理员的攻击,但它确实提供了一些日志记录,以及在管理员离开时禁用单个帐户的能力。它也不是很好的扩展,但是对于一小部分服务器来说是好的。
需要超级用户权限的脚本,例如Capistrano,我们使用它将我们的网站从版本控制部署到we服务器,获得自己的用户帐户,并可以使用sudo执行超级用户操作。但是,通过sudo的Cmnd_Alias,它们仅限于所需的命令。
我正在考虑设置同样的Open,这样我们就可以将身份验证绑定到Active Directory域中。这将使集中化身份验证、管理密码和提供细粒度权限变得更加容易。
https://serverfault.com/questions/138790
复制相似问题