kadmind 错误 - krb5_recvauth:HDBGET keytab 类型不支持 start_seq_get

kadmind 错误 - krb5_recvauth:HDBGET keytab 类型不支持 start_seq_get

我正在尝试将带有 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 之间的各种代码更改导致了我所看到的问题。为了解决这个问题,我做了以下事情:

  1. 将 kadmin/admin 主体添加到 /etc/krb5.keytab
  2. 附加--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

相关内容