目标主机showmount -e信息泄露(CVE-1999-0554),如何禁止只允许特定主机使用showmount -e查看挂载列表

最近单位信息系统做安全等保,因为服务器使用了nfs文件共享,而导致在等保扫描中发现了一个高危漏洞,通过showmount -e可以展示nfs挂载列表,然后建议整改方法是限制使用showmount -e展示列表的主机,也就是说在使用nfs的客户端可以通过showmount -e展示可挂载的主机列表,其他主机均不可以使用showmount -e展示可挂载列表。思考了一番,发觉还是在nfs服务器端用iptables防火墙来限制好,那么现在遇到了几个问题:

1 客户端nfs使用mount或者showmount命令等貌似是和服务器端动态建立端口的,也就是nfs使用的某些端口不固定,这样iptables很难做限制

2iptables规则怎么写好(因为服务器都在云上,我调试iptables防火墙规则的时候不小心弄得连堡垒机都登录不了主机了55555)

下面给出上面漏洞和问题的解决方案:

1首先在服务器绑定nfs服务的相关端口,这样iptables防火墙规则就可以很容易控制了:

这里我nfs服务器端的ip是10.194.212.131

目标主机showmount -e信息泄露(CVE-1999-0554),如何禁止只允许特定主机使用showmount -e查看挂载列表_第1张图片

 

服务器端(10.194.212.131)绑定nfs服务相关端口:

[root@i-B18A2F40 /]# vi /etc/sysconfig/nfs
#在文件最下面添加如下信息
RQUOTAD_PORT=30001
LOCKD_TCPPORT=30002
LOCKD_UDPPORT=30002
MOUNTD_PORT=30003
STATD_PORT=30004

2在服务器端(10.194.212.131)防火墙配置规则允许特定的主机访问nfs服务端口,其他全部禁止:

[root@i-B18A2F40 /]#  vi /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
#下面三句注意不要注释掉,否则就可能在规则的调试过程中导致无法登陆服务器主机
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
#下面默认自带的五行注意要用#号注释掉
#-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#-A INPUT -p icmp -j ACCEPT
#-A INPUT -i lo -j ACCEPT
#-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
#-A INPUT -j REJECT --reject-with icmp-host-prohibited
#-A FORWARD -j REJECT --reject-with icmp-host-prohibited
#下面是要添加的规则
#允许nfs客户端10.194.212.132访问本机nfs服务端10.194.212.131的相关nfs端口
-A INPUT -p tcp -s 10.194.212.132 --dport 111 -j ACCEPT
-A INPUT -p udp -s 10.194.212.132 --dport 111 -j ACCEPT
-A INPUT -p tcp -s 10.194.212.132 --dport 2049 -j ACCEPT
-A INPUT -p udp -s 10.194.212.132 --dport 2049 -j ACCEPT
-A INPUT -p tcp -s 10.194.212.132 --dport 30001:30004 -j ACCEPT
-A INPUT -p udp -s 10.194.212.132 --dport 30001:30004 -j ACCEPT

#允许nfs客户端10.194.212.133访问本机nfs服务端10.194.212.131的相关nfs端口
-A INPUT -p tcp -s 10.194.212.133 --dport 111 -j ACCEPT
-A INPUT -p udp -s 10.194.212.133 --dport 111 -j ACCEPT
-A INPUT -p tcp -s 10.194.212.133 --dport 2049 -j ACCEPT
-A INPUT -p udp -s 10.194.212.133 --dport 2049 -j ACCEPT
-A INPUT -p tcp -s 10.194.212.133 --dport 30001:30004 -j ACCEPT
-A INPUT -p udp -s 10.194.212.133 --dport 30001:30004 -j ACCEPT

#允许nfs客户端10.194.212.134访问本机nfs服务端10.194.212.131的相关nfs端口
-A INPUT -p tcp -s 10.194.212.134 --dport 111 -j ACCEPT
-A INPUT -p udp -s 10.194.212.134 --dport 111 -j ACCEPT
-A INPUT -p tcp -s 10.194.212.134 --dport 2049 -j ACCEPT
-A INPUT -p udp -s 10.194.212.134 --dport 2049 -j ACCEPT
-A INPUT -p tcp -s 10.194.212.134 --dport 30001:30004 -j ACCEPT
-A INPUT -p udp -s 10.194.212.134 --dport 30001:30004 -j ACCEPT

#禁止其他主机访问本机nfs服务端10.194.212.131的相关nfs端口
-A INPUT -p tcp --dport 111 -j DROP
-A INPUT -p udp --dport 111 -j DROP
-A INPUT -p tcp --dport 2049 -j DROP
-A INPUT -p udp --dport 2049 -j DROP
-A INPUT -p tcp --dport 30001:30004 -j DROP
-A INPUT -p udp --dport 30001:30004 -j DROP
COMMIT

我这里有三个客户端(10.194.212.132、10.194.212.133和10.194.212.134)是需要挂载nfs服务器端的共享目录的

完成了上述配置后,可以在其他的客户端用showmount -e命令来测试下规则有没有生效,这里有个方法是,如果像我在云上操作可能没有多余的客户端来测试,那么在第二步添加iptables的规则时不妨先添加一台客户端主机(例如上面的10.194.212.132)的允许访问nfs服务端相关nfs端口规则(上面的第一块规则)和添加禁止其他主机访问nfs服务端相关nfs端口访问规则(上面的第四块规则),然后在其他客户端主机(如10.194.212.133)上面用showmount -e命令测试有没有被禁掉;还有就是添加规则时候先添加accept的规则再添加drop的规则,否则accept规则放在drop后面是不会生效的

 

 

你可能感兴趣的:(linux,showmount,-e信息泄露,iptables,nfs)