前言
NFS(network file system)是由SUN公司發(fā)展, 并於1985年推出,
NFS是架構(gòu)於的功能在於提供不同機器間的檔案分享與共用,由
於NFS規(guī)格完全公開,因此現(xiàn)在許多的作業(yè)系統(tǒng)都提供NFS的服務(wù)
,
讓NFS格式電腦更安全
。傳統(tǒng)NFS雖然使用UDP來傳遞檔案資料(NFS Version 3以後支援TCP傳送),但由於協(xié)定上的設(shè)計,大部分的安全問題都獲得了
解決。然而除了少數(shù)被發(fā)現(xiàn)存在不同平臺的程式錯誤外,會影
響系統(tǒng)安全的往往是管理者錯誤的設(shè)定。本文主要為探討NFS
Server端的設(shè)定,以避免系統(tǒng)被入侵或系統(tǒng)資料被竊取。
NFS相關(guān)程式
(1)biod:此程式是用來建立NFS Client端的cache,處理在Client
上的讀寫動作。
(2)mountd:此程式是用來回應(yīng)要求Mount的訊息。
(3)nfsd:此程式是用來處理NFS Client端的要求。
NFS Server設(shè)定
(1)限定讀寫的權(quán)限
大部分系統(tǒng)的NFS服務(wù)并不會限定你新增的分享資源為唯讀,除
非你自己設(shè)定,否則都是以可讀可寫的模式分享資料。要設(shè)讀
寫限制請參考以下例:
*AIX,FreeBSD,Linux:
於/etc/exports中,使用-ro的參數(shù),如:
/export -ro # 將/export以唯讀的模式分享
*Solaris:
於/etc/dfs/dfstab中,使用-o ro的參數(shù),如:
share -F nfs -o ro /export # 將/export以唯讀的模式分享
當(dāng)然,假如你的分享資源是唯讀的設(shè)備,那是不用考慮這個
問題的。
(2)限定分享的機器
讓我們看看以下用"showmount -e xxx.xxx.xxx.xxx"得到的結(jié)果:
export list for xxx.xxx.xxx.xxx:
/home (everyone)
這表示任何一臺機器都可以將/home里的資料掛(mount)在自己的
機器上,假如里面的資料具有私密性,那就危險了。所以下面的
例子顯示如何設(shè)定分享的機器:
*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
事實上我們發(fā)現(xiàn),有部份的管理者用domain name當(dāng)做限定NFS
Client機器的資料,這樣并非不可以,然而卻是不安全的做法
,因為NFS是透過Client的IP查出Domain Name,故假造Domain
Name便會騙過NFS Server。所以我們建議您將欲分享的Client
端資料寫在/etc/hosts中,并於NFS的設(shè)定檔中使用登錄於
/etc/hosts中Client的host name,這是比較安全的做法,如下:
*/etc/hosts內(nèi)容:
140.117.1.1 cc
*/etc/exports內(nèi)容:
/export -ro,access=cc #AIX
*/etc/dfs/dfstab內(nèi)容(Solaris):
share -F nfs -o ro=cc /export
當(dāng)然,像FreeBSD的/etc/exports內(nèi)容允許IP限定也是一個不錯的
做法,
電腦資料
《讓NFS格式電腦更安全》(http://www.szmdbiao.com)。(3)將重要資料檔擁有者設(shè)為root
早期NFS并沒有對root(uid 0)這個帳號做特別處理,因而一些
擁有者為root的檔案會被刪除,後來便改為如果不做任何設(shè)定
的話,NFS client端的root是沒什麼權(quán)限的,意即對遠(yuǎn)端的檔
案權(quán)限可能比一般使用者還低。換句話說NFS Server端的檔案
若是擁有者為root,將有較高的安全性,如下所示:
-rwxr-xr-x 1 root wheel 5584 11 Oct 23:38 ypwhich
-rwxr-xr-x 1 root wheel 2405 11 Oct 23:38 yyfix
-rwxr-xr-x 4 root wheel 100200 11 Oct 23:34 zcat
-rwxr-xr-x 2 root wheel 2049 11 Oct 23:34 zcmp
若NFS Client端所看到的目錄內(nèi)容如上,即使是可讀寫的分享,
只要你沒開放root的權(quán)限,對方也無法更改檔案內(nèi)容。所以除
非萬不得已,否則我們建議您不要開啟NFS Client擁有root的權(quán)
限。
(4)分享的檔案系統(tǒng)不要有太多的不同擁有者的檔案
這里會提出此建議,主要是考量系統(tǒng)管理上的問題。假如你的
分享無法將擁有者都設(shè)成root,可能會遇到NFS Server和NFS
Client上的使用者uid不一致的狀況,而產(chǎn)生使用者間互相修改
對方的檔案,當(dāng)然假如你確定兩個系統(tǒng)的id和uid都是相同,那
就不用擔(dān)心此問題的。以下舉例說明:
*NFS Server
-rw-r--r-- 1 adm other 292 Oct 25 07:25 Makefile
-rwxr--r-- 1 adm other 362 Jul 11 13:21 a.out
-rwsr--r-- 1 root other 17390 Oct 26 09:19 mount
*NFS Client
-rw-r--r-- 1 bin other 292 Oct 25 07:25 Makefile
-rwxr--r-- 1 bin other 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的檔案。
結(jié)語
NFS設(shè)定注意事項以上共分成四個要點,當(dāng)然已知的漏洞修正程式
您必須自己安裝它,不然即使設(shè)定無誤,仍不能保系統(tǒng)安全,另外
本文不代表包含所有NFS的問題,由於各作業(yè)系統(tǒng)在NFS的設(shè)定上各有
異同,如使用secure-RPC或Kerberos來建置NFS以及NFS client注意事項
等等