当使用 SSH 密钥登录服务器时,对 sudo 用户使用非常安全的密码是否明智?

当使用 SSH 密钥登录服务器时,对 sudo 用户使用非常安全的密码是否明智?

我并不是想在这里问如何做任何事情,而是想了解最佳实践和处理服务器安全的“正确”方法。为了防止暴力密码攻击,我通过多种方式保护了我的服务器,其中一种是使用密码保护的 SSH 密钥供任何用户登录(目前它是一个单一的开发人员框)。显然,任何时候用户需要登录时,他都需要访问密钥和该密钥的密码。

但是,我试图了解如何处理该特定用户的系统密码(或任何特定用户),特别是在处理 sudo 时。几个问题:

  • 给每个用户一个密码是否有价值(以便他/她可以使用 sudo)?
  • 如果是这样,那么使用超级安全的密码(即 384 位以上)是不是有点过分了?
  • 假设上述答案是否定的:
    • 每次用户需要运行 sudo 命令时,如何记住这个密码(是的,lastpass、dashlane、1pass 等都是选项,但必须打开/验证/查找并复制那个很长的密码似乎非常麻烦)。
    • 这些密码的安全性如何?如果字典攻击能在 3 秒内找到 sudo 密码,这重要吗?

提前谢谢您!

答案1

我反其道而行之,使用无密码 sudo。

%sudo ALL=(全部:全部) NOPASSWD:全部

正如您所指出的,请确保您的用户 ssh 密钥具有密码。另外,请确保禁用 SSH 密码验证。

如果您已完成上述操作,我发现此配置非常实用。

答案2

在 sudo 上设置密码不仅仅用于身份验证,它还提供授权请求的中断。

如果您复制并粘贴包含无密码 sudo 的脚本,sudo rm -rf /则不会对您有帮助。

如果恶意用户能够以某种方式成为具有无密码 sudo 访问权限的受信任用户,则潜在用户也有可能成为另一个用户提升权限的目标;假设受信任用户有一个无害的 cron 作业,该作业执行恶意用户具有写权限的脚本,并且他更改该脚本以执行其他操作。

这些可能不是您关心的问题,但请注意,密码提示可防止某些攻击媒介成为现实。

相关内容