解决nfs showmount -e CVE-1999-0554

首先是漏洞

本来我以为是个很容易搞定的问题,没想到折腾一下午,做了allow,做了deny,做了exports,还是不行。原因是nfs的开放性,这个后面再说,直接上解决思路吧。

环境是内网环境,服务器分布

机器IP        用途
192.168.1.34(K8Smaster)主节点+nfs
192.168.1.35(K8Snode)nfs2+从节点
192.168.1.36(K8Snode)从节点
192.168.1.20(借了一台机器)测试整改效果

目前的要求是,nfs只能集群内部访问,其他机器,比如20这台,执行showmount -e 192.168.1.34是无输出的。

解决步骤:

1. 配置  /etc/exports文件,这个文件是负责目录位置,目录共享的,参数解析如下

第一列:欲共享出去的目录,
    也就是想共享到网络中的文件系统;

第二列:可访问主机
192.168.1.34 指定IP地址的主机
nfsclient.test.com 指定域名的主机
192.168.1.0/24 指定网段中的所有主机
*.test.com        指定域下的所有主机

*                       所有主机

第三列:共享参数
下面是一些NFS共享的常用参数:
 ro                    只读访问
 rw                   读写访问
 sync                所有数据在请求时写入共享
 async              NFS在写入数据前可以相应请求
 secure             NFS通过1024以下的安全TCP/IP端口发送
 insecure          NFS通过1024以上的端口发送
 wdelay            如果多个用户要写入NFS目录,则归组写入(默认)
 no_wdelay      如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
 Hide                在NFS共享目录中不共享其子目录
 no_hide           共享NFS目录的子目录
 subtree_check   如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
 no_subtree_check   和上面相对,不检查父目录权限
 all_squash               共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
 no_all_squash         保留共享文件的UID和GID(默认)
 root_squash             root用户的所有请求映射成如anonymous用户一样的权限(默认)
 no_root_squas         root用户具有根目录的完全管理访问权限
 anonuid=xxx            指定NFS服务器/etc/passwd文件中匿名用户的UID

这里我们将1.34的nfs目录设置为只共享给34,35,36这几台集群内部机器

2.设置/etc/hosts.allow和/etc/hosts.deny

hosts.allow

hosts.deny

然后,我们就可以验证一下成果了(由于当时没截图,所以这里找一张旧图,意思是仍然可以完好输出,但无法共享)

懵了啊,搞了这么多台系统,都是这么来的,双重保障,怎么翻车了?

看了不少文章,也找了不少资料,发现假如rpcbind的111端口和nfs的2049端口开放,在其他机器还是一样可以export的

这个不懂是nfs的开放性所致还是统信系统的特质。

遂搞端口控制,配置iptables

同理,nfs的2049也搞一下

然后,我们再来一波测试

完工。

但这东西,如果防火墙停了,就没用了,但对于现在来说,应该不会有人不开防火墙。

另外,还是没懂为什么做了allow和deny仍然能访问的真正底层原因,如果有知道的大佬,也可以分享一下。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值