NFS 服务器 + 客户端:建议强化/最后润色

NFS 服务器 + 客户端:建议强化/最后润色

我们刚刚第一次设置了一个可爱的小型 nfs 共享/客户端。

a) 客户端文件的 UID 在通过 ls 列出时显示为 4294967294,但客户端能够在共享中创建和删除文件/目录。在客户端创建的文件和文件夹在服务器端显示正确的用户名(和 uid)。我们确保写入共享的用户在服务器端具有相同的 UID。

客户端上所有文件/文件夹显示如下:

drwxr-xr-x 6 4294967294 4294967294 4096 Feb 23 16:04 foldername

这个可以吗?

b) 是否需要对 portmap/nfs 守护程序进行任何操作,以完全禁用任何 nfs(或 rpc*,因为在此之前未安装)服务在我们的外部接口上运行?理想情况下,我们希望将服务仅绑定到我们的 lan 和 vpn 子网。

c) 使 nfs 客户端尽可能积极地尝试重新连接的理想方法是什么?理想情况下,如果网络连接随时丢失,nfs 客户端会不断尝试,并且无限期地尝试。是否可以通过 fstab 实现这一点?或者 nfs 客户端默认已经这样做了?共享 nfs 共享的 LAN 端是 1GBit 连接。

d)还有其他吗?

完了,走吧。

答案1

我在这里仅回答安全问题,因为这是我最有经验的。

NFS 的安全问题比较棘手。我最推荐的是使用带有 GSS 身份验证机制的 NFS4,但我将继续以您使用 NFS3(甚至 NFS2)的心态回答。

  • 在导出文件中指定 IP、主机名或网络组。绝不导出到*,因为这允许任何地方的任何人访问您的共享。
  • 切勿使用insecureno_root_squash导出选项。secure将服务器的信任限制为客户端上的根用户,而不仅仅是任何用户,并将root_squash根用户的请求重新映射到nobody,从而防止通过共享访问敏感系统文件。
  • 正如您已经尝试做的一样,不要允许从 Internet 访问 portmapper、rpc.nfsd 或 rpc.mountd。良好的网络设置(防火墙、路由器 ACL 等)将确保这一点,但选择-iportmap使用hosts.allow文件来限制对本地 IP 的访问也是好主意。

如果你想测试你的设置是否存在安全问题,我编写了一个 Python 程序来绕过基本的 NFS 安全机制,NfSpy。请随意尝试一下,看看您是否可以以意想不到的方式访问您的导出。

PS 关于客户端重新连接尝试,请参阅MOUNT OPTIONSnfs(5) 手册页的部分。通常,和retrans/hard选项soft控制您想要的内容,但基于每个请求。即使服务器长时间停机,挂载本身仍将保持运行。这些设置决定如何处理特定请求(读取、写入等)。

答案2

这确实是一个非常广泛的话题,没有任何东西可以通过一篇文章快速回答。我认为你应该先阅读一些关于 NFS 服务器和客户端强化和最佳实践的指南。

我在 Google 上进行了快速搜索,发现了两个您可能感兴趣的链接:

保护 NFS

Linux NFS 指南

(包含最佳实践以及有关安全和调整的许多其他有用信息)

相关内容