天天看點

RHCE 系列(七):在 Linux 用戶端配置基于 Kerberos 身份驗證的 NFS 伺服器RHCE 系列(七):在 Linux 用戶端配置基于 Kerberos 身份驗證的 NFS 伺服器

RHCE 系列(七):在 Linux 用戶端配置基于 Kerberos 身份驗證的 NFS 伺服器RHCE 系列(七):在 Linux 用戶端配置基于 Kerberos 身份驗證的 NFS 伺服器

rhce 系列:第七部分 - 設定使用 kerberos 進行身份驗證的 nfs 伺服器

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

<code># semanage fcontext -a -t public_content_rw_t "/nfs(/.*)?"</code>

<code># restorecon -r /nfs</code>

<code># setsebool -p nfs_export_all_rw on</code>

<code># setsebool -p nfs_export_all_ro on</code>

(其中 -p 标記訓示重新開機持久有效)。

最後,别忘了:

1、 建立一個名為 nfs 的組并給它添加使用者 nfsnobody,然後更改 /nfs 目錄的權限為 0770,組屬主為 nfs。于是,nfsnobody(對應請求使用者)在共享目錄有寫的權限,你就不需要在 /etc/exports 檔案中使用 norootsquash(lctt 譯注:設為 root_squash 意味着在通路 nfs 伺服器上的檔案時,客戶機上的 root 使用者不會被當作 root 使用者來對待)。

<code># groupadd nfs</code>

<code># usermod -a -g nfs nfsnobody</code>

<code># chmod 0770 /nfs</code>

<code># chgrp nfs /nfs</code>

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

注意:anongid 的值設定為之前建立的組 nfs 的 gid:

exports – 添加 nfs 共享

<code>/nfs box1(rw,sec=krb5,anongid=1004)</code>

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

<code># exportfs -arv</code>

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

<code># systemctl restart rpcbind nfs-server nfs-lock nfs-idmap</code>

<code># systemctl enable rpcbind nfs-server</code>

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

用戶端機器 [box1: 192.168.0.18]

nfs / kerberos 伺服器 [box2: 192.168.0.20] (也稱為密鑰分發中心,簡稱 kdc)。

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

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

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

host 檔案 – 為域添加 dns

<code>192.168.0.18 box1.mydomain.com box1</code>

<code>192.168.0.20 box2.mydomain.com box2</code>

在 rhel 7 中,chrony 是用于 ntp 同步的預設軟體:

<code># yum install chrony</code>

<code># systemctl start chronyd</code>

<code># systemctl enable chronyd</code>

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

<code># chronyc tracking</code>

RHCE 系列(七):在 Linux 用戶端配置基于 Kerberos 身份驗證的 NFS 伺服器RHCE 系列(七):在 Linux 用戶端配置基于 Kerberos 身份驗證的 NFS 伺服器

用 chrony 同步伺服器時間

<a></a>

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

<code># yum update &amp;&amp; yum install krb5-server krb5-workstation pam_krb5</code>

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

下一步,確定 kerberos 能功過防火牆并啟動/啟用相關服務。

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

<code># firewall-cmd --permanent --add-service=kerberos</code>

<code># systemctl start krb5kdc kadmin nfs-secure</code>

<code># systemctl enable krb5kdc kadmin nfs-secure</code>

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

<code># kdb5_util create -s</code>

RHCE 系列(七):在 Linux 用戶端配置基于 Kerberos 身份驗證的 NFS 伺服器RHCE 系列(七):在 Linux 用戶端配置基于 Kerberos 身份驗證的 NFS 伺服器

建立 kerberos 資料庫

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

<code># kadmin.local</code>

<code># addprinc root/admin</code>

添加 kerberos 伺服器到資料庫:

<code># addprinc -randkey host/box2.mydomain.com</code>

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

<code># addprinc -randkey nfs/box2.mydomain.com</code>

<code># addprinc -randkey nfs/box1.mydomain.com</code>

輸入 quit 和Enter鍵退出:

RHCE 系列(七):在 Linux 用戶端配置基于 Kerberos 身份驗證的 NFS 伺服器RHCE 系列(七):在 Linux 用戶端配置基于 Kerberos 身份驗證的 NFS 伺服器

添加 kerberos 到 nfs 伺服器

為 root/admin 擷取和緩存票據授權票據ticket-granting ticket:

<code># kinit root/admin</code>

<code># klist</code>

RHCE 系列(七):在 Linux 用戶端配置基于 Kerberos 身份驗證的 NFS 伺服器RHCE 系列(七):在 Linux 用戶端配置基于 Kerberos 身份驗證的 NFS 伺服器

緩存 kerberos

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

<code># kdadmin.local</code>

<code># ktadd host/box2.mydomain.com</code>

<code># ktadd nfs/box2.mydomain.com</code>

<code># ktadd nfs/box1.mydomain.com</code>

最後,挂載共享目錄并進行一個寫測試:

<code># mount -t nfs4 -o sec=krb5 box2:/nfs /mnt</code>

<code># echo "hello from tecmint.com" &gt; /mnt/greeting.txt</code>

RHCE 系列(七):在 Linux 用戶端配置基于 Kerberos 身份驗證的 NFS 伺服器RHCE 系列(七):在 Linux 用戶端配置基于 Kerberos 身份驗證的 NFS 伺服器

挂載 nfs 共享

現在讓我們解除安裝共享,在用戶端中重命名密鑰表檔案(模拟它不存在)然後試着再次挂載共享目錄:

<code># umount /mnt</code>

<code># mv /etc/krb5.keytab /etc/krb5.keytab.orig</code>

RHCE 系列(七):在 Linux 用戶端配置基于 Kerberos 身份驗證的 NFS 伺服器RHCE 系列(七):在 Linux 用戶端配置基于 Kerberos 身份驗證的 NFS 伺服器

挂載/解除安裝 kerberos nfs 共享

現在你可以使用基于 kerberos 身份驗證的 nfs 共享了。

本文來自雲栖社群合作夥伴“linux中國”,原文發表于2013-04-02.