date: 2020-10-17title: 搭建nfs服务并配置防火墙规则 #标题
tags: nfs,firewalld #标签
categories: 工作大杂烩 # 分类
公司业务进行安全整改,扫描到nfs的showmount -e信息泄露问题(漏洞代码:CVE-1999-0554),要求整改。
由于nfs服务没有固定端口,需要配置固定端口,我采用这种方式找文档做了一下,没有成功,也就没有深入研究,所以换个姿势,针对服务名来放行相关流量。
需求描述
192.168.20.2 作为nfs服务器,192.168.20.3/192.168.20.4作为clinet挂载nfs共享目录,要求除这两个client端外,其他节点无法通过showmount -e 查看到192.168.20.2共享的目录。
配置nfs共享服务器
# 安装服务
[root@nfs ~]# yum -y install nfs-utils rpcbind
# 设置开机自启
[root@nfs ~]# systemctl enable nfs
[root@nfs ~]# systemctl enable rpcbind
# 配置共享目录
[root@nfs ~]# mkdir /data
[root@nfs ~]# cat /etc/exports
/data 192.168.20.0/24(rw,sync,no_root_squash)
# 启动相关服务
[root@nfs ~]# systemctl start rpcbind
[root@nfs ~]# systemctl start nfs
nfs可选参数
参数 | 作用 |
---|---|
ro | 只读 |
rw | 读写 |
root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户 |
no_root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员 |
all_squash | 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户 |
sync | 同时将数据写入到内存与硬盘中,保证不丢失数据 |
async | 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据 |
配置防火墙富规则
[root@nfs ~]# cat /etc/firewalld/zones/public.xml # 以下是完整的public区域配置文件
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Public</short>
<description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
<service name="ssh"/>
<service name="dhcpv6-client"/>
<!--从这里开始,是给主机192.168.20.3放行相关流量-->
<rule family="ipv4">
<source address="192.168.20.3"/>
<service name="nfs"/>
<accept/>
</rule>
<rule family="ipv4">
<source address="192.168.20.3"/>
<service name="mountd"/>
<accept/>
</rule>
<rule family="ipv4">
<source address="192.168.20.3"/>
<service name="rpc-bind"/>
<accept/>
</rule>
<!--192.168.20.3放行nfs相关流量至此结束 -->
<!--以下是给192.168.20.4主机放行相关流量,以后有哪个主机要使用此nfs共享目录,则放行nfs、mountd、rpc-bind这三个服务即可-->
<rule family="ipv4">
<source address="192.168.20.4"/>
<service name="nfs"/>
<accept/>
</rule>
<rule family="ipv4">
<source address="192.168.20.4"/>
<service name="mountd"/>
<accept/>
</rule>
<rule family="ipv4">
<source address="192.168.20.4"/>
<service name="rpc-bind"/>
<accept/>
</rule>
</zone>
[root@nfs ~]# systemctl start firewalld # 如果防火墙没有启动,则需要启动
[root@nfs ~]# firewall-cmd --reload # 重新加载防火墙配置
客户端挂载使用
$ yum -y install nfs-utils
$ mount -t nfs 192.168.20.2:/data/ /data # 挂载到本地/data目录
$ df -hT /data/ # 确认已挂载
文件系统 类型 容量 已用 可用 已用% 挂载点
192.168.20.2:/data nfs4 50G 4.5G 46G 9% /data
[root@localhost ~]# tail -n1 /etc/fstab # 配置开机自动挂载
192.168.20.2:/data /data nfs4 defaults 0 0
安全整改至此结束,至于开机自动挂载等,自行验证即可。
如果客户端挂载时报错如下:
$ mount -t nfs 192.168.20.4:/data /data
mount: 文件系统类型错误、选项错误、192.168.20.4:/data 上有坏超级块、
缺少代码页或助手程序,或其他错误
(对某些文件系统(如 nfs、cifs) 您可能需要
一款 /sbin/mount.<类型> 助手程序)
有些情况下在 syslog 中可以找到一些有用信息- 请尝试
dmesg | tail 这样的命令看看。
解决办法
yum -y install nfs-utils