Вопрос или проблема
У меня есть машина Fedora 40, которая подключена к домену Windows Active Directory с помощью команды realm join. Машина может получить доступ ко всем керберизированным ресурсам, при условии, что они находятся в одном DNS-домене Kerberos realm:
например:
DNS-домен: corp.mycompany.com
Kerberos realm: CORP.MYCOMPANY.COM
У меня есть несколько керберизированных ресурсов, которые находятся в родительском DNS-домене mycompany.com, и на них зарегистрированы SPN в AD DS (с родительским DNS-именем), и с Windows-машинами Kerberos-аутентификация работает отлично. Например:
HTTP/service.mycompany.com
С этими службами на Windows-машинах я получаю билет службы, который выглядит так, как и должен:
HTTP/[email protected]
На Linux-машинах они пытаются получить билеты службы для неверного realm:
HTTP/[email protected]
Это оставляет искаженные билеты в моем кэше Kerberos
HTTP/service.mycompany.com@
Я думаю, что проблема заключается в том, что когда SSSD генерирует конфигурацию drop-in для krb5.conf, он делает следующее:
cat /var/lib/sss/pubconf/krb5.include.d/domain_realm_corp_mycompany_com
[domain_realm]
.corp.mycompany.com = CORP.MYCOMPANY.COM
corp.mycompany.com = CORP.MYCOMPANY.COM
Мне не удалось найти способ сообщить SSSD о родительском домене. Может кто-нибудь помочь мне?
Я пытался добавить второй drop-in со следующим содержимым:
cat /var/lib/sss/pubconf/krb5.include.d/domain_realm_mycompany_com
[domain_realm]
.mycompany.com = CORP.MYCOMPANY.COM
mycompany.com = CORP.MYCOMPANY.COM
но это все еще не работает.
Это оставляет искаженные билеты в моем кэше Kerberos
Это “билеты обнаружения realm”. KDC будет отвечать на такие запросы билетами из правильного realm (позволяя клиентам полагаться на сопоставления [domain_realm] на стороне KDC без необходимости иметь свои собственные – немного похоже на то, что делает Windows), а кэш содержит дополнительное поле, содержащее настоящее имя принципала.
Мне не удалось найти способ сообщить SSSD о родительском домене. Может кто-нибудь помочь мне?
Добавьте конфигурацию [domain_realm] непосредственно в ваш основной /etc/krb5.conf
. SSSD не участвует в получении билетов, кроме как сообщать Kerberos о своих собственных доменах, и не нужно знать о каких-либо ресурсах, кроме DC – как это подразумевает название, его krb5.include.d включается только как часть глобальной конфигурации krb5, а не в качестве полного ее замены.
Ответ или решение
Решение проблемы с получением SPN из Linux для правильной Kerberos области в Active Directory с несоответствующими DNS-именами
В данном случае у вас возникла проблема с аутентификацией через Kerberos на Fedora 40 для ресурсов, расположенных в родительском DNS домене mycompany.com
, в то время как ваш Linux сервер настроен для работы с дочерним доменом corp.mycompany.com
. Давайте детально рассмотрим возможные причины и предложим шаги для решения этой проблемы.
Описание проблемы
Ваш сервер успешно подключён к домену Active Directory (AD) с дочерним DNS именем corp.mycompany.com
, и аутентификация для ресурсов в этом домене проходит как обычно. Однако, когда дело доходит до получения билетов для сервисов в родительском домене mycompany.com
, Linux не может корректно создать SPN и получает билеты для неправильной области (realm). Это приводит к записи "mangled tickets" в кэше Kerberos.
Анализ конфигурации Kerberos
Проблема заключается в конфигурации файла /etc/krb5.conf
, а именно в секции [domain_realm]
, которая не учитывает родительский домен. Вы упомянули, что SSSD (System Security Services Daemon) создает конфигурации для Kerberos, однако, SSSD не обрабатывает запросы на получение билетов. Он только предоставляет информацию о DC (Domain Controller) и других настройках, касающихся аутентификации.
Шаги для решения проблемы
-
Обновление конфигурации Kerberos:
Вам нужно вручную добавить необходимую конфигурацию в файл
/etc/krb5.conf
. Откройте файл для редактирования:sudo nano /etc/krb5.conf
Добавьте следующие строки в секцию
[domain_realm]
:[domain_realm] .mycompany.com = CORP.MYCOMPANY.COM mycompany.com = CORP.MYCOMPANY.COM
Таким образом вы укажете системе, что все обращения к
mycompany.com
должны корректно обрабатываться с использованием областиCORP.MYCOMPANY.COM
. -
Перезагрузка сервисов:
После внесения изменений в конфигурацию необходимо перезагрузить службу SSSD и другие связанные сервисы, чтобы применить новые настройки:
sudo systemctl restart sssd
-
Проверка кэша Kerberos:
Далее вам стоит очистить кэш Kerberos, чтобы избавиться от имеющихся "mangled tickets". Это можно сделать с помощью следующей команды:
kdestroy
-
Проверка аутентификации:
Попробуйте запросить билет для ресурса в родительском домене:
kinit [email protected]
Убедитесь, что билет выдан корректно и без ошибок.
Заключение
С помощью приведенных шагов вы сможете настроить ваш сервер для корректной аутентификации в ресурсах Active Directory, которые находятся в родительском домене. Обратите внимание, что правильная конфигурация файла Kerberos является критически важной для обеспечения бесшовного входа и доступа к ресурсам. Если проблема сохраняется, рекомендуется также проверить настройки DNS и журналы ошибок Kerberos для выявления дополнительных причин сбоя.