创建非root用户的目的

创建非root用户的目的

有人告诉我,创建具有 sudo 权限的新用户并禁用 root 用户是一种常见做法。这可以减轻哪些风险?

答案1

禁用 root 并创建可以使用的非 root 用户的一个安全优势sudo是保护您的服务器免受试图猜测您的“root”密码的暴力攻击。

正如 Rinzwind 所说,您认为哪一个更安全?

  • Root 账户 + 难以猜测的密码
  • 自定义用户名+难以猜测的密码

另一个更重要的优点是,当您只有一个 root 用户时,您所运行的所有内容都以“root”的权限运行,该权限可以执行所有操作,因此运行错误的命令或犯一个简单的错误都有可能破坏您的服务器。

只需创建一个非 root 用户:

  • 您没有泄露您的 root 密码!
  • 您可以定义谁可以做什么!
  • 您可以审计谁做了什么!
  • 您正在最大限度地降低使用 root 权限运行错误或危险命令的可能性。

还要记住,如果有人可以物理访问服务器,那么他或她几乎可以对服务器做任何他/她想做的事情,除非该服务器上的所有内容都经过加密。

答案2

除了在@Ravexina 的回答,我认为需要注意的是:

通过 SSH 进入你的服务器并不是恶意行为者执行操作的唯一方式

事实上,对 SSH 的成功暴力攻击可能是最不可能黑客入侵您服务器的方式。输入无效密码时 SSH 休眠 3 秒,因此暴力破解强远程 SSH 密码实际上是不可能的。*

更有可能的是,他们找到远程代码执行漏洞并以此方式“进入”。如果 什么时候他们会这样做,你希望他们获得尽可能少的权限。你真的我 不想 他们 这样root.

看看吧,当您运行程序(如 Apache、PHP 或 PHP/Python/NodeJS 脚本,甚至您的 Web 浏览器)时:该“进程”也必须以用户身份运行。例如:如果您以 身份运行 PHP 脚本root,那么该 PHP 进程可以执行任何root操作。

举例来说,假设一个恶意攻击者能够发起“远程代码执行”攻击:他们能够在您的服务器上运行代码。如果 PHP 运行该恶意代码,并且 PHP 以 的身份运行root,则意味着黑客的代码也以 的身份运行root。但如果 PHP 以较低权限用户的身份运行(即:webapp),则可以大大减轻其可能造成的损害。这也适用于您运行控制台脚本的情况,而不仅仅是 PHP:每种语言都可能存在此问题。

这里的棘手之处在于:RCE 漏洞甚至可能不是代码写道:它可能深藏在您的代码调用的某些第三方库/模块中:计算日期、与数据库交互、呈现 HTML 等……换句话说:您可能甚至不知道它在那里。当您更新依赖项/库时,它可能会悄悄添加到您的代码库中。正如我们在EventStream 黑客,很容易就能控制上游库存储库,并利用它将恶意代码推送到下游毫无戒心的应用程序。如果该恶意代码以 root 身份运行,它可以控制您的整个服务器,甚至将其踪迹隐藏到您永远不知道的地方。

因此,虽然为所有事情设置单独的用户可能防止完全攻击,它将显著缓解如果发生远程代码执行攻击,可能会造成损害。

* 显然,如果您的密码是,则abc123这不适用,因为这可能是黑客在暴力破解时首先尝试的密码之一。

答案3

我认为创建非 root 用户的安全优势被大大高估了。但它基本上不花你任何钱,也不会造成任何安全问题。所以我建议你这样做。

https://xkcd.com/1200/

但不要忽视确保真正重要的东西。

答案4

这实际上取决于你在服务器上做什么。除了@Ravexina 的回答(猜测密码攻击):你例如

  • 访问一些网站
  • 阅读邮件
  • 查看一些图片
  • 阅读 PDF

所有这些都是过去的攻击媒介(浏览器是常见的攻击媒介)。如果有人使用其中一种媒介,他可能会

  • (非 root)访问并删除所有文件、为本地用户安装软件等
  • (根)做一切

虽然非 root 权限漏洞可以升级(见https://superuser.com/questions/301646/linux-keylogger-without-root-or-sudo-is-it-real),这提供了额外的保护层。它还可以防止事故正如@David Schwartz 所提到的

任何使用 Linux 很长时间的人都会遇到这样的情况:他们不小心输入了一个命令,如果他们当时是 root 用户,那么他们的系统就会被彻底摧毁。我最近的一次是想删除当前目录中的所有内容,却不小心输入rm -rf . /*rm -rf ./*.

相关内容