精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>电脑技术>>● 计算机安全>>◇网络安全◇>>NTSERVER安全>>如何让NFS更安全

主题:如何让NFS更安全
发信人: caeser_zy(天线低低B)
整理人: williamlong(2002-05-20 11:14:53), 站内信件
前言 

  NFS(network file system)是由SUN公司发展, 并于1985年推出,NFS的功能在于提供不同机器间的档案分享与共用,由于NFS规格完全公开,因此现在许多的作业系统都提供NFS的服务。传统NFS虽然使用UDP来传递档案资料(NFS Version 3以後支援TCP传送),但由于协定上的设计,大部分的安全问题都获得了解决。然而除了少数被发现存在不同平台的程序错误外,会影响系统安全的往往是管理者错误的设定。本文主要为探讨NFS Server端的设定,以避免系统被入侵或系统资料被窃取。 

NFS相关程序
 
  (1)biod:此程序是用来建立NFS Client端的cache,处理在Client上的读写动作。 
 
  (2)mountd:此程序是用来回应要求Mount的讯息。 
 
  (3)nfsd:此程序是用来处理NFS Client端的要求。 

NFS Server设定 

  (1)限定读写的权限

  大部分系统的NFS服务并不会限定你新增的分享资源为只读,除非你自己设定,否则都是以可读可写的模式分享资料。要设读写限制请参考下例: 

  *AIX,FreeBSD,Linux:
 
  于/etc/exports中,使用-ro的参数,如: 

  /export -ro#  将/export以只读的模式分享 
 
  *Solaris: 

  于/etc/dfs/dfstab中,使用-o ro的参数,如: 

  share -F nfs -o ro /export# 将/export以只读的模式分享 
 
  当然,假如你的分享资源是只读的设备,那是不用考虑这个问题的。 

  (2)限定分享的机器

  让我们看看以下用"showmount -e xxx.xxx.xxx.xxx"得到的结果: 

  export list for xxx.xxx.xxx.xxx:

  /home (everyone) 

  这表示任何一台机器都可以将/home里的资料挂(mount)在自己的机器上,假如里面的资料具有私密性,那就危险了。所以下面的例子显示如何设定分享的机器: 

  *AIX

  于/etc/exports中,加入-access=[host name]: 

  /export -ro,access=www # 允许www用只读的模式分享/export 

  *FreeBSD: 

  于/etc/exports中,加入host name:

  /export -ro www bbs # 允许www和bbs用只读的模式分享/export

  /u -network 1.2.3 -mask 255.255.255.0  # 允许1.2.3.x读写/u 
 
  *Solaris: 

  于/etc/dfs/dfstab中,加入host name: 

  share -F nfs -o ro=www /export# 允许www以只读的模式分享/export 
 
  事实上我们发现,有部份的管理者用domain name当做限定NFS Client机器的资料,这样并非不可以,然而却是不安全的做法,因为NFS是透过Client的IP查出Domain Name,故假造Domain Name便会骗过NFS Server。所以我们建议你将欲分享的Client端资料写在/etc/hosts中,并于NFS的设定档中使用登录于/etc/hosts中Client的host name,这是比较安全的做法,如下: 
 
  */etc/hosts内容: 
  140.117.1.1cc 
 
  */etc/exports内容: 
  /export -ro,access=cc#AIX 
 
  */etc/dfs/dfstab内容(Solaris): 
  share -F nfs -o ro=cc /export 

  当然,像FreeBSD的/etc/exports内容允许IP限定也是一个不错的做法。 

  (3)将重要资料档拥有者设为root 

  早期NFS并没有对root(uid 0)这个帐号做特别处理,因而一些拥有者为root的档案会被删除,後来便改为如果不做任何设定的话,NFS client端的root是没什麽权限的,意即对远端的档案权限可能比一般使用者还低。换句话说NFS Server端的档案若是拥有者为root,将有较高的安全性,如下所示: 
 
-rwxr-xr-x 1 rootwheel 5584 11 Oct 23:38 ypwhich 
-rwxr-xr-x 1 rootwheel 2405 11 Oct 23:38 yyfix 
-rwxr-xr-x 4 rootwheel 100200 11 Oct 23:34 zcat 
-rwxr-xr-x 2 rootwheel 2049 11 Oct 23:34 zcmp 
 
  若NFS Client端所看到的目录内容如上,即使是可读写的分享,只要你没开放root的权限,对方也无法更改档案内容。所以除非万不得已,否则我们建议你不要开启NFS Client拥有root的权限。 
 
  (4)分享的档案系统不要有太多的不同拥有者的档案
 
  这里会提出此建议,主要是考量系统管理上的问题。假如你的分享无法将拥有者都设成root,可能会遇到NFS Server和NFS Client上的使用者uid不一致的状况,而产生使用者间互相修改对方的档案,当然假如你确定两个系统的id和uid都是相同,那就不用担心此问题的。以下举例说明: 
 
*NFS Server 
 -rw-r--r-- 1 admother 292 Oct 25 07:25 Makefile 
 -rwxr--r-- 1 admother 362 Jul 11 13:21 a.out 
 -rwsr--r-- 1 root other 17390 Oct 26 09:19 mount 
 
*NFS Client 
 -rw-r--r-- 1 binother 292 Oct 25 07:25 Makefile 
 -rwxr--r-- 1 binother 362 Jul 11 13:21 a.out 
 -rwsr--r-- 1 root other 17390 Oct 26 09:19 mount 
 
  以上adm与bin为不同的两个人在不同机器上,但uid相同,故使用者bin有可能更动NFS Server上属于使用者adm的档案。 
 
结语 

  NFS设定注意事项以上共分成四个要点,当然已知的漏洞修正程序你必须自己安装它,不然即使设定无误,仍不能保系统安全,另外本文不代表包含所有NFS的问题,由于各作业系统在NFS的设定上各有异同,如使用secure-RPC或Kerberos来建置NFS以及NFS client注意事项等等。




----

          
                 

[关闭][返回]