Centos8 NFS漏洞修复
-
由于centos8后,nfs相关的配置发送了变化,无法固定端口方式来做防火墙,由于一般导致漏洞的原因主要是由于showmount -e,所以我们这里采取的方式是nfs server端仅使用v4版本,禁止使用v3版本
-
NFS 服务器支持 NFSv3 和 NFSv4 连接。但是,您还可以将 NFS 配置为只支持 NFS 版本 4.0 及更新的版本。这可最大限度地减少系统上打开的端口的数量和运行的服务,因为 NFSv4 不需要
rpcbind(禁用后,即可实现showmount -e 无法出内容)
服务来侦听网络 -
另外,您还可以禁用对
RPCBIND
、MOUNT
和NSM
协议调用的监听,这在仅使用 NFSv4 的情况下不需要 -
正常情况下NFS可以使用firewalld进行规避,但是由于k8s默认底层会调用iptables,这里就不采用firewalld方式了
-
禁用这些额外选项的影响有:
-
试图使用 NFSv3 从服务器挂载共享的客户端变得无响应。
-
NFS 服务器本身无法挂载 NFSv3 文件系统
-
NFS配置
# 修改nfs server端配置
vim /etc/nfs.conf
[nfsd]
# debug=0
# threads=8
# host=
# port=0
# grace-time=90
# lease-time=90
# tcp=y
vers2=n # 禁用v2协议
vers3=n # 禁用v3协议
vers4=y # 启用v4协议
vers4.0=y # 启用v4协议
vers4.1=y # 启用v4协议
vers4.2=y # 启用v4协议
# rdma=n
#
# 禁用对 RPCBIND、MOUNT 和 NSM 协议调用的监听(一般情况下这个是可选的,但是在修复漏洞情景下为必做),在仅使用 NFSv4 情况下不需要这些调用。禁用相关服务:
systemctl mask --now rpc-statd.service rpcbind.service rpcbind.socket
# 重启 NFS 服务器:
systemctl restart nfs-server
NFS验证
# 以下是仅使用 NFSv4 服务器上 netstat 输出的示例;也禁用了对 RPCBIND、MOUNT 和 NSM 的侦听。这里,nfs 是唯一侦听 NFS 的服务:
# nfs server节点运行命令
[root@localhost ~]# netstat -tulp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 localhost.locald:domain 0.0.0.0:* LISTEN 3454/dnsmasq
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN 2667/sshd
tcp 0 0 0.0.0.0:nfs 0.0.0.0:* LISTEN -
tcp6 0 0 [::]:ssh [::]:* LISTEN 2667/sshd
tcp6 0 0 [::]:nfs [::]:* LISTEN -
udp 0 0 localhost.locald:domain 0.0.0.0:* 3454/dnsmasq
udp 0 0 0.0.0.0:bootps 0.0.0.0:* 3454/dnsmasq
# showmont -e 验证,本机和其他机器运行命令验证
[root@localhost ~]# showmount -e nfs_server_ip # 这里因该要卡死,无法出现挂载目录
clnt_create: RPC: Timed out
# nfs挂载功能验证,要能挂载正常
mount -t nfs nfs_server_ip:/data/nfsshare /mnt
# 取消挂载,挂载成功后,一定要记得取消挂载
umount /mnt