作为特权用户使用 ssh 比使用 ssh 和 sudo 更安全吗?

信息安全 密码 SSH 须藤
2021-08-31 14:18:41

我偶然发现了这篇旧论文,讨论了使用 SSH 时密码长度信息被泄露的可能性: SSH的按键时间分析和时间攻击这篇论文之前已经在这里讨论过

这让我想知道:通常应该避免通过 SSH 输入密码吗?如果是这种情况,以特权用户身份连接(使用 ssh 密钥)比以非特权用户身份连接然后连续sudo进入 root 帐户不是更好吗?使用前一种方法,不会传输密码,而使用后一种方法,可能会猜到密码。即使 ssh 被配置为只允许无密码登录,这也可用于读取/发送邮件或访问用户可用的任何其他服务。

这是合理的推理吗?我在某处弄错了前提吗?

4个回答

这是风险评估的问题。

一方面,您有一篇投机文章,其中您将短暂的信息建立在一些模糊的时间上。

另一方面,您有能力以用户身份连接到 ssh(最好使用 ssh 密钥),然后执行sudo(可能没有密码,这取决于您的具体情况)。您处于一个高度标准的环境中,并具有最佳实践。
即使您使用密码 ssh,然后输入密码sudo- 您也处于上述最佳实践的领域。

通过定时攻击进行电子邮件妥协是不现实的(恕我直言,你得到的是,最好的情况是一些长度的“东西”。运气好和特定的环境,你可能会将这个长度与密码相关联)。

“以非特权用户身份连接,然后连续 sudo 进入 root 帐户”通常是使用 UNIX 系统的推荐方式。许多发行版默认配置为不允许登录,root并期望用户sudo在需要 root 权限时登录。但你给出的理由并不是主要的。

  • 在具有多个管理员的系统上,您不需要在多人之间共享相同的 root 密码,因为每个sudoer可以有不同的 root 密码。
  • 在具有多个管理员的系统上,sudo可以记录哪个用户执行了命令。当所有管理员都使用该root帐户时,所有日志条目都将显示为用户root,您无法分辨实际是谁做的。
  • 尝试猜测密码的攻击者也需要猜测有效的用户名。
  • 它可以防止人们对不需要它的任务使用 root 权限,因为sudo在每个命令前输入都是额外的工作。

如果您以普通用户身份登录然后使用 sudo 要考虑的另一件事是,任何破坏您的普通用户帐户的人都可以修改您的环境,以便下次您登录并尝试使用 sudo 他们拦截请求并捕获您的密码和/或以root身份运行他们的邪恶软件。

总的来说,虽然我不鼓励以 root 身份登录基于密码的登录,但我认为以 root 身份登录的 ssh 密钥总体上没有比其他获得 root 访问权限的选项更高的风险,并且比必须使用 sudo 更方便。

不以 root 身份使用 ssh 的其他原因:

  • sudo 可能会在每次使用时记录下来,这样您就可以更好地跟踪谁在什么时候做了什么
  • 不小心输错了不需要权限的命令造成严重损害的可能性要小得多
  • 您可以使用与用户密码不同的密钥密码,这意味着攻击者必须拥有密钥和 2 个不同的密码才能破坏该系统
  • 更好的 ssh 日志,这样您就可以知道 john 已登录 ssh,然后是 linda 而不是神秘的根。
  • 如果您担心定时攻击可能被用来嗅出密码,您应该更担心在其他服务器/服务中重复使用密码。执行不重复使用密码的策略会更好,因为攻击者更有可能从另一个服务中找到您的用户名和密码,而不是攻击者有足够的网络访问权限来确定按键被按下和实际使用的速度那。
  • 如果您使用密码管理器并且必须将密码复制/粘贴到终端中,那么您无法计算手指从一个键移动到另一个键所需的时间。