NFS(Network File System)是 FreeBSD 支持的一種文件系統,它允許網絡中的計算機之間通過 TCP/IP 網絡共享資源。不正確的配置和使用 NFS,會帶來安全問題。
NFS 的不安全性,主要體現于以下 4 個方面:
為有效應對以上安全隱患,推薦您使用下述加固方案。
使用 anonuid,anongid 配置共享目錄,這樣可以使掛載到 NFS 服務器的客戶機僅具有最小權限。不要使用 no_root_squash。
使用 安全組策略 或 iptable 防火墻限制能夠連接到 NFS 服務器的機器范圍。
iptables -A INPUT -i eth0 -p TCP -s 192.168.0.0/24 --dport 111 -j ACCEPTiptables -A INPUT -i eth0 -p UDP -s 192.168.0.0/24 --dport 111 -j ACCEPTiptables -A INPUT -i eth0 -p TCP -s 140.0.0.0/8 --dport 111 -j ACCEPTiptables -A INPUT -i eth0 -p UDP -s 140.0.0.0/8 --dport 111 -j ACCEPT
賬號驗證
使用 Kerberos V5 作為登錄驗證系統,要求所有訪問人員使用賬號登錄,提高安全性。
設置 NFSD 的 COPY 數目
在 Linux 中,NFSD 的 COPY 數目定義在啟動文件 /etc/rc.d/init.d/nfs
中,默認值為 8。
最佳的 COPY 數目一般取決于可能的客戶機數目。您可以通過測試來找到 COPY 數目的近似最佳值,并手動設置該參數。
選擇傳輸協議
對于不同的網絡情況,有針對地選擇 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 速度較快。
限制客戶機數量
修改 /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 www.abc.com(rw, root_squash, nosuid)
使用 noexec 禁止直接執行其中的二進制文件。
新聞熱點
疑難解答
圖片精選