解决目标主机showmount -e信息泄露(CVE-1999-0554)
企业中,一般都会使用NFS网络文件系统。最近在项目上做等保测评的工作中,发现了一个“目标主机showmount -e信息泄露(CVE-1999-0554)“的问题。最终采取的解决措施如下:
1. 问题现状
目前,我有三台主机,分别为主机a,主机b和主机c,其中主机a为服务器,部署了nfs,只允许主机b使用,然而主机c可以通过showmount -e命令来浏览主机a的目录清单。
#主机a的nfs服务配置文件,其中10.28.7.210是主机b的IP地址 [root@a ~]# cat /etc/exports /data 10.28.7.210/32(rw,sync)
#主机b使用showmount -e命令可以查看到的信息 [root@b ~]# showmount -e 10.28.7.253 Export list for 10.28.7.253: /data 10.28.7.210/32 [root@b ~]# ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.28.7.210 netmask 255.255.255.0 broadcast 10.28.7.255
#主机c也可以使用showmount -e命令查看nfs服务器上共享出来的目录信息 [root@c ~]# showmount -e 10.28.7.253 Export list for 10.28.7.253: /data 10.28.7.210/32 [root@c ~]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:62:18:E8 inet addr:10.28.7.252 Bcast:10.28.7.255 Mask:255.255.255.0
2. 解决方法
在NFS服务器上的/etc/hosts.allow和/etc/hosts.deny文件添加以下内容即可解决该问题。
编辑/etc/hosts.allow文件
[root@a ~]# cat /etc/hosts.allow # # hosts.allow This file contains access rules which are used to # allow or deny connections to network services that # either use the tcp_wrappers library or that have been # started through a tcp_wrappers-enabled xinetd. # # See 'man 5 hosts_options' and 'man 5 hosts_access' # for information on rule syntax. # See 'man tcpd' for information on tcp_wrappers # # mountd:10.28.7.210 #<==添加客户端IP地址,相当于白名单
编辑/etc/hosts.deny文件
[root@a ~]# cat /etc/hosts.deny # # hosts.deny This file contains access rules which are used to # deny connections to network services that either use # the tcp_wrappers library or that have been # started through a tcp_wrappers-enabled xinetd. # # The rules in this file can also be set up in # /etc/hosts.allow with a 'deny' option instead. # # See 'man 5 hosts_options' and 'man 5 hosts_access' # for information on rule syntax. # See 'man tcpd' for information on tcp_wrappers # # mountd:all #<==添加该行,相当于黑名单
在以上两个文件中添加对应内容之后,不需要重启nfs服务,即可生效
3. 结果测试
#主机c使用showmount -e命令,无法查看相关信息 [root@c ~]# showmount -e 10.28.7.253 rpc mount export: RPC: Authentication error; why = Failed (unspecified error) [root@c ~]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:62:18:E8 inet addr:10.28.7.252 Bcast:10.28.7.255 Mask:255.255.255.
#主机b使用正常 [root@b ~]# showmount -e 10.28.7.253 Export list for 10.28.7.253: /data 10.28.7.210/32 [root@b ~]# ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.28.7.210 netmask 255.255.255.0 broadcast 10.28.7.255