Nfs

NFS 如何確定可以訪問哪些 Kerberos 憑據/主體?

  • January 2, 2019

我正在使用 Kerberos 設置 NFS 並遵循各種指南,例如NFSv4 with Kerberos on Ubuntu WikiHow To Use Kerberos to Control Access to NFS Network Shares等。所有指南都遵循相同的基本模式:

  • 設置 KDC
  • 為 NFS 伺服器創建一個基於密鑰的主體,nfs/nfs-server並確保這些密鑰位於NFS 伺服器/etc/krb5.keytab的文件中
  • 為 NFS 客戶端創建一個基於密鑰的主體,nfs/nfs-client並確保這些密鑰位於NFS 客戶端/etc/krb5.keytab的文件中

下一步是什麼讓我感到困惑。一旦/etc/exports在 NFS 伺服器上更改為…

/nfs/some-dir    [ip-address](rw,sec=krb5p,all_squash,sync)

… NFS 伺服器如何知道哪個 Kerberos 主體已分配給它自己?更基本的 - NFS 伺服器如何知道已添加到哪個 Kerberos 領域?此外,NFS 伺服器如何知道允許訪問哪些 Kerberos 主體?領域中可能有許多 Kerberos 使用者/主體,並且不應允許所有使用者/主體訪問特定的 NFS 導出。

同樣,一旦在 NFS 客戶端上執行以下操作…

mount -t nfs4 -o sec=krb5p [ip-address]:/nfs/some-dir /mnt/some-dir

… NFS 客戶端如何知道在與 NFS 伺服器通信時使用哪個 Kerberos 主體/密鑰?

/etc/krb5.keytab和文件中是否有一些隱含的魔法/etc/krb5.conf

kerberized NFS(通常是任何 kerberized 服務)使用幾個發現選項來找出要使用的 kerberos 領域。第一個地方是/etc/krb5.conf您可以明確指定要使用的預設領域:

[libdefaults]
...
default_realm = YOUR.REALM

如果未指定任何內容,則客戶端可以向 DNS 伺服器查詢 kerberos 服務記錄。最後,使用域名。NFS 伺服器將掃描/etc/krb5.keytab文件以查找適當的主機主體以用於 gss 握手。

當最終使用者訪問 NFS 伺服器時,會為每個客戶端建立一個專用的 GSS 上下文。在伺服器端,您需要一個映射服務,通常是 nfsidmapd,它基於系統配置使用本地密碼文件的 LDAP 伺服器將 kerberos 主體映射到本地 uid/gids。授權基於 unix 權限或 ACL(如果已配置)進行。

引用自:https://serverfault.com/questions/947201