kadmind 錯誤 - krb5_recvauth: 在 HDBGET 密鑰表類型中不支持 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、獲取票證並成功使用 GSSAPI 身份驗證和 sshd。我什至可以成功地使用帶有 -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 指令,即使我複制了預設的 m-key最初在 Debian 5.x 上自動生成的文件沒有任何區別)。不知道我還能做些什麼來確保配置盡可能相似。
我還嘗試將更新的 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.2 和 1.6 之間的各種程式碼更改導致了我看到的問題。為了解決這個問題,我做了以下事情:
- 將 kadmin/admin 主體添加到 /etc/krb5.keytab
- 附加
--keytab=/etc/krb5.keytab
到 /etc/inetd.conf 中的 kadmind 參數這告訴 kadmind 在 /etc/krb5.keytab(而不是“HDBGET:”)中顯式查找它用來向 kdc 進行身份驗證的 kadmin/admin 主體。