Linux系統下對NFS服務安全加固的方法

NFS(Network File System)是 FreeBSD 支持的一種文件系統,它容許網絡中的計算機之間經過 TCP/IP 網絡共享資源。不正確的配置和使用 NFS,會帶來安全問題。linux

概述安全

NFS 的不安全性,主要體現於如下 4 個方面:服務器

  • 缺乏訪問控制機制網絡

  • 沒有真正的用戶驗證機制,只針對 RPC/Mount 請求進行過程驗證tcp

  • 較早版本的 NFS 可使未受權用戶得到有效的文件句柄ide

  • 在 RPC 遠程調用中, SUID 程序具備超級用戶權限性能

加固方案測試

爲有效應對以上安全隱患,推薦您使用下述加固方案。ui

配置共享目錄(/etc/exports)spa

使用 anonuid,anongid 配置共享目錄,這樣可使掛載到 NFS 服務器的客戶機僅具備最小權限。不要使用 no_root_squash。
使用網絡訪問控制
使用 安全組策略 或 iptable 防火牆限制可以鏈接到 NFS 服務器的機器範圍。

iptables -A INPUT -i eth0 -p TCP -s 192.168.0.0/24 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p UDP -s 192.168.0.0/24 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p TCP -s 140.0.0.0/8 --dport 111 -j ACCEPT
iptables -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 速度較快。

  • 在機器較少,網絡情況較好的狀況下,使用 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 www.abc.com(rw, root_squash, nosuid)

使用 noexec 禁止直接執行其中的二進制文件。

相關文章
相關標籤/搜索