NFS服务器+客户端:推荐的加固/最终的接触

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

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

以下显示了客户端的所有文件/文件夹:

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

这个可以吗?

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

c)在重新连接尝试时,让nfs客户端尽可能具有攻击性的理想方法是什么? 理想情况下,如果networking连接在任何时候丢失,nfs客户端将不断地尝试,并无限期地尝试。 有没有可能通过fstab完成这个? 还是nfs客户端默认已经这样做? 共享nfs共享的LAN端是1GBit连接。

d)还有什么?

完了,走吧。

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

NFS很难保证安全。 我可以推荐的最重要的事情是使用具有GSS身份validation机制的NFS4,但我会继续回答,就好像您使用的是NFS3(甚至是NFS2)。

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

如果你想testing你的设置的安全问题,我写了一个Python程序绕过基本的NFS安全机制, NfSpy 。 随意尝试一下,看看你是否可以以你不希望的方式访问你的出口。

PS关于客户端重新连接尝试,请参阅nfs(5)联机帮助页的MOUNT OPTIONS部分。 一般来说,重传和hard / soft选项控制你想要的,但在每个请求的基础上。 即使服务器长时间closures,挂载本身也会保持不变。 这些设置决定如何处理特定的请求(读取,写入等)。

这确实是一个非常广泛的话题,没有什么可以用一个单一的职位迅速回答。 我想你应该从阅读关于NFS服务器和客户端的强化和最佳实践的许多指南开始。

我在google中search了一下,发现了两个可能会让你感兴趣的链接:

保护NFS

Linux NFS-HOWTO

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