使用 root 登录还是 sudo 用户进行服务器管理?

使用 root 登录还是 sudo 用户进行服务器管理?

我试图了解直接使用 root 进行 ssh 操作与在维护服务器的情况下创建辅助 sudo 用户之间的技术争论/安全隐患。澄清一下,我们讨论的是单个管理员拥有的服务器。对于在计算机上工作的多个人来说,显然,为每个实际人员提供唯一用户和细粒度权限具有审计跟踪优势。

我的想法是,如果这是一个桌面站,那么使用非 root 用户进行日常操作是有意义的,并且建议这样做,但是在服务器上,您通常登录来维护它,并且 99% 的时间您的所有活动都需要 root 权限。

那么,创建一个“代理”用户,无论如何都要通过 sudo 访问 root,而不是直接向 root 提供 ssh 访问权限,这样做是否有安全优势?

我能想到的唯一好处是通过隐蔽性实现安全性,即机器人通常会尝试探测“root”用户。但在我看来,如果 sudoers 的用户受到攻击,则与 root 用户受到攻击相同,因此游戏结束。

此外,大多数远程管理框架、NAS 系统、虚拟机管理程序都鼓励使用 root 用户进行 Web 登录。

答案1

其他用户已经提到了非常好的观点。我想重述一下我认为最重要的观点...

...为什么要使用 sudo

  • 如果您的 root 登录 ssh 密钥被泄露,那么您几乎没有机会正确摆脱这种情况。
  • 使用 sudo 的命令都会被记录,这不仅适用于有多个管理员时的安全,而且也适用于某些攻击者进入您的系统的情况。
  • 你有非常细粒度选项要调整每个用户的权限,是通过/etc/ssh/sshd_config还是通过SUDO 用户文件。(不要使用其他编辑器visudo!)
  • 即使您的默认 ssh 登录被盗用:像 sudo 这样的额外层确实会使 root 权限更难访问。(我总是Defaults targetpw在我的台式机和服务器上使用 -。因此,必须知道两个不同的密码才能成为 root)

补充最后一点:我个人对我服务器上的每项任务都使用单独的用户(我是唯一的管理员):例如,一个用户负责备份。它可以访问要备份的文件,并可以单独 ssh 访问异地服务器。我有一个用户负责监控,它对日志文件和监控 API 的访问权限非常有限。仅举几个例子...

但对我个人而言,最重要的一点是,我们都是人。你会犯错误。必须在每个命令之前输入内容sudo,这可能会改变系统的行为,至少会增加一个障碍,促使您过度思考您的命令。

因此我强烈建议:使用 sudo 代替 root 用户


从技术角度来看:使用 root 用户有两种常见方式。要么直接通过 ssh 以 root 身份登录,要么通过 ssh 登录并输入sudo susu -(...) 作为第一个命令。这两种方式都让我感到不舒服。

ssh root 登录

  • 不管是否开启root登录:使用ssh密钥文件是唯一安全的方法。不要使用没有密钥文件的密码。(以下是指南
  • 添加防火墙规则和 sshd 规则,例如LoginGraceTimeMaxAuthTries限制暴力攻击。
  • 保留以 root 身份登录的选项会增加安全漏洞。即使利用该漏洞的可能性很小。(我更喜欢PermitRootLogin
  • 从技术上讲,如果你按照最佳实践来保护 root 登录,那么安全性不低于日常的 ssh

  • 我认为,以 root 身份登录的唯一问题是,你不必sudo在每个命令前输入内容,这会让你更容易出错

答案2

需要考虑的一件事:如果使用 SSH 密钥进行远程身份验证,如果私钥被泄露会发生什么?

如果是 root:root 访问权限已泄露。希望您没有在多台机器上使用该密钥进行 root 访问。

如果用户:该用户已被感染。然而,攻击者可能无法运行 sudo,因为用户的密码尚未泄露。目前为止。(假设使用 sudo 需要密码)

情况仍然很糟糕,但可能更好一些。(如果你使用密码短语您的 SSH 密钥)

答案3

对于所有用途,我强烈建议你不使用root;如果可能的话,甚至禁用它。我经常在 Linux/UNIX 服务器上禁用 root。无法隔离 root 用户,其操作不会被记录。至少,会记录 sudo 命令,这在管理员操作不当的情况下非常有用。您还可以细化用户的权限,仅授予某些特权。当然,禁用 root 后,无法使用 root 进行 ssh 日志记录。

从经验上看,只有在您需要以单用户或紧急启动方式启动时才会丢失 root 权限;这是服务器无法正常启动的罕见情况。但如果是这种情况,您可以启用它,更改其密码并继续恢复。
另一种情况是使用 sftp(或 ftp,当然应该避免,除非仅在内部网络中)复制文件,您需要直接复制到/从仅具有 root 权限的目录复制。在这种情况下,您可以使用 ACL 向另一个用户授予权限并继续。

答案4

这里是安全顾问。

最佳实践全部应用程序、系统、解决方案、操作系统以及您能想到的任何其他东西都只使用 root 帐户进行设置,然后禁用它。

一定要创建一个具有管理员权限的个人用户帐户,以便进行日常管理,但是,无论是什么根帐户,都应在设置完成后禁用。

混淆账户仍然不是什么坏主意,即不要将管理员账户命名为 admin,但这种做法在现实世界中的价值极低。大多数“黑客攻击”发生在数周和数月内,而不是像媒体/电影/电视节目所呈现的那样,在几秒钟和几分钟内发生,任何人都有“黑客攻击”的技能,您也将有检查诸如 Windows 管理员 SID 之类的技能(对于内置的 Windows 管理员,它始终是 S-1-5-32-544)。

相关内容