允许 sudo 组成员登录如何比允许 root 登录更安全?

允许 sudo 组成员登录如何比允许 root 登录更安全?

我最近读到禁用 root 登录是个好主意,例如将 root 用户的 shell 设置为 /sbin/nologin 而不是 /bin/bash,并使用具有 sudo 权限的非 root 用户。

我现在在我的服务器上执行此操作,其中日志显示大量登录尝试。因此,我现在不再以 root 用户身份登录,而是以非 root 用户身份登录,并在需要时使用 sudo。

这如何更安全?在这两种情况下,如果有人破解了密码,他们将能够执行任何命令。

答案1

sudo通过提供提高安全性/保障问责制, 和特权分离

想象一个有多个人执行管理任务的系统。如果root启用了登录帐户,系统将不会记录/记录哪个人执行了特定操作。这是因为日志只会显示root责任人,而现在我们可能无法确切知道root当时是谁。

OTOH,如果所有人都必须以普通用户身份登录,然后sudo进行权限提升,系统将有一个记录用户帐号执行了一个动作。此外,该特定特权用户帐号可以在sudoers文件中进行管理和分配。

现在回答您的问题,危害一个用户帐户的黑客将仅获得分配给该帐户的权限。此外,系统日志将(希望)有一条记录显示哪个用户帐户被盗。 OTOH,如果它是一个简单的单用户系统,其中文件中的权限sudoers设置为ALL(例如%sudo ALL=(ALL:ALL) ALL),那么优点问责制, 和特权分离已被有效绝育。

最后,关于 的优点sudo,有可​​能的是,知识渊博的黑客也可以通过删除日志文件等来掩盖他的踪迹;sudo肯定不是万能药。归根结底,我觉得就像我们实施的许多其他保障措施一样,sudo有助于让诚实的人保持诚实——但它在阻止不诚实的人方面效果较差。

答案2

如果您使用带密钥的 ssh 登录,那么密码是第二个因素。还有一个小的不使用默认用户名的保护量。 (正如其他人所指出的,这种保护可以减少计算机的负载(不必检查这么多密码/密钥),并且允许阻止。)

另一个主要的安全影响是,你更难意外地以 root 身份运行某些东西。所以不能防御恶意破坏。

答案3

sudo通过多种方式帮助提高安全性:

  • 它允许细粒度的权限。除此之外,sudo您还可以:
    • 防止用户轻易访问管理 shell(这使得几乎任何您能想到的攻击都变得更加复杂)。
    • 限制用户可以运行的命令。
    • 根据登录会话本身的各种属性限制可以调用的命令(例如,仅允许非常有限的 SSH 登录命令集,但允许物理控制台登录的完全访问权限)。
  • 它提供了书面记录,可以更轻松地找出谁在何时做了什么。这是非常对于系统受到损害后的事后分析非常重要,因为它可以为您提供有关系统如何受到损害的更好信息。请注意,这是对任何 shell 历史记录和任何其他日志记录的补充。
  • 使用sudo代替 root 帐户或众所周知的管理员帐户名可以阻止偶然的攻击者。如果您注意任何在端口 22 上暴露于互联网的 SSH 系统上的身份验证日志,您会发现几乎所有攻击都是通用的,试图暴力破解一些非常具体的用户名(root、admin、toor、 pi 以及广泛用于管理员帐户的类似“众所周知”名称)。通过根本不使用此类帐户,而是在sudo以普通用户身份登录后依靠特权提升,您可以完全消除大部分攻击面。
  • 在某些配置中(targetpw模式(您不应在多用户系统上使用该模式,但对于单用户系统来说这是一个合理的选择),或者在初始登录时使用密码以外的其他内容(例如 SSH 密钥)) ,使用sudo提供了第二层身份验证,攻击者必须通过该身份验证才能获得 root 访问权限。
  • 它提供了权限边界的清晰划分。 IOW,这使得意外地运行比它需要的权限更多的东西变得更加困难,因为你必须有意识地选择这样做。反过来,这有助于提供针对社会工程攻击的额外一层保护。

总的来说,就防止外部攻击而言,这些都不是那么重要(尽管前两点是巨大的为了防止内部不良行为者),但所有这些对可用性的影响也非常小,因此通常值得这样做,以提供其所提供的安全性边际改进。

答案4

其他回答者已经提出了许多优点,但我想提出另一个。Sudoers 对严重错误的保护比root运行rm -rf *as/jshmoe非常不幸的,但远没有运行与 相同的命令那么灾难性root。 (当然,由于添加了--preserve-root默认值,这个特定的示例并不像以前那么灾难性,但是root仍然会消除每个人的的东西,而最jshmoe不需要的sudo就是清除jshmoe具有写权限的东西。)

有一种心理效应在起作用sudo,使善意工作的合法用户在按下 Enter 之前仔细查看他们将要运行的命令。如果您有一台关键机器,上面运行着一群优秀的代码骑师,这一点尤其重要。

当然,对于系统稳定性来说,没有什么比让你的热门代码骑手养成sudo习惯而开始编写更糟糕的了,所以你的里程可能会有所不同。

相关内容