1. 使用TCP Wrappers配置白名单
通过修改/etc/hosts.allow和/etc/hosts.deny文件,仅允许特定IP访问NFS的mountd服务(需确保系统支持TCP Wrappers):
编辑/etc/hosts.allow,添加允许的客户端IP(如192.168.12.12和192.168.12.14):
mountd:192.168.12.12,192.168.12.14
编辑/etc/hosts.deny,禁止所有其他IP访问mountd:
mountd:all
生效条件:无需重启NFS服务,修改后立即生效。
验证:在非白名单的客户端执行showmount -e <NFS服务器IP>,应返回类似RPC: Authentication error的错误。
2. 通过防火墙限制端口访问
如果系统未启用TCP Wrappers,或需更严格的控制,可通过防火墙规则限制NFS相关端口的访问:
绑定NFS服务端口(避免动态端口导致规则失效):
# 修改/etc/sysconfig/nfs,添加固定端口配置
RQUOTAD_PORT=30001
LOCKD_TCPPORT=30002
LOCKD_UDPPORT=30002
MOUNTD_PORT=30003
STATD_PORT=30004
重启NFS服务:
systemctl restart nfs-server rpcbind
配置iptables规则,仅允许特定IP访问NFS端口:
# 允许白名单IP访问NFS端口
iptables -A INPUT -p tcp -s 192.168.85.15 --dport 111,2049,30001:30004 -j ACCEPT
iptables -A INPUT -p udp -s 192.168.85.15 --dport 111,2049,30001:30004 -j ACCEPT# 拒绝其他所有IP
iptables -A INPUT -p tcp --dport 111,2049,30001:30004 -j DROP
iptables -A INPUT -p udp --dport 111,2049,30001:30004 -j DROP
保存防火墙规则(避免重启失效):
service iptables save # 或使用firewalld持久化配置
3. 检查NFS配置文件(/etc/exports)
确保共享目录的权限仅对授权IP开放,例如:
# 仅允许192.168.12.12和192.168.12.14读写访问
/data 192.168.12.12/32(rw,sync)
/data 192.168.12.14/32(rw,sync)
执行exportfs -rv刷新配置。
4. 关闭不必要的NFS服务
如果无需使用NFS服务,直接关闭相关服务:
systemctl stop nfs-server rpcbind
systemctl disable nfs-server rpcbind
验证修复效果
白名单客户端:
执行showmount -e <NFS服务器IP>应正常显示共享列表。
非白名单客户端:
执行showmount -e应返回权限错误(如RPC: Authentication error)。
注意事项
防火墙规则顺序:确保ACCEPT规则在DROP规则之前,避免误拦截。
云服务器操作:修改防火墙前,确保保留SSH等管理端口,避免被锁定。
系统兼容性:Anolis OS 8.4基于CentOS/RHEL生态,上述方法兼容性较高,但需确认tcp_wrappers是否已安装。
通过上述任一方法均可修复漏洞,推荐结合TCP Wrappers白名单和防火墙规则双重加固。