5.4. 保全 NFS

網路檔案系統(Network File System)NFS 是一個讓用戶端電腦透過網路,存取其他檔案系統的服務。如需關於 NFS 如何運作的資訊,請參考 Red Hat Enterprise Linux 參考手冊 一書中的 網路檔案系統(NFS,Network File System) 章節。關於設定 NFS 的更多資訊,請參考 Red Hat Enterprise Linux 系統管理手冊。下列的章節假設您對 NFS 有基本的了解。

重要重要
 

第 5.2 節所述,Red Hat Enterprise Linux 所包括的 NFS 版本(NFSv4)不再需要 portmap 服務。現在所有版本的 NFS 網路交通都使用 TCP,而非 UDP;NFSv4 更是需要 TCP。NFSv4 也加入了 Kerberos 的使用者與群組身份認證,包含在 RPCSEC_GSS 核心模組中。由於 Red Hat Enterprise Linux 依舊支援 NFSv2 與 NFSv3,所以 portmap 資訊仍然包含在產品中。

5.4.1. 小心規劃網路

現在 NFSv4 能使用 Kerberos,在網路上傳送加密過的訊息。如果這服務位於防火牆之後,或位於獨立的網路區段中,您必須設定正確。NFSv2 與 NFSv3 依舊以不安全的方式傳遞訊息,這點您也要納入考慮。仔細規劃您的網路,審慎考慮每種情形,可以避免資料安全遭到破壞。

5.4.2. 小心語法錯誤

NFS 伺服器透過 /etc/exports 檔案決定要匯出那些檔案系統,以及要匯出這些目錄給 那些主機,當您編輯這個檔案時,請小心不要增加任何無關緊要的空白。

舉例來說,/etc/exports 檔案中的下列這一行將分享 /tmp/nfs/ 目錄給 bob.example.com 主機,並且含有讀寫的權限。

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

另一方面,/etc/exports 檔案中的這一行將分享相同的目錄到 bob.example.com 主機(含有僅能讀取的權限設定),而且由於在主機後面的一個空白字元,將會以讀寫的權限分享這個目錄給 全世界

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

在設定好後最好使用 showmount 指令來檢查任何設定好的 NFS 分享資源,以檢驗那些資源 已被分享出去了:

showmount -e <hostname>

5.4.3. 請勿使用 no_root_squash 的選項

預設情況下,NFS 分享將會更改 root 使用者為一個非特權的使用者帳號 nfsnobody,藉由這個方法,所有 root 所建立的檔案都將由 nfsnobody 使用者所擁有,將可避免含有 setuid 位元設定的程式被上載。

假如使用了 no_root_squash,遠端的 root 使用者將可以更改共享檔案系統上的任何檔案,並且遺留下含有木馬程式的應用程式,以使其他使用者在不經意間執行到這些檔案。