Не удается получить SPN из Linux для правильного Kerberos-реалма из AD с раздельным DNS-пространством имен.

Вопрос или проблема

У меня есть машина 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) и других настройках, касающихся аутентификации.

Шаги для решения проблемы

  1. Обновление конфигурации 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.

  2. Перезагрузка сервисов:

    После внесения изменений в конфигурацию необходимо перезагрузить службу SSSD и другие связанные сервисы, чтобы применить новые настройки:

    sudo systemctl restart sssd
  3. Проверка кэша Kerberos:

    Далее вам стоит очистить кэш Kerberos, чтобы избавиться от имеющихся "mangled tickets". Это можно сделать с помощью следующей команды:

    kdestroy
  4. Проверка аутентификации:

    Попробуйте запросить билет для ресурса в родительском домене:

    kinit [email protected]

    Убедитесь, что билет выдан корректно и без ошибок.

Заключение

С помощью приведенных шагов вы сможете настроить ваш сервер для корректной аутентификации в ресурсах Active Directory, которые находятся в родительском домене. Обратите внимание, что правильная конфигурация файла Kerberos является критически важной для обеспечения бесшовного входа и доступа к ресурсам. Если проблема сохраняется, рекомендуется также проверить настройки DNS и журналы ошибок Kerberos для выявления дополнительных причин сбоя.

Оцените материал
Добавить комментарий

Капча загружается...