是否可以使用用户空间 NFS 客户端绕过 NFS 文件权限

是否可以使用用户空间 NFS 客户端绕过 NFS 文件权限

有一些基于用户空间的 NFS 客户端(例如https://stackoverflow.com/questions/2442691/nfs-client-library/2442729#2442729)。我可以使用这样的客户端来绕过文件权限吗?

例如:

Server1 具有包含文件的 nfs 导出文件系统

-rwxr-xr-x  user1  file1
-rwx------  user2  file2

Client1 使用通常的 NFS 客户端(基于内核模式),并且 user1@client1 只能读取file1,但不能file2。据我了解,client1 在 nfs 请求中发送 uid,server1 根据请求数据进行权限检查。因此,我建议可以有一个 client2:

Client2 使用用户空间客户端,并且 hacker@client2 知道 user1 和 user2 的 uid;如果他想要读取,file1他可以发送 user1 的 uid;如果他想要读取 file2,他就发送 user2 的 uid。

这个方案可行吗?

答案1

不,除非 hacker@client2 是 root,因为 NFS 的安全性基于请求的 TCP 源端口。如果用户空间库是从 hacker@client2 启动的,而不是从 root@client2 启动的,则它不能使用 <= 1024 的 TCP 端口。/etc/exportssecure中的标志将指示 Server1 不要响应来自 > 1024 的 tcp 端口的请求。此标志默认设置。

Linux 中 nfs (v3) 服务器上的典型用户身份验证是 AUTH_NONE 和 AUTH_USER。第二种表示服务器信任请求中的 UID 和 GID。

NFSv4 使得这种攻击根本不可能发生,因为 nfs 服务器要求用户拥有有效的 Kerberos 票证。

所用书籍:http://www.sans.org/reading_room/whitepapers/linux/nfs-security-trusted-untrusted-environments_1956

相关内容