我正在使用 FreeIPA 进行 LDAP/Kerberos 并且我为存储设备 (Dell/EMC UnityVSA VM) 创建了一个主体。我已经使用来自 IPA 的密钥表设置了 VSA,我还在 VSA 中设置了 LDAP 配置并创建了支持 Kerberized NFS 共享的 NAS。IPA 和 VSA 都没有报告任何问题,那里的一切看起来都很好。
从 macOS 客户端 (High Sierra),当服务器上的 Kerberos 被禁用时,我能够挂载 NFSv4 共享(因此基本功能正常)。但是,当我为该共享的安全性指定 Kerberos 时,我无法连接(“权限被拒绝”)。
我用来挂载的命令是:
sudo mount_nfs -vv -o sec=krb5,vers=4 <storage-server>:/test ~/test
输出为:
mount <storage-server>:/test on /Users/<user>/test
mount flags: 0x0
socket: type:any,nomntudp
file system locations:
/test
<storage-server>
inet <ip of storage server>
NFS options: fg,retrycnt=1,vers=4,hard,nointr,noresvport,conn,callback,negnamecache,nonamedattr,acl,noaclonly,nocallumnt,locks,quota,rsize=32768,wsize=32768,readahead=16,dsize=32768,nordirplus,nodumbtimr,timeo=10,retrans=10,maxgroups=16,acregmin=5,acregmax=60,acdirmin=5,acdirmax=60,deadtimeout=0,nomutejukebox,noephemeral,nonfc,sec=krb5
mount_nfs: can't mount /test from <storage-server> onto <mount-point>: Permission denied
我能够从客户端的 KDC 获取票证。klist
尝试连接到 NFS 共享后,命令显示以下输出,其中第二个条目是 VSA(存储服务器)的 IPA 主体。
Credentials cache: API:A2FC2CF2-BA23-CE06-BC50-D5CA1180C946
Principal: admin@<REALM>
Issued Expires Principal
Feb 20 21:13:07 2019 Feb 21 21:12:46 2019 krbtgt/<REALM>@<REALM>
Feb 20 21:18:12 2019 Feb 21 21:12:46 2019 nfs/<storage-server>.<domain>@<REALM>
我的客户端上的 /etc/krb5.conf 文件如下所示:
[libdefaults]
default_realm = <REALM>
dns_lookup_realm = false
dns_lookup_kdc = true
rdns = false
ticket_lifetime = 24h
forwardable = true
udp_preference_limit = 0
default_ccache_name = KEYRING:persistent:%{uid}
[realms]
<REALM> = {
kdc = tcp/<FQDN of IPA>
admin_server = tcp/<FQDN of IPA>
}
[domain_realm]
.<domain> = <REALM>
<domain> = <REALM>
<FQDN of IPA> = <REALM>
<FQDN of storage-server> = <REALM>
顺便说一句,我无法开始kadmin
工作。例如,命令
kadmin [email protected]
返回以下输出:
kadmin: kadm5_init_with_password: Cannot contact any KDC for requested realm
有什么想法我在这里遗漏了什么吗?我需要 krb5.conf 文件吗,或者 IPA 是否应该能够处理 DNS 中的服务记录?
更新
当我在服务器端指定时AUTH_SYS
,NFS 连接方面似乎也运行良好。
更新 2:WireShark 转储
下面的转储显示了上述 mount 命令期间客户端和 NFS 服务器之间的 NFS 流量。第一个是客户端,第二个是服务器响应(下面成对继续):
答案1
事实证明 UnityVSA 上的架构规范存在问题,因此它无法正确进行 LDAP 搜索;Kerberized NFS 现在可以工作。
仍然不知道为什么kadmin
会返回它在 macOS 上所做的内容。
需要说明的是,根本不需要/etc/krb5.conf
(或 中的等效文件),DNS 会处理所有繁重的工作。macOS 无需使用 IPA 进行任何特定的加密配置,开箱即用。/Library/Preferences/...
以供将来参考,就行为而言,即使在 macOS 票证查看器中指定了 Kerberos 身份(密码存储在钥匙串中),也必须明确请求票证(例如,如果票证未处于活动状态但指定了身份,则在访问 Finder 中的 NFS 共享时不会隐式请求票证)。