首頁 > 軟體

RHCE 系列(七):在 Linux 用戶端設定基於 Kerberos 身份驗證的 NFS 伺服器

2020-06-16 17:49:52

在本系列的前一篇文章,我們回顧了如何在可能包括多種型別作業系統的網路上設定 Samba 共用。現在,如果你需要為一組類 Unix 用戶端組態檔共用,很自然的你會想到網路檔案系統,或簡稱 NFS。

RHCE 系列:第七部分 - 設定使用 Kerberos 進行身份驗證的 NFS 伺服器

在這篇文章中我們會介紹設定基於 Kerberos 身份驗證的 NFS 共用的整個流程。假設你已經設定好了一個 NFS 伺服器和一個用戶端。如果還沒有,可以參考 安裝和設定 NFS 伺服器 - 它列出了需要安裝的依賴軟體包並解釋了在進行下一步之前如何在伺服器上進行初始化設定。

另外,你可能還需要設定 SELinuxfirewalld 以允許通過 NFS 進行檔案共用。

下面的例子假設你的 NFS 共用目錄在 box2 的 /nfs:

  1. # semanage fcontext -a -t public_content_rw_t"/nfs(/.*)?"
  2. # restorecon -R /nfs
  3. # setsebool -P nfs_export_all_rw on
  4. # setsebool -P nfs_export_all_ro on

(其中 -P 標記指示重新啟動持久有效)。

最後,別忘了:

建立 NFS 組並設定 NFS 共用目錄

1、 新建一個名為 nfs 的組並給它新增使用者 nfsnobody,然後更改 /nfs 目錄的許可權為 0770,組屬主為 nfs。於是,nfsnobody(對應請求使用者)在共用目錄有寫的許可權,你就不需要在 /etc/exports 檔案中使用 norootsquash(LCTT 譯註:設為 root_squash 意味著在存取 NFS 伺服器上的檔案時,客戶機上的 root 使用者不會被當作 root 使用者來對待)。

  1. #groupadd nfs
  2. #usermod-a -G nfs nfsnobody
  3. #chmod0770/nfs
  4. #chgrp nfs /nfs

2、 像下面那樣更改 export 檔案(/etc/exports)只允許從 box1 使用 Kerberos 安全驗證的存取(sec=krb5)。

注意:anongid 的值設定為之前新建的組 nfs 的 GID:

exports – 新增 NFS 共用

  1. /nfs box1(rw,sec=krb5,anongid=1004)

3、 再次 exprot(-r)所有(-a)NFS 共用。為輸出新增詳情(-v)是個好主意,因為它提供了發生錯誤時解決問題的有用資訊:

  1. # exportfs -arv

4、 重新啟動並啟用 NFS 伺服器以及相關服務。注意你不需要啟動 nfs-lock 和 nfs-idmapd,因為系統啟動時其它服務會自動啟動它們:

  1. #systemctl restart rpcbind nfs-server nfs-lock nfs-idmap
  2. #systemctl enable rpcbind nfs-server

測試環境和其它前提要求

在這篇指南中我們使用下面的測試環境:

  • 用戶端機器 [box1: 192.168.0.18]
  • NFS / Kerberos 伺服器 [box2: 192.168.0.20] (也稱為金鑰分發中心,簡稱 KDC)。

注意:Kerberos 服務是至關重要的認證方案。

正如你看到的,為了簡便,NFS 伺服器和 KDC 在同一台機器上,當然如果你有更多可用機器你也可以把它們安裝在不同的機器上。兩台機器都在 mydomain.com 域。

最後同樣重要的是,Kerberos 要求用戶端和伺服器中至少有一個域名解析的基本方式和網路時間協定服務,因為 Kerberos 身份驗證的安全一部分基於時間戳。

為了設定域名解析,我們在用戶端和伺服器中編輯 /etc/hosts 檔案:

host 檔案 – 為域新增 DNS

  1. 192.168.0.18 box1.mydomain.com box1
  2. 192.168.0.20 box2.mydomain.com box2

在 RHEL 7 中,chrony 是用於 NTP 同步的預設軟體:

  1. #yum install chrony
  2. #systemctl start chronyd
  3. #systemctl enable chronyd

為了確保 chrony 確實在和時間伺服器同步你系統的時間,你可能要輸入下面的命令兩到三次,確保時間偏差盡可能接近 0:

  1. # chronyc tracking

用 Chrony 同步伺服器時間

 

安裝和設定 Kerberos

