Linux之NFS服务

环境
VMware Workstation 14
系统
Server:Kali-linux-2023.1(IP:192.168.20.101)
Client:Centos-Stream-9-latest(IP:192.168.20.102)
说明
NFS简介
NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
以下是NFS最显而易见的好处:
- 节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用。
- 用户不需要在网络中的每个机器上都建有Home目录,Home目录可以放在NFS服务器上且可以在网络上被访问使用。
- 一些存储设备如软驱、CDROM和Zip(一种高储存密度的磁盘驱动器与磁盘)等都可以在网络上被别的机器使用。这可以减少整个网络上可移动介质设备的数量。
需要特别强调,NFS服务用于Linux类的主机间的文件共享,当需要与windows生态进行访问时,需要采用SMB协议。
服务搭建
在NFS的服务中,主要依赖于nfs-utils与rpcbind的来进行服务。
I.在centos中,使用如下命令安装所需服务
1 | [root@Server ~]# yum install rpcbind nfs-utils -y |
II.启动服务
1 | systemctl start rpcbind |
查看rpc服务的注册情况,可使用rpcinfo的指令进行查看。
1 | rpcinfo -p localhost |
III.NFS配置文件
01.配置目录为/etc/exports,根据需要建立分享文件
1 | mkdir /share1 |
02.编辑/etc/exports,输入如下内容:
1 | /share1 *(sync,ro) 10.10.20.101(sync,rw) |
编辑完成后,需要运行exportfs重新发布所共享的目录。(exportfs -r 重新读取配置文件)
如果需要重启服务,建议先重启rpcbind再重启NFS服务。
配置文件含义如下:
输出”/share1”目录,对所有主机可读,对IP地址为10.10.20.101的主机可读可写。
输出”/share2”目录,对10.10.0.0/24网络内的所有主机可读。
配置文件每行分为两段:第一段为共享的目录,使用绝对路径,第二段为客户端地址及权限。
1 | 地址可以使用完整IP或网段,例如10.0.0.8或10.0.0.0/24,10.0.0.0/255.255.255.0当然也可以地址可以使用主机名,DNS解析的和本地/etc/hosts解析的都行,支持通配符,例如:*.fsec.io |
IV.客户端访问
01.showmount命令:
showmount -e显示本地NFS服务器中的共享列表
showmount -e IP 显示指定NFS服务器中的共享列表
02.mount命令:
mount命令用于挂载磁盘,在nfs的服务中,需要使用mount -t nfs 或者mount.nfs的指令进行指定挂载的类型。
使用挂载前先在客户端创建挂载点。
1 | mkdir -p /mnt/share1 /mnt/share2 |
随后使用mount指令将远程主机的目录挂载至本机的目录。
1 | mount -t nfs 10.10.20.101:/share1 /mnt/share1 |
当我们进入到挂载好的目录中,分别进行创建文件的测试,会发现虽然同时失败,但报错的信息却分别为权限不够与只读文件系统。
但我们所配置的权限中,特定的IP已经给予rw的权限,却提示权限不够。换言之,share2的权限是对的,share1的写入权限为错误状态。
exports目录权限中,有这么一个参数no_root_squash。
其作用是:登入 NFS 主机使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有root 的权限!。默认情况使用的是相反参数root_squash:在登入 NFS 主机使用分享之目录的使用者如果是 root 时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的UID 与 GID 都会变成 nobody 那个身份。
为此重新修正权限后即可完成写入。
V.卸载已挂载的目录
mount |grep nfs显示当前主机挂载的NFS共享目录
umount 命令卸载NFS 文件系统(不要在挂载的目录中进行操作)
哪些文件需要备份
数据无价!!!
数据库、web代码、web所上传的文件、日志等。
错误的NFS配置
第一,如果NFS暴露在公网中,虽然只给予了只读权限,那么外网主机通过访问共享即可得到敏感的数据。
第二,NFS在位于内网中的情况,那么当攻击者拿到其中一台主机的权限后,可通过访问备份的目录进入到数据集中的区域。
第三,如果将敏感的目录共享出去,攻击者有可能查看到/etc/shadow或者编辑密钥实现攻击。











