数据安全谈:看 NFS网络文件系统的安全
作者:木淼鑫 来源:赛迪网 发布时间:2009-03-09 12:47:00
NFS是网络文件系统(Network File System)的简称,是分布式计算系统的一个组成部分,可实现在异种网络上共享和装配远程文件系统。NFS由Sun公司开发,目前已经成为文件服务的一种标准(RFC1904,RFC1813)。其最大的功能就是可让不同操作系统的计算机共享数据,所以也可以将它看做是一个文件服务器。NFS提供了除SAMBA之外,Windows与Linux、Unix与Linux之间通信的方法。
任何网络服务器都会有安全问题,NFS也不例外。由于设计方面的因素,NFS服务器不可能绝对安全。一般来说,不应该将NFS服务器运行在比较敏感的系统或者只有一般防火墙的机器上,应该尽量将其置于防火墙之后。配置安全的NFS服务器,可以从限制RCP服务的访问和控制文件系统的导出权限两方面着手。
NFS面临的安全隐患
因为NFS在网络上明文传输所有信息,按照默认设置,NFS共享把根用户改成用户nfsnobody,它是一个不具备特权的用户账号。这样,所有根用户创建的文件都会被用户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 文件中这一行的情况却不同。它共享同一目录,让主机 bob.example.com 拥有只读权限,却给全局以读写权限。这全是由主机后面的一个空格造成的。
/tmp/nfs/
bob.example.com (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 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)禁止对某些目录的访问
当开放一个完整的文件系统或者一个目录时,缺省情况下它的子目录会自动开放访问权限。如果希望限制对其子目录的访问可以使用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)用户想要访问(读、写、删除)一个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加入一行:
/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服务器的安全。


猜你喜欢
- CentOS下RabbitMq高可用集群环境搭建教程分享给大家。准备工作1、准备两台或多台安装有rabbitmq-server服务的服务器我
- 百度将赞助商的网站与搜索结果混为一体已经不是一天两天的事情了,这点在很久以前就为用户说诟病。尽管这对其市场占有率并不会带来多大的消极影响,但
- 在Windows 2000下,动态DNS是与DHCP、WINS及活动目录(AD)集成在一起的。在Windows 2000的域下有三种实现DN
- GG AD我觉得很多都是靠运气,好多作弊的人第一个月都可以收到支票,而那些没作弊的站长朋友很多都还没收到PIN都已经被K了,经常在这里看到很
- wordpress博客是很多朋友喜欢的程序,不仅仅在于它本身的好用,而且它有丰富的主题和无数的使用者在为他们写上优秀的插件,通过各类的插件更
- 二、解决非人性化问题:当然我们不可能将自己的系统更改成windows XP系统,毕竟单位服务器需要服务器版操作系统。那么我们如何设置远程桌面
- 曾经听过这麽一段歌词“有钱不能买生命,有钱不能买平安”,我觉得这句化非常实在,人活一世只能攥着拳头来,撒开手而去,再多的物质 我们也是带不走
- 前言不同的script执行方式会造成不一样的结果,尤其对bash的环境影响很大,脚本的执行方式有大概以下几种方式。首先写一个简单的test.
- 方法一: 在httpd.conf中设置对目录开启。 AllowOverride All&nb
- 笔者的proftpd.conf配置文件内容为:#ThisisabasicProFTPDconfigurationfile(renameitt
- Windows系统在长时间地工作之后,往往会不可避免地出现无法启动或者运行出错的故障,面对这些故障我们是选择将就使用,还是选择重新安装系统?
- 或许你已经注意到了,百度在最近些日子改版了。是的,就像图中的那样,他的框计算改进了。更加智能,更加先进,也更加可怕。过去我曾经写过一篇百度的
- 如果你有个站点(并且你如果想赚钱的话,你可能需要一个),那么你就有一个和我们一样的问题,流量。我们都需要流量,不过,搜索引擎越来越聪明了,很
- Centos8最小化部署安装OpenStack Ussuri的教程如下所示:#!/bin/bash#Centos8最小化部署安装OpenSt
- 过去的几年,由于大量广告主的大量资金注入互联网 ,已具实力的网站你争我斗,海量新兴的网站迅速崛起,都想在这个看起来赚钱很美、实则赚钱不易的互
- 北京时间1月5日消息,据国外媒体报道,Mozilla基金会技术副总裁迈克·沙弗(Mike Shaver)昨天表示,该组
- 很多人开网站是因为兴趣,也有不少人开网站是为了赚钱,我当初也是为了兴趣而做网站,也可以说是对网站比较好奇,所以07年我就创办了自己的第一个网
- 前言linux权限多设的比较松的其实,但有的虚拟机还是不能跨目录访问的。在提不了权的情况下,试试如下代码吧。运气好的话说不定就跨过去了。下面
- 下面就是实现dedecms获取当前文章ID并显示缩略图的代码,感兴趣的朋友可以研究研究:{dede:sql sql='Select
- 1. 自我合理的定位与特色要善于选择他人从未涉及过的话题,不必受制于“关键字搜索”,也不能一味迎合G