为什么 AWS 的 Ubuntu AMI 附带“ubuntu”用户而不是仅允许 root 登录?

为什么 AWS 的 Ubuntu AMI 附带“ubuntu”用户而不是仅允许 root 登录?

AWS 的 Ubuntu 镜像在启动时将您的凭证添加到名为 的用户ubuntu。机器启动后,您可以使用该ubuntu用户通过 SSH 进入您的新机器。

此用户是 sudoer,根据 sudoers 文件,此用户几乎可以执行 root 可以执行的任何操作,只要您在命令前加上sudo,而无需输入任何密码。这否定了sudo 的一些好处因为没有交互式密码提示。据我所知,这也意味着你永远不应该以这个用户的身份运行面向公众的应用程序,因为如果有人能找到通过你的应用程序执行 shell 命令的方法,他们就可以控制你的系统。

我真正的问题是:为什么会有这个用户?为什么不直接授予 root 帐户 SSH 访问权限,因为有人会创建非特权帐户来运行应用程序?拥有这个ubuntu用户不是只会增加混乱吗?我可以看到有人在想“我的 systemd 应用程序不是以 root 身份运行,而是以 ubuntu 身份运行,所以我很安全”。

我是否忽略了这种用户(不是 root 用户,但是是无密码的 sudoer)的某些用途?

答案1

我和一位在 EC2 团队工作的朋友聊天,他给了我一个很好的解释。

sudo这里要讨论的主要区别是无需密码即可运行并可以获得所有权限的用户sudo(无密码 sudoer) 与 root 用户本身之间的区别。我最初的想法是这两个用户本质上是相同的,但正如我朋友所解释的那样,如果攻击媒介是通过应用程序,那么攻破无密码 sudoer 本质上比攻破 root 用户更难。

额外困难的原因是,要以 sudoer 的身份获得 sudo 权限,您需要 shell 访问权限。如果没有 shell,以无密码 sudoer 身份运行的应用程序本质上只是一个普通用户。但是,这意味着,如果无密码 sudoer 正在运行可以代表用户执行 shell 命令的应用程序(即 Jenkins 或其他 CI 工具),那么系统仍然可能受到攻击。

以非 sudoer 身份运行应用程序可能仍然是最安全的,但在大多数情况下,我认为无密码 sudoer 已经足够安全了。

讨论的完整背景:

在此处输入图片描述

在此处输入图片描述

相关内容