唐山网站建设

设为主页 加入收藏 繁體中文

数据安全谈:看 NFS网络文件系统的安全

核心提示:NFS是网络文件系统(Network File System)的简称,是散布式计算系统的1个组成部份,可实现在异种网络上共享和装配远程文件系统。NFS由Sun公司开发,目前已成为文件服务的1种标准(RFC1904,RFC1813)。

NFS是网络文件系统(Network File System)的简称,是散布式计算系统的1个组成部份,可实现在异种网络上共享和装配远程文件系统。NFS由Sun公司开发,目前已成为文件服务的1种标准(RFC1904,RFC1813)。其最大的功能就是可让不同操纵系统的计算机共享数据,所以也能够将它看做是1个文件服务器。NFS提供了除SAMBA之外,Windows与Linux、Unix与Linux之间通讯的方法。

任何网络服务器都会有安全题目,NFS也不例外。由于设计方面的因素,NFS服务器不可能尽对安全。1般来讲,不应当将NFS服务器运行在比较敏感的系统或只有1般防火墙的机器上,应当尽可能将其置于防火墙以后。配置安全的NFS服务器,可以从限制RCP服务的访问和控制文件系统的导出权限两方面着手。

NFS面临的安全隐患

由于NFS在网络上明文传输所有信息,依照默许设置,NFS共享把根用户改成用户nfsnobody,它是1个不具有特权的用户账号。这样,所有根用户创建的文件都会被用户nfsnobody所有,从而避免了设置setuid的程序被上传到系统。假设使用了no_root_squash,远程用户便可以够改变共享文件系统上的任何文件,把设置了特洛伊木马的程序留给其他用户,在无意中履行。

NFS服务器安全策略

(1)使用TCP_Wrappers

portmap和rpc.nfsd结合起来,使NFS服务器上的文件即使没有任何权限也能轻易得到。可使用访问控制保障网络安全,在使用NFS时最好结合TCP_Wrappers来限制使用范围。

(2)留意配置文件语法毛病

NFS服务器通过/etc/exports文件来决定要导出哪些文件系统,和把这些目录导出到哪些主机上。编辑这个文件的时候要特别谨慎,不要添加额外的空格。

例如:/etc/exports文件的以下行会使主机bob.example.com 能够共享/tmp/nfs/目录。

/tmp/nfs/ bob.example.com(rw)

但是 /etc/exports 文件中这1行的情况却不同。它共享同1目录,让主机 bob.example.com 具有只读权限,却给全局以读写权限。这全是由主机后面的1个空格酿成的。

/tmp/nfs/

bob.example.com (rw)

使用 showmount 命令来校验哪些目录被共享,从而检查NFS共享配置是1个好习惯。showmount格式为:

showmount -e

(3)使用iptables防火墙

由于NFS在网络上明文传输所有信息,所以让NFS服务器在防火墙后、在1个分段的安全网络上运行就很重要。不管甚么时候在不安全的网络上传递NFS信息都有被截取的危险。从这个角度讲,谨慎制定网络计划就有助于防御重要的安全破坏。限制RCP服务访问的办法1般是使用防火墙,除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 DROP
iptables -t filter -A INPUT -p udp -d 127.0.0.1 --dport 2049 -j DROP
iptables -t filter -A INPUT -p udp -s trusted_client -d this_server_ip --dport \2049 -j
 ACCEPTiptables -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.com(ro)

这样,devpc.nitec.com网络中的客户只能对/app目录进行只读访问。

(5)制止对某些目录的访问

当开放1个完全的文件系统或1个目录时,缺省情况下它的子目录会自动开放访问权限。假设希看限制对其子目录的访问可使用noaccess访问选项,例如希看开放/pub目录权限但是制止访问/pub/staff-only子目录:

/pub weblab-??.nitec.com (ro)
/pub/staff-only weblab-??.nitec.com (noaccess)

留意: “??”代表任意字符。

(6)root squashing访问题目

依照默许设置,root用户的用户ID和组群ID都是0。root权限紧缩(Root squashing)把用户ID0和组群ID0映照为匿名的用户和组群ID,因此客户上的根用户就不会在NFS服务器上具有根特权。假设这个选项被选,root用户就不会被映照为匿名用户,客户上的root用户就会对导出的目录具有根特权。选择这个选项会大大下降系统的安全性。除非尽对必要,请不要选择它。为了明确履行该规则,可以修改文件/etc/exports:


/www www1.nitec.com(rw, root_squash)

这样假设客户真个UID0(root)用户想要访问(读、写、删除)1个NFS文件系统,服务器端会用UID代替服务器的nobody账户。这样客户真个root用户不能修改和访问服务器端root用户才能访问和修改的文件。

(7)使用nosuid和noexec选项

SUID(Set User ID)或SGID(Set Group ID)程序可让普通用户以超过自己权限的情势履行。很多SUID/SGID可履行程序是必须的,比如上面提到的passwd。SUID/SGID程序会被1些恶意的本地用户利用,获得本不应有的权限。运行以下命令可以找到所有具有这1属性的程序:

#find / \( -perm ⑷000 -o -perm ⑵000 \)

使用者必须查看这1列表,尽可能减少那些所有者是root或是在root组中却具有SUID/SGID属性的文件,删除或对其属性进行更改。使用nosuid选项制止set-UID程序在 NFS服务器上运行,可以修改文件/etc/exports加进1行:

/www www1.nitec.com(rw, root_squash, nosuid)

上面的例子说明:/www目录在www1.nitec.com上可以登录,www1.nitec.com的用户可以读取/www中的文件和目录,但是不能运行set- UID程序。

/www www1.nitec.com(rw, root_squash, noexec)

上面的例子说明/www目录在www1.nitec.com上可以登录,www1.nitec.com的用户可以读取/www中的文件和目录,但是制止所登录文件系统中文件的履行。

NFS是非常重要的网络协议,很多企业通过NFS协议共享硬盘和其它设备。把能登录NFS目录设置为只读访问、进步portmap服务的安全性、squashing root访问、使用on set-UID 和non executable文件设置可以进步NFS服务器的安全。

http://www.fw8.net/


TAG:用户,权限,文件,目录,文件系统
评论加载中...
内容:
评论者: 验证码: