NFS - Network File System

网络文件系统

NFS Basic information

Network File System是 Sun Microsystems 开发的一种网络文件系统,其目的与 SMB 相同。其目的是通过网络访问文件系统,就像访问本地文件系统一样。不过,它使用的是完全不同的协议。 NFS 用于 Linux 和 Unix 系统之间。这意味着 NFS 客户端不能直接与 SMB 服务器通信。NFS 是一个管理分布式文件系统程序的互联网标准。已使用多年的 3.0 版 NFS 协议(NFSv3)会对客户端计算机进行身份验证,而 NFSv4 则改变了这一做法。在这里,与 Windows SMB 协议一样,用户必须进行身份验证。

版本

特征

NFSv2

它较旧,但受许多系统支持,并且最初完全通过 UDP 运行。

NFSv3

它具有更多功能,包括可变文件大小和更好的错误报告,但与 NFSv2 客户端不完全兼容。

NFSv4

它包括 Kerberos,可穿过防火墙并在 Internet 上工作,不再需要端口映射程序,支持 ACL,应用基于状态的操作,并提供性能改进和高安全性。它也是第一个具有状态协议的版本。

NFS 版本 4.1 ( RFC 8881 ) 旨在提供协议支持以利用集群服务器部署,包括提供对分布在多个服务器上的文件进行可扩展并行访问的能力(pNFS 扩展)。此外,NFSv4.1 还包括会话中继机制,也称为 NFS 多路径。NFSv4 相对于其前身的一个显着优势是仅2049使用一个 UDP 或 TCP 端口来运行该服务,这简化了跨防火墙的协议使用。

NFS 基于 Open Network Computing Remote Procedure CallONC-RPC/SUN-RPC)协议,暴露在 TCPUDP 端口 111 上,该协议使用 External Data RepresentationXDR)进行独立于系统的数据交换。NFS 协议没有验证或授权机制。相反,身份验证完全由 RPC 协议的选项决定。授权来自于可用的文件系统信息。在此过程中,服务器负责将客户端的用户信息转换为文件系统格式,并尽可能准确地将相应的授权详细信息转换为所需的 UNIX 语法。

最常见的身份验证是通过 UNIX UID/GIDgroup memberships,这就是为什么此语法最有可能应用于 NFS 协议。一个问题是客户端和服务器不一定必须具有相同的 UID/GID 到用户和组的映射,并且服务器不需要做任何进一步的事情。服务器方面无法进行进一步的检查。这就是为什么 NFS 只能在受信任的网络中与此身份验证方法一起使用。

默认配置

//Exports File
AcesMin@htb[/htb]$ cat /etc/exports 

# /etc/exports: the access control list for filesystems which may be exported
#               to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)

默认exports文件还包含一些配置 NFS 共享的示例。首先,指定文件夹并使其可供其他人使用,然后将他们对此 NFS 共享拥有的权限连接到主机或子网。最后,可以将其他选项添加到主机或子网中.

选项

描述

rw

读写权限。

ro

只读权限。

sync

同步数据传输。(慢一点)

async

异步数据传输。(快一点)

secure

1024 以上的端口将不会被使用。

insecure

将使用 1024 以上的端口。

no_subtree_check

此选项禁用子目录树的检查。

root_squash

将root UID/GID 0的文件的所有权限分配给anonymous的UID/GID,这样可以防止root访问NFS挂载上的文件。

ExportFS

我们已使用上面显示的设置将该文件夹共享/mnt/nfs到子网。10.129.14.0/24这意味着网络上的所有主机都能够挂载此 NFS 共享并检查此文件夹的内容。

危险环境

然而,即使使用 NFS,某些设置也可能对公司及其基础设施造成危险。以下列出了其中一些:

选项

描述

rw

读写权限。

insecure

将使用 1024 以上的端口。

nohide

如果另一个文件系统安装在导出目录下,则该目录将由其自己的导出条目导出。

no_root_squash

所有由 root 创建的文件都以 UID/GID 0 保存。

这个insecure选项。这是危险的,因为用户可以使用 1024 以上的端口。前 1024 个端口只能由 root 使用。这可以防止任何用户都无法将端口 1024 以上的套接字用于 NFS 服务并与之交互。

Footprinting the Service(服务资产收集)

一旦我们发现了这样的 NFS 服务,我们就可以将其挂载到我们的本地计算机上。为此,我们可以创建一个新的空文件夹,NFS 共享将安装到该文件夹​​中。安装后,我们可以像本地系统一样导航并查看内容。

显示可用的 NFS 共享

Unmounting(卸载)

最后更新于

这有帮助吗?