从你提供的 /etc/exports
文件内容来看,当前的NFS共享配置允许整个 192.168.112.0/24
子网内的任何主机以读写(rw
)模式挂载 /data/data
目录。此外,使用了几个特定的选项:
rw
:允许挂载的主机对共享进行读写操作。sync
:在回应客户端之前,写操作会被写入磁盘。all_squash
:将所有远程访问者的请求映射到匿名用户或组。这意味着无论是哪个用户或组从客户端进行访问,他们的操作都将以NFS服务器上指定的匿名用户的身份执行。
这样的配置为你的网络内的任何主机提供了相当宽松的访问权限,可能不是特别安全,特别是如果你只想让特定的几台服务器有权限访问此NFS共享。
如果你希望仅限制特定的几台服务器(如你之前提到的四台服务器:192.168.112.21、192.168.112.22、192.168.112.23、192.168.112.24)访问 /data/data
,你需要将 /etc/exports
文件中的那一行修改为更严格的配置,明确指定这些IP地址:
/data/data 192.168.112.21(rw,sync,all_squash) 192.168.112.22(rw,sync,all_squash) 192.168.112.23(rw,sync,all_squash) 192.168.112.24(rw,sync,all_squash)
这样,只有这四台特定的服务器才能访问 /data/data
目录。
应用更改
修改 /etc/exports
文件后,别忘了重新导出NFS共享使更改生效:
exportfs -rav
还应检查并相应调整防火墙设置,确保这些特定服务器的通信不会被阻塞。
这样配置后,你就具体限制了哪些客户端可以访问NFS共享,并增加了系统的安全性。
如果你之前已经关闭了CentOS 8上的防火墙,但现在考虑使用防火墙作为解决或减轻showmount -e
信息泄露问题的一部分策略,这是一个很好的决定。防火墙可以帮助你限制对NFS服务的访问,确保只有那四台指定的服务器可以访问,从而减少信息泄露的风险。
查看防火墙状态
首先,让我们确认防火墙的当前状态。在CentOS 8中,firewalld
是默认的防火墙管理工具。你可以使用以下命令来检查firewalld
的状态:
systemctl status firewalld
如果防火墙已关闭,你将看到inactive (dead)
状态。
启动防火墙
如果防火墙已经关闭,你可以使用以下命令启动firewalld
:
systemctl start firewalld
然后,使用systemctl enable firewalld
命令确保防火墙在系统启动时自动启动:
systemctl enable firewalld
配置防火墙以限制NFS访问
你的目标是确保只有特定的四台服务器能够访问NFS服务。使用firewalld
,你可以设置规则来允许这些特定的IP地址访问NFS端口(2049是NFS的默认端口,而端口111是RPC绑定端口,可能也需要被允许)。执行以下命令为每台服务器添加规则:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.112.21" port port=2049 protocol=tcp accept'
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.112.22" port port=2049 protocol=tcp accept'
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.112.23" port port=2049 protocol=tcp accept'
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.112.24" port port=2049 protocol=tcp accept'
firewall-cmd --reload
验证配置
最后,你可以使用firewall-cmd --list-all
命令来验证防火墙规则是否正确应用。这应该会显示你所添加的规则。
通过以上步骤,你将有效限制对NFS服务的访问,仅允许这四台特定的服务器进行访问,这有助于减轻showmount -e
可能导致的信息泄露风险。记住,维护良好的防火墙规则是网络安全的关键组成部分。