RHCE 系列(七):在 Linux 客戶端配置基於 Kerberos 身份驗證的 NFS 伺服器
RHCE 系列:第七部分 - 設置使用 Kerberos 進行身份驗證的 NFS 伺服器
在這篇文章中我們會介紹配置基於 Kerberos 身份驗證的 NFS 共享的整個流程。假設你已經配置好了一個 NFS 伺服器和一個客戶端。如果還沒有,可以參考 安裝和配置 NFS 伺服器 - 它列出了需要安裝的依賴軟體包並解釋了在進行下一步之前如何在伺服器上進行初始化配置。
另外,你可能還需要配置 SELinux 和 firewalld 以允許通過 NFS 進行文件共享。
下面的例子假設你的 NFS 共享目錄在 box2 的 /nfs:
# semanage fcontext -a -t public_content_rw_t "/nfs(/.*)?"
# restorecon -R /nfs
# setsebool -P nfs_export_all_rw on
# 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 用戶來對待)。
# groupadd nfs
# usermod -a -G nfs nfsnobody
# chmod 0770 /nfs
# chgrp nfs /nfs
2、 像下面那樣更改 export 文件(/etc/exports)只允許從 box1 使用 Kerberos 安全驗證的訪問(sec=krb5)。
注意:anongid 的值設置為之前新建的組 nfs 的 GID:
exports – 添加 NFS 共享
/nfs box1(rw,sec=krb5,anongid=1004)
3、 再次 exprot(-r)所有(-a)NFS 共享。為輸出添加詳情(-v)是個好主意,因為它提供了發生錯誤時解決問題的有用信息:
# exportfs -arv
4、 重啟並啟用 NFS 伺服器以及相關服務。注意你不需要啟動 nfs-lock 和 nfs-idmapd,因為系統啟動時其它服務會自動啟動它們:
# systemctl restart rpcbind nfs-server nfs-lock nfs-idmap
# 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
192.168.0.18 box1.mydomain.com box1
192.168.0.20 box2.mydomain.com box2
在 RHEL 7 中,chrony 是用於 NTP 同步的默認軟體:
# yum install chrony
# systemctl start chronyd
# systemctl enable chronyd
為了確保 chrony 確實在和時間伺服器同步你系統的時間,你可能要輸入下面的命令兩到三次,確保時間偏差儘可能接近 0:
# chronyc tracking
用 Chrony 同步伺服器時間
安裝和配置 Kerberos
要設置 KDC,首先在客戶端和伺服器安裝下面的軟體包(客戶端不需要 server 軟體包):
# 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:
# firewall-cmd --permanent --add-service=kerberos
# systemctl start krb5kdc kadmin nfs-secure
# systemctl enable krb5kdc kadmin nfs-secure
現在創建 Kerberos 資料庫(請注意這可能會需要一點時間,因為它會和你的系統進行多次交互)。為了加速這個過程,我打開了另一個終端並運行了 ping -f localhost
30 到 45 秒):
# kdb5_util create -s
創建 Kerberos 資料庫
下一步,使用 kadmin.local 工具為 root 創建管理許可權:
# kadmin.local
# addprinc root/admin
添加 Kerberos 伺服器到資料庫:
# addprinc -randkey host/box2.mydomain.com
在客戶端(box1)和伺服器(box2)上對 NFS 服務同樣操作。請注意下面的截圖中在退出前我忘了在 box1 上進行操作:
# addprinc -randkey nfs/box2.mydomain.com
# addprinc -randkey nfs/box1.mydomain.com
輸入 quit 和回車鍵退出:
添加 Kerberos 到 NFS 伺服器
為 root/admin 獲取和緩存 票據授權票據 :
# kinit root/admin
# klist
緩存 Kerberos
真正使用 Kerberos 之前的最後一步是保存被授權使用 Kerberos 身份驗證的規則到一個密鑰表文件(在伺服器中):
# kdadmin.local
# ktadd host/box2.mydomain.com
# ktadd nfs/box2.mydomain.com
# ktadd nfs/box1.mydomain.com
最後,掛載共享目錄並進行一個寫測試:
# mount -t nfs4 -o sec=krb5 box2:/nfs /mnt
# echo "Hello from Tecmint.com" > /mnt/greeting.txt
掛載 NFS 共享
現在讓我們卸載共享,在客戶端中重命名密鑰表文件(模擬它不存在)然後試著再次掛載共享目錄:
# umount /mnt
# mv /etc/krb5.keytab /etc/krb5.keytab.orig
掛載/卸載 Kerberos NFS 共享
現在你可以使用基於 Kerberos 身份驗證的 NFS 共享了。
總結
在這篇文章中我們介紹了如何設置帶 Kerberos 身份驗證的 NFS。和我們在這篇指南中介紹的相比,該主題還有很多相關內容,可以在 Kerberos 手冊 查看,另外至少可以說 Kerberos 有一點棘手,如果你在測試或實現中遇到了任何問題或需要幫助,別猶豫在下面的評論框中告訴我們吧。
via: http://www.tecmint.com/setting-up-nfs-server-with-kerberos-based-authentication/
作者:Gabriel Cánepa 譯者:ictlyh 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive