Linux下的NFS快速配置教程與安全策略

2021-09-02 03:57:19 字數 3577 閱讀 8479

【51cto專稿】在linux下實現檔案共享有多種方式,nfs就是其中之一。網路檔案系統(nfs)協議是由sun microsystem在20世紀80年代為了提供對共享檔案的遠端訪問而設計和實現的。該協議採用client/server模型,通過使用sun開發的遠端過程呼叫協議(rpc protocol)來實現執行在一台計算機上的程式來呼叫在另一台遠端機器上執行的子程式,並且,它提供的外部資料表示(xdr)可以使得資料在不同平台上的計算機上進行交換。該協議可以在tcp協議或者是udp協議上執行,而在此基礎上,nfs在資料的傳送過程中需要rpc命令得到確認,而且在需要的時候將會重傳。

nfs比較複雜,包括很多元件,通過特殊的協議進行互動。不同的元件在作業系統當中都使用不同的配置檔案以及狀態檔案。下圖說明了nfs的主要元件及配置檔案。

圖 網路檔案系統原理示意圖

nfs分為伺服器和客戶機兩部分,每個主機都有自己的核心級服務:外部資料表示(xdr,external data representation)、遠端過程呼叫(rpc,remote procedure call)、i/o監控程式和鎖監控程式。每個主機還有自己的使用者級服務。核心級服務和使用者級服務都依賴於主機的功能:nfs客戶機或者是nfs伺服器。當然,還要依賴於每個主機使用的不同功能的配置檔案(如果是伺服器,則用的是/etc/exports配置檔案,如果是客戶機,則用的是/etc/fstab配置檔案)。如果一台主機既是伺服器又是客戶機,那麼它需要執行兩個部分的服務。

在網路環境下,使用yum安裝nfs的命令如下:

#yum –y install nfs
在安裝好nfs後,需要對其進行配置才能正常使用,主要包括伺服器配置和客戶機配置兩個步驟,下面詳細對它們加以說明。

伺服器配置

/mnt/*** 192.168.10.168(ro,sync, no_root_squash)
上面的規則代表將/mnt/***目錄以讀寫同步方式共享給主機192.168.10.168。如果登陸到nfs主機的使用者是root,那麼該使用者就具有nfs主機的root使用者的許可權。

具體的可選引數如下所示:

rw:可讀寫的許可權

ro:唯讀的許可權

no_root_squash:登入到nfs主機的使用者如果是root使用者,他就擁有root的許可權

root_squash:在登入nfs主機使用目錄的使用者如果是root時,那麼這個使用者的許可權將被壓縮成為匿名使用者,通常他的uid與gid都會變成nobody那個身份

all_squash:不管登陸nfs主機的使用者是什麼都會被重新設定為nobody

anonuid:將登入nfs主機的使用者都設定成指定的userid,此id必須存在於/etc/passwd中

anongid:同anonuid,但是變成groupid就是了

sync資料同步寫入儲存器中

async:資料會先暫時存放在記憶體中,不會直接寫入硬碟

insecure允許從這台機器過來的非授權訪問

客戶機配置

客戶機配置相對簡單,只需要使用下述命令mount nfs檔案系統即可:

#mount -t nfs 192.168.10.168:/home /mnt/***
上述命令將遠端的共享目錄掛接到本地的/home目錄下,使用者可以直接對該目錄進行操作,從而獲取遠端的共享資源。

啟動nfs服務

#service portmap start

# service nfs start

我們先進入目錄/etc,然後vi exports,那麼就會進入到該檔案的編輯介面,我們輸入如下的內容:

/popgame 202.168.10.10(ro) 202.168.10.13(ro)
202.168.10.8: /popgame /mnt/game nfs ro 0 0
其中的/mnt/game目錄是你要將伺服器上的/popgame目錄掛接到你的客戶機上的本地目錄,也就是說,當共享了nfs檔案系統以後,你可以通過訪問本地目錄/mnt/game來訪問共享的檔案。因為現在有兩台客戶機,所以每一台上都要如上配置。

配置完成以後,就需要在客戶機上將伺服器的nfs掛接到本地客戶機上了,命令如下所示:

mount –t nfs 202.168.10.8: /popgame /mnt/game
特別需要注意的是:在執行命令之前,你必須先要關掉本地客戶機上的防火牆,否則也不會掛接成功。原因是防火牆將會阻礙遠端過程呼叫。現在你就可以放心的使用遠端的網路資源了。

最後,我們介紹一下使用中需要注意的安全問題。

通常來說,我們要保護好nfs,首先就要關閉最大的漏洞。在作業系統當中,當系統啟動的時候,將會有很多的後台系統服務程式在執行,而且有些埠是預設開啟的。如果不對這種情況進行處理的話,一方面會不必要的消耗大量系統資源,另一方面則會給我們的系統帶來安全隱患。因此,我們要保護nfs,必須解決好如下問題:

◆要考慮好總體的安全,拒絕所有的訪問,只有在需要的時候才提供訪問。也就是說,不要把nfs匯出到任何主機,而只應該將它匯出到所需要的主機,尤其是避免將檔案系統匯出到不信任的主機。並且要盡量使用唯讀(ro)許可權匯出檔案系統,盡量不要使用(rw)或者是(no_root_squash)許可權;

◆不要提供太多的根使用者賬號。特別要注意保證任何使用者都沒有nfs客戶機的根使用者賬號,因為如果具有的話,那麼該客戶機將會具有最高的許可權,將會引起很大的安全問題,它可以修改任何它想修改的東西,這顯然是不安全的。而且應該在nfs伺服器上使用(root_squash)和(ro)選項;

◆盡量使用限制性的nfs客戶機方掛接選項,用唯讀(ro)選項掛接檔案系統,除非確實有必要,要不然不要允許設定uid二進位制檔案(nosuid)、裝置(nodev)和執行檔案(noexec)。

◆要嚴格地控制好匯出的目錄檔案。這主要包括匯出的數量以及匯出的安全選項。匯出的數量依據實際情況而定,避免到處過多的和不必要的選項。另外,要嚴格地控制好匯出的安全選項,安全選項就是上面所描述的唯讀(ro)、可寫(rw)、根使用者擠壓(root_squash)等選項,這樣做就可以使得每個目錄都有各自的訪問許可權,而通常情況下這樣也是很合理的,因為所有要匯出的目錄訪問許可權都是一樣的,這幾乎是不可能的。比如說,現在nfs伺服器上有三個目錄需要匯出,乙個是/popmusic,乙個是/doc,而乙個是/digest。這三個目錄當中,第乙個目錄和第三個目錄不但允許客戶機共享,而且允許客戶機上載自己的檔案,但是第二個只允許讀取,這樣第乙個和第三個目錄的訪問許可權就要設為rw,而第二個則只能設為ro。

◆在匯出的檔案系統下的目錄的設定過程當中應當要注意一些控制的問題。通常情況下,應該要將訪問許可權一致的目錄和檔案作為父目錄、子目錄,而訪問許可權不一致的就另開乙個目錄進行匯出,這實際上就是乙個管理的粒度問題。舉個例子,現有四個目錄要進行匯出,它們依次是 /direct1 、/direct2 、/direct3 、/direct4 。其中前兩個目錄的訪問許可權是唯讀,而後面兩個是可讀寫,那麼,我們在匯出的時候可以這樣做,將 /direct2作為 /direct1的子目錄,放入/direct1中進行匯出,然後設定共享許可權為唯讀,同樣的,可以將 /direct4 作為/direct3的子目錄,設定它的共享許可權為可讀寫,然後匯出。這樣,客戶機在訪問伺服器資料的時候就不會出現,在乙個目錄當中,整個父目錄的許可權與子目錄的訪問許可權不相同。解決了這個設定的問題,共享起來也比較方便,而且便於管理。

Linux下的NFS快速配置教程與安全策略

51cto專稿 在linux下實現檔案共享有多種方式,nfs就是其中之一。網路檔案系統 nfs 協議是由sun microsystem在20世紀80年代為了提供對共享檔案的遠端訪問而設計和實現的。該協議採用client server模型,通過使用sun開發的遠端過程呼叫協議 rpc protocol...

Linux下的NFS快速配置教程與安全策略

51cto專稿 在linux下實現檔案共享有多種方式,nfs就是其中之一。網路檔案系統 nfs 協議是由sun microsystem在20世紀80年代為了提供對共享檔案的遠端訪問而設計和實現的。該協議採用client server模型,通過使用sun開發的遠端過程呼叫協議 rpc protocol...

用實驗快速配置Nfs

實驗目的 實現nfs共享。實驗要求 1.兩台rh9.0的機器。2.機器1,ip 192.168.0.1 3.機器2,ip 192.168.0.2 實驗步驟 1.關掉兩台機的iptables service iptables stop chkconfig iptables off 2.機器1上,安裝下...