0x01 NFS 简介: NFS 一个比较古老[比自己的年龄都大]
的网络文件系统,不过,相对比较稳定,由服务端和客户端组成 [ 即 C/S 架构 ] ,服务端主要负责提供共享目录 [一般为web的用户数据存放目录,专门用来存放用户上传的各类静态数据],而客户端则负责存取该共享目录中的数据
0x02 NFS 容易产生安全问题的几个点:
共享目录在本地文件系统中的权限问题 NFS服务用户权限设置问题 NFS客户端挂载的安全及性能问题 .....
0x03 环境部署简介 [ 所有系统均以 centOS6.8_x64 最小化安装,只带有必要的环境库 ]:
nfs服务端:
NfsServer ip: 192.168.4.2
<!– more –>
nfs客户端:
NfsClient5 ip: 192.168.4.4 为CentOS5.5 i386 NfsClient6 ip: 192.168.4.3
0x04 NFS 的一些优缺点:
优点
NFS 较适合中小型集群,典型特点,高效,灵活,稳定,简单,易用 主要用来存放用户上传的各种静态资源,如,各类视频,图片,office,pdf文件等...,当然啦,比如各类文章数据什么的依然还是会存到数据库中 这样做的好处就是,文件非常规整,容易集中处理 [如,备份,严格权限控制]…… 言外之意,也就是说在这里是不会存放有任何后台代码文件的
缺点
网络状况不是太好的时候,会极大影响传输速度,毕竟不是直接存到本地,而是通过网络存到挂载的远程共享目录中,对网络环境比较依赖 另外,默认用明文传输,无任何验证 多客户端挂载连接的问题,服务端一旦无故down掉,客户端可能会一直处于卡住的状态
0x05 另外,还有一种 linux 文件共享实现 [基于samba]:
samba 非常小巧,方便,简单,不过更适合用于小型办公内网实现linux和windows之间文件共享用,它有些类似于win下的文件共享,跟NFS完全不是一类东西
0x06 NFS 内部工作细节简要分析:
-> RPC服务端一定要最先起来,即处于bind状态 -> 然后,再启动NFS服务端,NFS服务端在启动时会自动向RPC服务注册数据传输端口 [ 其实就是告诉rpc服务端等会儿可以从哪些端口来传数据 ] -> 最后,当NFS客户端通过rpc客户端来连的时候,服务端的rpcbind就会把NFS服务端启动时注册的那些端口,告诉它,然后客户端就可以从指定的端口拿到数据了 -> RPC 客户端工具 rpcbind [centos6.x] / portmap[centos5.x]
0x07 准备开始安装NFS,所需的软件包如下:
nfs-utils NFS 服务端的主程序,里面包含一些nfs工具 rpcbind [centos6.x] / portmap [centos5.x] RPC 客户端工具
# rpm -qa nfs-utils rpcbind # yum install nfs-utils rpcbind -y 在客户端和服务端机器上都要装 [ 因为showmount工具在软件包中 ],但客户端不需要配置也不用起NFS服务 # yum install nfs-utils nfs-utils-lib -y 在centOS5.x 中安装NFS
0x08 尝试启动 NFS 服务端:
# /etc/init.d/rpcbind start 务必要最先起rpc服务,rpcbind默认工作在tcp/udp的111端口 # /etc/init.d/rpcbind status 确认服务是否已经成功启动 # lsof -i :111 # netstat -tulnp | grep "111" # chkconfig --list rpcbind 检查是否已经自启动 [ 实际生产环境中不建议用chkconfig实现自启动,可直接把启动命令放到/e