Назад | Перейти на главную страницу

ошибка kadmind - krb5_recvauth: start_seq_get не поддерживается в типе ключей HDBGET

Я пытаюсь перенести heimdal KDC с бэкэндом OpenLDAP с сервера Debian 5.x (heimdal 1.2.dfsg.1-2.1) на сервер Ubuntu 14.04 (heimdal 1.6 ~ git20131207 + dfsg-1ubuntu1.1), и я столкнулся с проблемами с kadmind в системе 14.04.

Некоторые функции kerberos работают нормально - я могу запустить kinit, получить билет и успешно использовать аутентификацию GSSAPI с sshd. Я даже могу успешно использовать kadmin с параметром -l. Однако, когда я не использую параметр -l и пытаюсь поговорить с kadmind, я получаю ошибки. Например, если я экспортирую kadmin / admin keytab в файл /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.db по умолчанию, который создается вместе с установкой пакета heimdal, я вижу ошибку, отличную от 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. Кажется странным, что к статическому файлу db каким-то образом обращаются, когда участники находятся в каталоге LDAP. Я убедился, что я скопировал каталог LDAP в неповрежденном виде из системы Debian 5.x в систему Ubuntu 14.04, и что не используется главный ключ (нет директивы mkey_file, и даже если я скопирую m-ключ по умолчанию файл, который изначально был автоматически сгенерирован в Debian 5.x, это не имеет значения). Не уверен, что еще я могу сделать, чтобы конфигурации были максимально похожи.

Я также попытался перенести более свежий пакет heimdal 1.6rc2 на версию 14.04, но получил те же ошибки. Я попытался отследить поведение kadmind с помощью gdb, но ничего не выскочило как очевидная проблема.

Кто-нибудь знает, что здесь может происходить? Вот файлы /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 привели к проблеме, которую я видел. Чтобы решить проблему, я сделал следующее:

  1. Добавлен принципал kadmin / admin в /etc/krb5.keytab
  2. Добавлено --keytab=/etc/krb5.keytab к аргументам kadmind в /etc/inetd.conf

Это указывает kadmind явно искать в /etc/krb5.keytab (вместо «HDBGET:») принципала kadmin / admin, который он использует для аутентификации в kdc.

Для получения дополнительной информации см. https://github.com/heimdal/heimdal/issues/133