目標主機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

 

服務器端(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後面是不會生效的

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章