我有几个在 Amazon EC2 上联网的盒子,每个盒子都通过 SSH(rsync 等)相互自动通信。因此,我在每台机器上都创建了 SSH 密钥,以允许它们无需密码即可相互 SSH。同样,我的个人帐户也是基于密钥且无密码的。
据我所知,我已经使用有据可查的方法适当地保护了 SSH。
在这种配置下,我注意到我不必提供密码即可使用sudo
. 如果我尝试这样做su root
,我将一事无成,因为 root 没有密码。但是,如果我运行 a sudo -i
,我会被要求不输入密码,并立即被授予 root 权限。这让我有点担心。
所以,两个问题:
- 这应该让我担心,还是我太偏执了?
- 使用基于密钥的 SSH 身份验证时是否可以设置 sudo 密码?
这些盒子中有几个是 Web 服务器,并且托管着我担心质量可疑的 Web 应用程序。(我没有写它们,所以它们很可疑!)我有 Apache 并且配置了服务器上的权限,以便一个非常无特权的用户(www-data)正在为文件提供服务,但我担心的是 - 不知何故- 攻击者可能会破坏 Web 应用程序,将权限升级到更高权限的用户,然后简单地sudo -i
升级到 root。
我不知道我的软件中存在允许 www-data 提升其权限的漏洞,但如果sudo
发生这种情况,我更愿意使用密码。
另外,为了记录:我确实尝试通过通过 SSH 登录然后运行来设置密码passwd
,但它引发了错误。我不记得确切的措辞,但它是关于“令牌”的东西。无论哪种方式,密码都没有粘贴,这让我觉得我在这里误解了一些基本层面的东西。
任何关于该主题的照明将不胜感激。谢谢。
-- 更新:2011 年 12 月 7 日 --
谢谢大家的深思熟虑的解释。事实上,问题似乎出在/etc/sudoers
. 感谢您向我指出那个方向。
为了完成讨论,我想我会记录下来。当我查看时/etc/sudoers
,我遇到了以下几行:
# ubuntu user is default user in ec2-images.
# It needs passwordless sudo functionality.
ubuntu ALL=(ALL) NOPASSWD:ALL
事实上,我正在使用 ubuntu 用户进行我的特权操作(尽管再次,网络服务器只运行 as www-data
),所以我想这解释了我遇到的问题。
如果有人想继续猜测为什么ubuntu 用户需要无密码 sudo 功能,我很想听听。否则,至少就目前而言,我想我会放手不管,让配置保持原样。我不想在尝试先发制人地解决不存在的问题时破坏工作系统。
再次感谢您提供时间和专业知识。