NFS服务器安全策略如下:
(1)使用TCP_Wrappersportmap和rpc。nfsd结合起来,使NFS服务器上的文件即使没有任何权限也能容易得到。可以使用访问控制保障网络安全,在使用NFS时最好结合TCP_Wrappers来限制使用范围。
(2)注意配置文件语法错误NFS服务器通过/etc/exports文件来决定要导出哪些文件系统,以及把这些目录导出到哪些主机上。编辑这个文件的时候要特别小心,不要添加额外的空格。例如:/etc/exports文件的以下行会使主机bob。example 能够共享/tmp/nfs/目录。
/tmp/nfs/ bob。example(rw)但是 /etc/exports 文件中这一行的情况却不同。它共享同一目录,让主机 bob。example 拥有只读权限,却给全局以读写权限。这全是由主机后面的一个空格造成的。/tmp/nfs/bob。
example (rw)使用 showmount 命令来校验哪些目录被共享,从而检查NFS共享配置是一个好习惯。showmount格式为:showmount -e
(3)使用iptables防火墙因为NFS在网络上明文传输所有信息,所以让NFS服务器在防火墙后、在一个分段的安全网络上运行就很重要。
无论何时在不安全的网络上传递NFS信息都有被截取的危险。从这个角度讲,谨慎制定网络计划就有助于防御重要的安全破坏。限制RCP服务访问的办法一般是使用防火墙,除了TCP-Wrapper还有ipchians和iptalbes的防火墙。在全面使用Linux 2。
4或更高版本内核的今天,了解iptables这种防火墙方法也就足够了。 缺省的状态下,portmap使用111端口,而NFS使用2049端口,可以通过iptables来限制对该端口的访问:iptables -t filter -A INPUT -p udp -d 127。
0。0。1 dport 111 -j DROPiptables -t filter -A INPUT -p udp -d 127。0。0。1 dport 2049 -j DROPiptables -t filter -A INPUT -p udp -s trusted_client -d this_server_ip dport \2049 -jACCEPTiptables -t filter -A INPUT -p udp -s not_trusted_client -d this_server_ip -dport\2049 -j DROP
(4)把开放目录限制为只读权限可以在/etc/exports文件中设定权限选项ro,通常需要把NFS服务器对客户开放的任何目录或文件系统设置为只读访问:/app devpc。
nitec(ro)这样,devpc。nitec网络中的客户只能对/app目录进行只读访问。
(5)禁止对某些目录的访问当开放一个完整的文件系统或者一个目录时,缺省情况下它的子目录会自动开放访问权限。如果希望限制对其子目录的访问可以使用noaccess访问选项,例如希望开放/pub目录权限但是禁止访问/pub/staff-only子目录:/pub weblab-??。
nitec (ro)/pub/staff-only weblab-??。nitec (noaccess)注意: ??代表任意字符。
(6)root squashing访问问题按照默认设置,root用户的用户ID和组群ID都是0。root权限压缩(Root squashing)把用户ID0和组群ID0映射为匿名的用户和组群ID,因此客户上的根用户就不会在NFS服务器上具备根特权。
如果这个选项被选,root用户就不会被映射为匿名用户,客户上的root用户就会对导-出的目录拥有根特权。选择这个选项会大大降低系统的安全性。除非绝对必要,请不要选择它。为了明确执行该规则,可以修改文件/etc/exports:/。
nitec(rw, root_squash)这样如果客户端的UID0(root)用户想要访问(读、写、删除)一个NFS文件系统,服务器端会用UID代替服务器的nobody账户。这样客户端的root用户不能修改和访问服务器端root用户才能访问和修改的文件。
(7)使用nosuid和noexec选项SUID(Set User ID)或SGID(Set Group ID)程序可以让普通用户以超过自己权限的形式执行。很多SUID/SGID可执行程序是必须的,比如上面提到的passwd。SUID/SGID程序会被一些恶意的本地用户利用,获取本不应有的权限。
运行以下命令可以找到所有具有这一属性的程序:#find / \( -perm -4000 -o -perm -2000 \)使用者必须查看这一列表,尽量减少那些所有者是root或是在root组中却拥有SUID/SGID属性的文件,删除或对其属性进行更改。
使用nosuid选项禁止set-UID程序在 NFS服务器上运行,可以修改文件/etc/exports加入一行:/。nitec(rw, root_squash, nosuid)上面的例子说明:/。nitec上可以登录,。
nitec的用户可以读取/ UID程序。/。nitec(rw, root_squash, noexec)上面的例子说明/。nitec上可以登录,。nitec的用户可以读取/} NFS是非常重要的网络协议,许多企业通过NFS协议共享硬盘和其它设备。把能登录NFS目录设置为只读访问、提高portmap服务的安全性、squashing root访问、使用on set-UID 和non executable文件设置可以提高NFS服务器的安全。