网络文件系统(英语:Network File System,缩写为NFS)是一种分布式文件系统协议,windows通常使用smb在局域网内共享文件,而nfs主要通过局域网让不同主机之间可以共享文件和目录。
客户端通过mount 方式将nfs的服务端共享数据挂载到本机系统中。从客户端本地,挂在的分区就像服务器本地的文件或者目录一样。
企业中也通常在集群系统中使用nfs来部署后端源服务器,减小web服务器的o/i读写。
QQ20190331-153552@2x.png
在企业集群工作场景中,nfs被用作储存共享视频,图片,静态文件等。例如upload目录等,通常需要反复读写的静态文件,就可以通过后端的nfs服务器给挂载到客户端,降低前端服务器的读写压力。
Nfs因为其支持功能多,不同功能需要不同的程序来启动,每个功能会占用不同的端口,所以它无法固定端口,由此可能会造成nfs服务端和客户端的传输障碍,由此,nfs同行从哪个是使用rpc服务来记录nfs对应的不同端口号,并且将nfs客户端的请求回应给客户端。这样就确保了nfs客户端和服务端之间能够成功连接。
而在网站安全考虑,如果用户上传的非法文件(webshell),就算上传,没有php解释器或者web容器的话,上传的脚本木马也就不是问题了,既然无法解析,那对网站的安全也就无法影响了。
过程如图:
QQ20190331-153558@2x.png
环境:centos6.9 内存512m

[bash]
#yum -y install nfs-utils rpcbind
#service rpcbind status
#service rpcbind start
#lsof -i :111
#111端口是rpc对外服务的端口
#service nfs start
#chkconfig rpcbind on
#chkconfig nfs on
#mkdir -p /home/nfsfile/upload
#vi /etc/exports //编辑配置文件,添加一行
#/home/nfsfile/upload    *(rw,sync,no_root_squash)
#这里两段参数的作用是 NFS共享目录 后面是NFS客户端地址 *通配符代表所有来源访问,也可以使用xxx.xxx.xxx.0/24 来确定一个网段客户端访问。括号内是对目录的全血设置
# chown -R nfsnobody.nfsnobody /home/nfsfile/upload
#设置一下共享用户的权限,防止777权限造成其他的不必要的安全问题。
[/bash]

QQ20190331-153609@2x.png

接上文提一点安全问题,如果在编辑/etc/exports时允许任意服务器连接。
QQ20190331-153617@2x.png
QQ20190331-153624@2x.png
nfs服务器的内网ip:10.14.2.238
客户端:

#yum install -y rpcbind
#service rpcbind strarls 
#showmount -e 10.14.2.238

如果能够没有报错,便证明可以挂载。
QQ20190331-153733@2x.png

#mout -t nfs 10.14.2.238:/home/nfsfile/upload /data/nfs

我在本地touch一个1.txt
可以看到服务器出现了1.txt。

标签: none

添加新评论