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

kinit & pam_sss: не удается найти KDC для запрошенной области при получении начальных учетных данных

У меня очень похожая проблема, как описано в этой теме на CentOS 6.3 с аутентификацией на DC 2008R2 AD.

Вот мой krb5.conf, я точно знаю, что XXXXXXX.LOCAL - настоящее доменное имя:

[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = XXXXXXX.LOCAL
 dns_lookup_realm = false
 dns_lookup_kdc = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true
 verify_ap_req_nofail = false

[realms]
 XXXXXXX.LOCAL = {
 kdc = ad1.XXXXXXX.local
 kdc = ad2.XXXXXXX.local
 admin_server = ad1.XXXXXXX.local
 default_domain = XXXXXXX.LOCAL
}

[domain_realm]
 .XXXXXXX.local = XXXXXXX.LOCAL
 XXXXXXX.local = XXXXXXX.LOCAL
 .XXXXXXX.com = XXXXXXX.LOCAL
 XXXXXXX.com = XXXXXXX.LOCAL

Когда я делаю:

kinit username@XXXXXXX.LOCAL

Все работает, как задумано, klist -e возвращает детали, которые должны, однако, когда я пытаюсь:

su имя пользователя

В sssd krb5_child.log отображается следующее:

[unpack_buffer] (0x0100): cmd [241] uid [10002] gid [10002] validate [false] offline [false] UPN [username@XXXXXXX.COM]
[unpack_buffer] (0x0100): ccname: [FILE:/tmp/krb5cc_10002_XXXXXX] keytab: [/etc/krb5.keytab]
[krb5_child_setup] (0x0400): Will perform online auth
[krb5_child_setup] (0x0100): Cannot read [SSSD_KRB5_RENEWABLE_LIFETIME] from environment.
[krb5_child_setup] (0x0100): Cannot read [SSSD_KRB5_LIFETIME] from environment.
[krb5_set_canonicalize] (0x0100): SSSD_KRB5_CANONICALIZE is set to [false]
[krb5_child_setup] (0x0100): Not using FAST.
[get_and_save_tgt] (0x0400): Attempting kinit for realm [XXXXXXX.COM]
[get_and_save_tgt] (0x0020): 977: [-1765328230][Cannot find KDC for requested realm]
[kerr_handle_error] (0x0020): 1030: [-1765328230][Cannot find KDC for requested realm]
[prepare_response_message] (0x0400): Building response for result [-1765328230]
[main] (0x0400): krb5_child completed successfully

Я также знаю, что XXXXXXX.COM - это псевдоним для XXXXXXX.LOCAL в дереве AD и который работает:

kinit username@XXXXXXX.COM

выдает точно такую ​​же ошибку, что и в журнале krb5_child.log

kinit: не удается найти KDC для запрошенной области при получении начальных учетных данных

Я несколько дней бился головой об стену по этой проблеме и был бы признателен за любые подсказки. :)

То, с чем вы имеете дело, называется принципалами предприятия. У вас есть один домен AD, но с пользователями могут быть связаны дополнительные основные имена пользователей (UPN), поэтому в дополнение к XXXX.LOCAL они могут иметь XXXX.COM и использовать user@XXXX.COM вместо user@XXXX.LOCAL.

SSSD поддерживает принципалов предприятия, начиная с версии 1.10. В реализации было несколько ошибок, которые повлияли на бета-версии 1.10, но они исправлены до финальной версии, доступной в Fedora 19+.

Однако это изменение недоступно в RHEL 6.x (или CentOS 6.x, если на то пошло), поскольку поддержка корпоративных участников является относительно агрессивной и не была перенесена в 1.9.x.

Возможно, вам будет интересно посмотреть подробности на https://bugzilla.redhat.com/show_bug.cgi?id=972357 и https://bugzilla.redhat.com/show_bug.cgi?id=924404

Если вы не укажете область в krb5.conf и вы отключите поиск DNS, ваш хост не имеет возможности узнать, что XXXXXX.COM является псевдонимом для XXXXXX.LOCAL.

Добавьте такой раздел области в ваш krb5.conf и посмотрите, что произойдет.

XXXXXXX.COM = {
 kdc = ad1.XXXXXXX.local
 kdc = ad2.XXXXXXX.local
 admin_server = ad1.XXXXXXX.local

}

Включение поиска dns для области и kdc также приведет к тому же результату.

dig -t srv _kerberos._udp.XXXXXX.com 

должны быть настоящие серверы, использованные выше.

Однако я не уверен, что это действительно правильно. Приведенный выше krb5.conf должен поместить вас в область XXXXXX.LOCAL, пытаясь выяснить, почему sssd игнорирует, что может привести вас в правильном направлении.

У меня была очень похожая проблема на RHEL 6. Я уже был подключен к домену, но продолжал видеть ошибку kinit-successeded-but-ads_sasl_spnego_krb5_bind-failed в моих журналах.

Это было решение для меня, и я подумал, что это может быть полезно и для вас.

Когда я смотрел в / var / log / samba, я заметил два log.wb-* файлы. В моем окружении у нас есть два разных царства. Я проверил оба файла журнала. В log.wb-Correctrealm был пуст. В log.wb-Incorrectrealm был ли файл журнала с указанным выше сообщением об ошибке.

Я проверил свою конфигурацию самбы (/etc/samba/smb.conf) и я нашел проблему.

В этих строках указаны неверные области.

idmap config Incorrectrealm:backend = rid
idmap config Incorrectrealm:range = 10000000-19999999

Я изменил линии, чтобы отразить правильную область

idmap config Correctrealm:backend = rid
idmap config Correctrealm:range = 10000000-19999999

и перезапустил службу smb. Затем я вернулся к своим файлам журнала и области с log.wb-Correctrealm теперь заселялся.

Это решило указанную выше ошибку.

Этого решения я нигде не нашел и просто хотел передать.

Вы должны правильно настроить не только krb5.conf, но и sssd.conf - либо жестко запрограммируйте имена хостов вашего сервера с помощью krb5_server / ldap_server / whatnot, либо укажите resolv.conf на сервере, который может разрешить правильные записи SRV для вас.

Смотрите также http://jhrozek.wordpress.com/2014/11/04/how-does-sssd-interact-with-tools-like-kinit/ для обзора того, как sssd взаимодействует с kinit / libkrb5.