我正在尝试将带有 OpenLDAP 后端的 heimdal KDC 从 Debian 5.x 服务器(heimdal 1.2.dfsg.1-2.1)迁移到 Ubuntu 14.04 服务器(heimdal 1.6~git20131207+dfsg-1ubuntu1.1),但在 14.04 系统上遇到了 kadmind 问题。
某些 kerberos 功能运行良好 - 我可以运行 kinit、获取票证并成功使用 sshd 进行 GSSAPI 身份验证。我甚至可以成功使用带有 -l 选项的 kadmin。但是,当我省略 -l 选项并尝试与 kadmind 通信时,会出现错误。例如,如果我将 kadmin/admin 密钥表导出到文件 /tmp/kadmin.keytab 并运行:
kadmin -p kadmin/admin -K /tmp/kadmin.keytab get kadmin/admin
我收到错误:
kadmind[38823]: krb5_recvauth: start_seq_get is not supported in the HDBGET keytab type
这个完全相同的命令,使用完全相同的 kadmin.keytab 文件,在 debian 5.x 系统上运行良好。
我收到上述错误的情况是,我要么将 /var/lib/heimdal-kdc/heimdal.db 文件从 Debian 5.x 服务器复制到 Ubuntu 14.04 服务器,要么 heimdal.db 文件不存在。如果我使用与 heimdal 包安装一起创建的默认 heimdal.db 文件,我会看到来自 kadmind 的不同错误:
kadmind[38853]: krb5_recvauth: Decrypt integrity check failed for checksum type hmac-sha1-96-aes256, key type aes256-cts-hmac-sha1-96
我不明白 heimdal.db 的内容为何如此重要,因为我使用的是 OpenLDAP 后端。当主体位于 LDAP 目录中时,静态 db 文件以某种方式被查阅,这似乎很奇怪。我已验证我已将 LDAP 目录完整地从 Debian 5.x 系统复制到 Ubuntu 14.04 系统,并且没有使用主密钥(没有 mkey_file 指令,即使我复制最初在 Debian 5.x 上自动生成的默认 m-key 文件也没有任何区别)。不确定我还能做些什么来确保配置尽可能相似。
我还尝试将较新的 heimdal 1.6rc2 软件包反向移植到 14.04,但出现了同样的错误。我尝试使用 gdb 跟踪 kadmind 的行为,但没有发现任何明显的问题。
有人知道这里可能发生了什么吗?以下是 /etc/krb5.conf 和 /etc/heimdal-kdc/kdc.conf 文件,用于说明配置:
# /etc/krb5.conf
[libdefaults]
default_realm = EXAMPLE.COM
forwardable = true
proxiable = true
renewable = true
scan_interfaces = true
[realms]
EXAMPLE.COM = {
admin_server = localhost
kdc = localhost
}
[domain_realm]
example.com = EXAMPLE.COM
.example.com = EXAMPLE.COM
[logging]
default = SYSLOG:INFO
# /etc/heimdal-kdc/kdc.conf
[logging]
kdc = FILE:/var/log/heimdal-kdc.log
kdc = SYSLOG:INFO
[kdc]
database = {
dbname = ldap:dc=example,dc=com
hdb-ldap-create-base = ou=Kerberos,dc=example,dc=com
acl_file = /etc/heimdal-kdc/kadmind.acl
}
答案1
看起来 1.2 和 1.6 之间的各种代码更改导致了我所看到的问题。为了解决这个问题,我做了以下事情:
- 将 kadmin/admin 主体添加到 /etc/krb5.keytab
- 附加
--keytab=/etc/krb5.keytab
到 /etc/inetd.conf 中的 kadmind 参数
这告诉 kadmind 在 /etc/krb5.keytab(而不是“HDBGET:”)中明确查找用于向 kdc 进行身份验证的 kadmin/admin 主体。
有关详细信息,请参阅For more information, seehttps://github.com/heimdal/heimdal/issues/133