五、NFS服务的安全




1、NFS不安全体现在以下几个方面

第一点:新手对NFS的访问控制机制难于做到得心应手,控制目标的精确性难以实现

第二点:NFS没有真正的用户验证机制,而只有对RPC/Mount请求的过程验证机制

第三点:较早的NFS可以使未授权用户获得有效的文件句柄

第四点:在RPC远程调用中,一个SUID的程序就具有超级用户权限

2、加强NFS安全的方法如下

第一:合理的设定/etc/exports中共享出去的目录,最好能使用anonuid,anongid以使MOUNT到NFS SERVER的CLIENT仅仅有最小的权限,最好不要使用root_squash

第二:使用IPTABLE防火墙限制能够连接到NFS SERVER的机器范围
iptables -A INPUT -i eth0 -p TCP -s 192.168.0.0/24 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p UDP -s 192.168.0.0/24 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p TCP -s 140.0.0.0/8 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p UDP -s 140.0.0.0/8 --dport 111 -j ACCEPT

第三:为了防止可能的Dos攻击,需要合理设定NFSD 的COPY数目

第四:修改/etc/hosts.allow和/etc/hosts.deny达到限制CLIENT的目的
/etc/hosts.allow
portmap: 192.168.0.0/255.255.255.0 : allow
portmap: 140.116.44.125 : allow
/etc/hosts.deny
portmap: ALL : deny

第五:改变默认的NFS 端口
NFS默认使用的是111端口,但同时你也可以使用port参数来改变这个端口,这样就可以在一定程度上增强安全性

第六:使用Kerberos V5作为登陆验证系统

六、NFS服务的trouble shooting



   



常见错误

(1)权限的设置不符合

 

(2)忘记了激活portmap服务

错误信息

mount: RPC: Port mapper failure - RPC: Unable to receive 或mount: RPC: Program not registered

解决办法

启动portmap,并且重新启动nfs
#service portmap start
#service nfs restart

(3)被防火墙拦截

重新设置防火墙,包括iptables与TCP_Wrappers,因为激活了portmap,所以port 111必须提供出去.因此在iptables rules中,要增加:
iptables -A INPUT -p TCP --dport 111 -j ACCEPT
iptables -A INPUT -p UDP --dport 111 -j ACCEPT

如果还不行,那就是TCP_Wrappers的问题,检查/etc/hosts.deny,如果有一行是:
  ALL: ALL: deny
那就必须在/etc/hosts.allow中增加:
 

如果我们的NFS针对内部网络开发,对于外部网络只对学术网络开发(140.0.0.0/8),可以:
iptables -A INPUT -i eth0 -p TCP -s 192.168.0.0/24 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p UDP -s 192.168.0.0/24 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p TCP -s 140.0.0.0/8 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p UDP -s 140.0.0.0/8 --dport 111 -j ACCEPT

还可以使用TCP_Wrappers,在/etc/hosts.allow里面规定连上 NFS 主机的主机 IP 与名称,例如
#vi /.etc/hosts.allow
portmap: 192.168.0.0/255.255.255.0 :allow
portmap: 140.113.23.23     :allow

(4)cant contact portmapper: RPC: Remote system error - Connection refused

出现这个错误信息是由于SEVER端的PORTMAP没有启动

(5)mount clntudp_create: RPC: Program not registered

NFS没有启动起来,可以用showmout -e host命令来检查NFS SERVER是否正常启动起来

(6)mount: localhost:/home/test failed, reason given by server: Permission denied

这个提示是当client要mount nfs server时可能出现的提示,意思是说本机没有权限去mount nfs server上的目录。解决方法当然是去修改NFS SERVER