如何阻止具有本地 sudo 权限的用户在 NFS 文件服务器上拥有 sudo 权限?

如何阻止具有本地 sudo 权限的用户在 NFS 文件服务器上拥有 sudo 权限?

想象一下 LAN 中的这种场景:一个 Linux NFS 文件服务器 (srv) 和三个 Linux 客户端(A、B、C)。 srv 上的文件/目录具有 root 所有权,并且没有授予非 root 用户访问权限。这些是这个问题所涉及的文件。我将它们称为“根限制文件”。

A是本地系统管理员。他或她将需要自由访问 srv 上受 root 限制的文件。

是本地开发人员,在其计算机上拥有 sudo 权限。然而,B 应该不是能够读取或写入(或遍历)服务器上受根目录限制的文件/目录。事实上,即使 B 具有 sudo 权限,B 也应该无法访问 srv 上不属于 B 所属组的文件。

C是没有 sudo 权限的本地用户。 C 应该有权访问 srv 上的普通文件,但无权访问本地或服务器 root 限制的文件。

鉴于:

srv 位于 192.168.1.1
A 位于 192.168.1.2
B 位于 192.168.1.3
C 位于 192.168.1.4

/etc/exports 能实现目标吗?

/srv/nfs        192.168.1.2(rw,no_root_squash)
/srv/nfs        192.168.1.3(rw,root_squash)
/srv/nfs        192.168.1.4(rw,root_squash)

推荐哪些其他 NFS 选项?但最重要的是,如果我们假设 IP 地址不能被欺骗,root_squash 是否能够实现此解决方案?

接下来,假设在其计算机上拥有 sudo 权限的开发人员可以欺骗其 IP 地址,使其看起来像 192.168.1.2,其中没有 no_root_squah,需要什么解决方案? LDAP + Kerberos?还有别的事吗?

我们的目标可以通过 NFS 实现吗? SSHFS 或 Samba 4 之类的解决方案是更好的解决方案吗?

(如果“根限制文件”不是最好的术语,欢迎编辑建议。)

答案1

NFS 仅使用客户端提供的 UID/GID。使用squash_root选项exports对于共享,将 root 用户映射到匿名用户 ( nobody/nogroup)。这并不能阻止恶意/受损的客户端提供一些其他 UID/GID,这可能允许访问其他文件。

如果您想保护您的 NFS 服务器免受欺骗用户的侵害,您需要使用 Kerberos 来验证您的 NFS 用户。具有 Kerberos 的 NFS 还提供可选的数据完整性和加密。要快速了解所涉及的内容,请参阅以下快速操作方法:Ubuntu 维基

答案2

NFS 通过 UID 和 GID 设置权限,因此只要服务器和客户端上的权限相同,就可以了。root_squash将阻止 B 读取或写入任何您不想要的文件或目录,甚至不值得 sudo 权限,而 C 无论如何都没有 sudo 权限。

如果您担心 IP 欺骗,那么可以使用其他工具和方法。您可以通过一些研究找到它们并决定哪个是最好的。

答案3

使用 NFS 保护共享文档的最佳方法是不要为每个人提供相同的共享根目录。在此示例中,我将创建一个类似于以下内容的本地目录结构:

/srv/nfs admin-machine(rw,no_root_squash)
  /srv/nfs/developer dev-machine(rw,no_root_squash)
  /srv/nfs/shared 192.168.1.0/24(rw,root_squash)
  /srv/nfs/protected acct-machine(rw,root_squash)

尝试保护文件夹免受 NFS 客户端未经授权的访问的问题在于,任何具有 root 访问权限的人都可以创建一个用户就这样发生了

答案4

如果您的目标是“阻止具有本地 sudo 权限的用户在 NFS 文件服务器上拥有 sudo 权限”,则无法禁用 root squash。

完全没有。

/etc/exports

/srv/nfs        192.168.1.2(rw,no_root_squash)
/srv/nfs        192.168.1.3(rw,root_squash)
/srv/nfs        192.168.1.4(rw,root_squash)

将允许任何在 192.168.1.2 上具有 root 访问权限的人创建 SUID 可执行文件,/srv/nfs可用于访问 NFS 服务器本身、192.168.1.3 和 192.168.1.4 上的任何非 root 用户,以及root您的 NFS 服务器上的自身 - 这与您既定的目标直接矛盾。192.168.1.3 和 192.168.1.4 上的任何用户都可以sudo访问吗?如果是这样,任何有权sudo访问 192.168.1.2 的人都可以利用该服务器的访问权限,并获得几乎整个网络的 root 访问权限。

禁用任何东西的根南瓜是危险的为了您整个网络的安全。

这甚至没有解决 @ErikF 在其回答中提到的 IP 地址欺骗问题。

至少您没有与anon=0.是的,我见过。

相关内容