了解 Kerberized NFSv4 授權
諸如此類的文章似乎指出 Kerberizing NFS(v4) 掛載不僅可以防止沒有 Kerberos 服務票證的機器安裝共享目錄,而且還使用使用者的 Kerberos 票證來授權使用者對共享文件的操作。
我引用相關部分:
在 NFSv4 之前,NFS 上的安全性幾乎不存在。您可以防止未經授權的機器連接到 NFS 導出,但必須依靠系統之間相同的使用者 ID 映射來使用伺服器的權限來充分保護文件。以這種方式使用 Kerberos 使 NFS 比以前更加安全。
我無法理解的是以下情況,這似乎與此陳述相矛盾:
# mount /share #succeeds because I have a service ticket in my keytab $ klist klist: No credentials cache found (ticket cache FILE:....) $ ls /share ls: cannot access /share: Permission Denied $ kinit Password for joe@MYREALM: $ ls /share contents of share
到目前為止一切順利,但是當我這樣做時:
$ kdestroy $ ls /share contents of share
這裡發生了什麼事?即使我沒有 Kerberos 憑據,我也能夠訪問 NFS 掛載點。這是預期的行為還是我的安裝配置錯誤?
資訊
- 在 Debian Wheezy 7.0 上執行 MIT Kerberos V
- 我的安裝選項:
$ grep nfs4 /etc/fstab server.myrealm:/nfs_export /share nfs4 sec=krb5,user 0 0
- 我
/etc/exports
在伺服器上:/nfs_export *(rw,sync,no_subtree_check,sec=krb5)
該
nfs(5)
頁面稱 GSS API 支持兩種額外的 Kerberos 安全性:krb5i
檢查數據完整性並檢測任何篡改,並krb5p
進一步確保所有 RPC 呼叫都經過加密以確保安全。我認為啟用其中任何一個都不能解決我的問題。編輯
根據dawud 的建議,我嘗試了兩者
krb5i
並且krb5p
行為仍然存在。我的問題再次是如何確保
/share
目前沒有 Kerberos 票證的任何人都無法訪問?此外,我是否可以將使用者的 Kerberos 票證用於授權目的(即控制誰可以訪問什麼),正如我引用的文章似乎暗示的那樣?
您看到的行為是 Linux 客戶端處理憑據方式的結果。一旦找到工作憑證,它就會將其記憶體在記憶體中。即使在您 kdestroy 之後,您的(仍然有效的)憑據也會被客戶端記憶體。
引用自http://www.citi.umich.edu/projects/nfsv4/linux/faq/
核心程式碼記憶體使用 Kerberos 憑據協商的 gssapi 上下文。銷毀憑證不會破壞核心中的上下文。我們計劃在使用新的密鑰環核心支持來儲存憑據和上下文時更改此行為。
不幸的是,客戶端仍然不使用密鑰環支持。