如何為NFS服務安全加固

安全劍客發表於2019-02-13
NFS(Network File System)是 FreeBSD 支援的一種檔案系統,它允許網路中的計算機之間透過 TCP/IP 網路共享資源。不正確的配置和使用 NFS,會帶來安全問題。
概述
NFS 的不安全性,主要體現於以下 4 個方面:
  • 缺少訪問控制機制
  • 沒有真正的使用者驗證機制,只針對 RPC/Mount 請求進行過程驗證
  • 較早版本的 NFS 可以使未授權使用者獲得有效的檔案控制程式碼
  • 在 RPC 遠端呼叫中, SUID 程式具有超級使用者許可權
配置共享目錄 /etc/exports
使用 anonuid,anongid 配置共享目錄,這樣可以使掛載到 NFS 伺服器的客戶機僅具有最小許可權。不要使用 no_root_squash。
使用網路訪問控制
使用 安全組策略 或 iptable 防火牆限制能夠連線到 NFS 伺服器的機器範圍。
賬號驗證
使用 Kerberos V5 作為登入驗證系統,要求所有訪問人員使用賬號登入,提高安全性。
選擇傳輸協議
對於不同的網路情況,有針對地選擇 UDP 或 TCP 傳輸協議。傳輸協議可以自動選擇,也可以手動設定。
mount -t nfs -o sync,tcp,noatime,rsize=1024,wsize=1024 EXPORT_MACHINE:/EXPORTED_DIR /DIR
UDP 協議傳輸速度快,非連線傳輸時便捷,但其傳輸穩定性不如 TCP,當網路不穩定或者駭客入侵時很容易使 NFS 效能大幅降低,甚至導致網路癱瘓。一般情況下,使用 TCP 的 NFS 比較穩定,使用 UDP 的 NFS 速度較快。
  • 在機器較少,網路狀況較好的情況下,使用 UDP 協議能帶來較好的效能。
  • 當機器較多,網路情況複雜時,推薦使用 TCP 協議(V2 只支援 UDP 協議)。
  • 在區域網中使用 UDP 協議較好,因為區域網有比較穩定的網路保證,使用 UDP 可以帶來更好的效能。
  • 在廣域網中推薦使用 TCP 協議,TCP 協議能讓 NFS 在複雜的網路環境中保持最好的傳輸穩定性。
限制客戶機數量
修改 /etc/hosts.allow 和 /etc /hosts.deny 來限制客戶機數量。
 /etc/hosts.allow
portmap: 192.168.0.0/255.255.255.0 : allow
 portmap: 140.116.44.125 : allow
/etc/hosts.deny
portmap: ALL : deny
改變預設的 NFS 埠
NFS 預設使用的是 111 埠,使用 port 引數可以改變這個埠值。改變預設埠值能夠在一定程度上增強安全性。
配置 nosuid 和 noexec
SUID (Set User ID) 或 SGID (Set Group ID) 程式可以讓普通使用者以超過自己許可權來執行。很多 SUID/SGID 可執行程式是必須的,但也可能被一些惡意的本地使用者利用,獲取本不應有的許可權。
儘量減少所有者是 root,或是在 root 組中卻擁有 SUID/SGID 屬性的檔案。您可以刪除這樣的檔案或更改其屬性,如:
使用 nosuid 選項禁止 set-UID 程式在 NFS 伺服器上執行,可以在 /etc/exports 加入一行:
/www (rw, root_squash, nosuid)
使用 noexec 禁止直接執行其中的二進位制檔案。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2629874/,如需轉載,請註明出處,否則將追究法律責任。

相關文章