通过无密码 SSH 进行身份验证时的 Sudo 密码

信息安全 linux 密码管理 SSH
2021-09-07 07:09:06

我有几个在 Amazon EC2 上联网的盒子,每个盒子都通过 SSH(rsync 等)相互自动通信。因此,我在每台机器上都创建了 SSH 密钥,以允许它们无需密码即可相互 SSH。同样,我的个人帐户也是基于密钥且无密码的。

据我所知,我已经使用有据可查的方法适当地保护了 SSH。

在这种配置下,我注意到我不必提供密码即可使用sudo. 如果我尝试这样做su root,我将一事无成,因为 root 没有密码。但是,如果我运行 a sudo -i,我会被要求不输入密码,并立即被授予 root 权限。这让我有点担心。

所以,两个问题:

  1. 这应该让我担心,还是我太偏执了?
  2. 使用基于密钥的 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 功能,我很想听听。否则,至少就目前而言,我想我会放手不管,让配置保持原样。我不想在尝试先发制人地解决不存在的问题时破坏工作系统。

再次感谢您提供时间和专业知识。

2个回答

没有提示您输入 sudo 密码的原因是您的用户(或用户组)在 /etc/sudoers 中启用了 NOPASSWD。visudo您可以以 root 身份编辑此文件。

关于无密码身份验证,您认为公钥身份验证是对服务器进行身份验证的首选方法是正确的。如果没有密码可以猜测,那么暴力尝试就不会成功。

您根本没有root密码这一事实违反了一些最佳实践,但正如您正确指出的那样,如果需要密钥才能进入盒子,那可能没问题。拥有 root 密码可能会鼓励您使用 SSH 以 root 身份登录,这应该在您的 sshd_config 中禁用。

我唯一的问题与你最后一段有关:

另外,记录一下:我确实尝试通过通过 SSH 登录然后运行 ​​passwd 来设置密码,但它抛出了一个错误。我不记得确切的措辞,但它是关于“令牌”的东西。无论哪种方式,密码都没有粘贴,这让我觉得我在这里误解了一些基本层面的东西。

您在 sudo 到 root 时无法设置密码?还是作为普通用户?使用公钥身份验证不应阻止您设置用户空间密码或 root 密码。看起来你可能会遇到这个问题,在 SuperUser 上讨论过,所以希望这会有所帮助。

我希望我回答了您问题的安全方面;如果您需要更多信息,请随时添加评论或跟进!

启用 SSH 密钥验证后,您可以将密码设置为 root。例如,在 Ubuntu disrto 中,root 帐户被“禁用”。您可以 sudo 到安装期间创建的帐户,该帐户将以 root 权限运行。

如果您运行www-data$sudo -i,您应该收到以下消息:

www-data is not in the sudoers file.  This incident will be reported.

dshaw 提到的内容通常在 Ubuntu 中被禁用

# %sudo ALL=NOPASSWD: ALL

所以最好检查一下,因为您不应该能够运行 sudo -i 并在不输入密码的情况下获得 root 权限。

希望这可以帮助。