要設定 KDC,首先在用戶端和伺服器安裝下面的軟體包(用戶端不需要 server 軟體包):

  1. #yum update &&yum install krb5-server krb5-workstation pam_krb5

安裝完成後,編輯組態檔(/etc/krb5.conf 和 /var/kerberos/krb5kdc/kadm5.acl),像下面那樣用 mydomain.com 替換所有 example.com。

下一步,確保 Kerberos 能功過防火牆並啟動/啟用相關服務。

重要:用戶端也必須啟動和啟用 nfs-secure:

  1. # firewall-cmd --permanent --add-service=kerberos
  2. #systemctl start krb5kdc kadmin nfs-secure
  3. #systemctl enable krb5kdc kadmin nfs-secure

現在建立 Kerberos 資料庫(請注意這可能會需要一點時間,因為它會和你的系統進行多次互動)。為了加速這個過程,我開啟了另一個終端並執行了 ping -f localhost 30 到 45 秒):

  1. # kdb5_util create -s

建立 Kerberos 資料庫

下一步,使用 kadmin.local 工具為 root 建立管理許可權:

  1. # kadmin.local
  2. # addprinc root/admin

新增 Kerberos 伺服器到資料庫:

  1. # addprinc -randkey host/box2.mydomain.com

在用戶端(box1)和???務器(box2)上對 NFS 服務同樣操作。請注意下面的截圖中在退出前我忘了在 box1 上進行操作:

  1. # addprinc -randkey nfs/box2.mydomain.com
  2. # addprinc -randkey nfs/box1.mydomain.com

輸入 quit 和確認鍵退出:

新增 Kerberos 到 NFS 伺服器

為 root/admin 獲取和快取票據授權票據(ticket-granting ticket):

  1. # kinit root/admin
  2. # klist

快取 Kerberos

真正使用 Kerberos 之前的最後一步是儲存被授權使用 Kerberos 身份驗證的規則到一個金鑰表檔案(在伺服器中):

  1. # kdadmin.local
  2. # ktadd host/box2.mydomain.com
  3. # ktadd nfs/box2.mydomain.com
  4. # ktadd nfs/box1.mydomain.com

最後,掛載共用目錄並進行一個寫測試:

  1. #mount-t nfs4 -o sec=krb5 box2:/nfs /mnt
  2. #echo"Hello from Tecmint.com">/mnt/greeting.txt

掛載 NFS 共用

現在讓我們解除安裝共用,在用戶端中重新命名金鑰表檔案(模擬它不存在)然後試著再次掛載共用目錄:

  1. #umount/mnt
  2. #mv/etc/krb5.keytab /etc/krb5.keytab.orig

掛載/解除安裝 Kerberos NFS 共用

現在你可以使用基於 Kerberos 身份驗證的 NFS 共用了。

 

總結

在這篇文章中我們介紹了如何設定帶 Kerberos 身份驗證的 NFS。和我們在這篇指南中介紹的相比,該主題還有很多相關內容,可以在 Kerberos 手冊 檢視,另外至少可以說 Kerberos 有一點棘手,如果你在測試或實現中遇到了任何問題或需要幫助,別猶豫在下面的評論框中告訴我們吧。

Ubuntu 12.04安裝NFS server http://www.linuxidc.com/Linux/2012-09/70728.htm

NFS伺服器安裝設定實現Ubuntu 12.04與ARM檔案共用 http://www.linuxidc.com/Linux/2012-10/73159.htm

Ubuntu搭建nfs伺服器 http://www.linuxidc.com/Linux/2012-10/71930.htm

檔案伺服器NFS設定詳解 http://www.linuxidc.com/Linux/2013-06/86542.htm

Ubuntu下搭建NFS網路檔案系統伺服器 http://www.linuxidc.com/Linux/2013-07/87367.htm

Heartbeat_ldirector+LB+NFS實現HA及LB、檔案共用 http://www.linuxidc.com/Linux/2013-06/85292.htm

CentOS 5.5設定NFS伺服器教學 http://www.linuxidc.com/Linux/2013-03/81737.htm

Ubuntu 12.10下NFS的安裝使用 http://www.linuxidc.com/Linux/2013-03/80478.htm


via: http://www.tecmint.com/setting-up-nfs-server-with-kerberos-based-authentication/

作者:Gabriel Cánepa 譯者:ictlyh 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

本文永久更新連結地址http://www.linuxidc.com/Linux/2015-11/125265.htm


IT145.com E-mail:sddin#qq.com