NFS服務器七大安全策略
本篇文章主要談到的是NFS服務器的安全策略。我們都知道,互聯網***的優勢就來源于資源共享。那么在這里面我們則是使用NFS協議來完成共享的。NFS由Sun公司開發,目前已經成為文件服務的一種標準(RFC1904,RFC1813)。其***的功能就是可讓不同操作系統的計算機共享數據,所以也可以將它看做是一個文件服務器。NFS提供了除SAMBA之外,Windows與Linux、Unix與Linux之間通信的方法。
NFS服務器安全策略:使用TCP_Wrappers
portmap和rpc.nfsd結合起來,使NFS服務器上的文件即使沒有任何權限也能容易得到。可以使用訪問控制保障網絡安全,在使用NFS時***結合TCP_Wrappers來限制使用范圍。
NFS服務器安全策略:注意配置文件語法錯誤
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
NFS服務器安全策略:使用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
NFS服務器安全策略:把開放目錄限制為只讀權限
可以在/etc/exports文件中設定權限選項ro,通常需要把NFS服務器對客戶開放的任何目錄或文件系統設置為只讀訪問:
/app devpc.nitec.com(ro)
這樣,devpc.nitec.com網絡中的客戶只能對/app目錄進行只讀訪問。
NFS服務器安全策略:禁止對某些目錄的訪問
當開放一個完整的文件系統或者一個目錄時,缺省情況下它的子目錄會自動開放訪問權限。如果希望限制對其子目錄的訪問可以使用noaccess訪問選項,例如希望開放/pub目錄權限但是禁止訪問/pub/staff-only子目錄:
/pub weblab-??.nitec.com (ro)
/pub/staff-only weblab-??.nitec.com (noaccess)
注意: “??”代表任意字符。
NFS服務器安全策略: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用戶才能訪問和修改的文件。
NFS服務器安全策略:使用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服務器的安全。
【編輯推薦】