NIS 可能存在安全问题,或者只是我的误解?

NIS 可能存在安全问题,或者只是我的误解?

我正在使用可以与我所在组织的 NIS 服务器通信的虚拟机。我对此没有太多经验,但我注意到我可以从主机成为另一个用户无需 NIS 服务器上的 root 密码。事实上,下面的提示并没有要求我输入密码。这种行为也有点奇怪;也许有人可以解释为什么sudo即使我是 root 用户,它也无法正常工作。

[root@unsecurehost ~]# su - myusername
su: user myusername does not exist

[root@unsecurehost ~]# sudo su - myusername
Last login: Mon Feb 12 19:24:17 UTC 2018 on pts/0
Last failed login: Mon Feb 12 19:28:13 UTC 2018 on pts/0
There were 2 failed login attempts since the last successful login.
su: warning: cannot change directory to /network/path/home/myusername: No such file or directory
-bash-4.2$ id
uid=012345(myusername) gid=0123(companyname) groups=0123(companyname),9999(othergroupname) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

我的uidgid、 和groups是正确的。

通常我会认为这不是什么问题,但它试图访问/network/path/home/myusername,这是我的(联网)主目录。我没有安装此存储,但我可以在这台主机上安装。

我只配置了yp.conf文件,我们的机器上的任何人都可以读取它并运行ypbind

有可能利用这一点吗?有些用户在这里有敏感信息,如果我可以成为另一个用户并访问文件,那么这是一个安全漏洞。我还没有在实际情况下尝试过,因为我想相信这是不可能的(也许网络存储不允许这样做,或者“上下文”字段很重要?)。这现在不是一个非常大的问题,但我们正在开发允许用户管理员的虚拟机,这可能会允许我们的任何用户成为 root。

请让我知道这里发生了什么事。

答案1

您所演示的不是问题。

您没有从 NIS 获取任何“访问令牌”。您获得的唯一信息是相同的字段这些都存在于/etc/passwd– UID、GID、登录 shell、主目录 – 而你唯一要做的就是告诉操作系统把你的 UID 设置为 012345。

即使没有 NIS,您也可以轻松执行相同操作,只需创建具有相同 UID 的本地帐户即可。

但是,这并不一定授予对网络上其他计算机的任何访问权限。仅仅知道你的 UID 不足以向其他系统进行身份验证,并且知道在哪里主目录并不意味着您可以访问它。

话虽如此,但有一个很大的例外:NFS。

没有证明或许才是真正的问题。

也许网络存储不允许这样做

这是这里最重要的问题——它取决于用于访问网络存储的协议以及存储服务器的配置方式。

大多数(现代)网络协议始终要求客户端进行身份验证。例如,存储服务器可能需要密码、证书或 Kerberos 票证 - 这些信息无法通过 NIS 获取。

然而,NFS在其默认配置 (auth=sys) 中是一个例外——它确实盲目信任客户端发送的 UID。如果客户端表示它代表 UID 12345 发送请求,他们将能够访问 UID 12345 拥有的文件,没有问题。

因此,请仔细检查您用于挂载网络存储的方法。如果是 NFS 且没有任何 auth= 规范,则您的文件服务器完全开放 - 这不是 NIS 的错。


另一个类似的例外是 rsh 和 rcp,它们也信任客户端发送的用户名,但是希望现在已经没有人使用这些协议了。与此同时,带有 auth=sys 的 NFS 仍然非常流行。

答案2

NIS 存在的前提是所有参与系统都是值得信赖的 —— 这意味着,系统管理员允许您sudo su知道他在做什么。

没有任何保护措施(与任何系统一样)可以抵御恶意管理员用户。

相关内容