Вопрос или проблема
Я настроил несколько серверов RHEL9 для аутентификации через AD для домена EXAMPLE.XYZ; это сделано через playbooks Ansible, и до сих пор все работает хорошо. (Это та же самая настройка, что и в этом предыдущем вопросе: Подключение к домену через Ansible возвращает ошибку “Уже подключен к этому домену”, в то время как через shell все в порядке)
Однако каждые несколько минут на каждом хосте (скажем, на myhost42) происходят всплески сообщений об ошибках, несколько раз в секунду, в /var/log/messages
:
Feb 19 15:23:32 myhost42 ldap_child[1647375]: Failed to initialize credentials using keytab [MEMORY:/etc/krb5.keytab]: Client '[email protected]' not found in Kerberos database. Unable to create GSSAPI-encrypted LDAP connection.
Это файл /etc/krb5.conf
:
includedir /etc/krb5.conf.d/
includedir /var/lib/sss/pubconf/krb5.include.d/
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
dns_lookup_realm = false
dns_lookup_kdc = true
ticket_lifetime = 24h
renew_lifetime = 7d
rdns = false
forwardable = true
default_realm = EXAMPLE.XYZ
default_ccache_name = KEYRING:persistent:%{uid}
udp_preference_limit = 0
[realms]
[domain_realm]
Что можно сделать для устранения проблемы?
Ответ или решение
Для решения проблемы с ошибкой "Failed to initialize credentials using keytab [MEMORY:/etc/krb5.keytab]: Client (…) not found in Kerberos database," нужно рассмотреть несколько важных аспектов настройки Kerberos и интеграции с Active Directory (AD), особенно в контексте Linux-систем на базе RHEL9. Ошибки этого типа могут возникать по разным причинам, включая неправильно настроенные конфигурационные файлы, ошибки в keytab-файле, проблемы с синхронизацией времени и так далее. Рассмотрим теорию, примеры и приложения, которые помогут в решении данной проблемы.
Теория
Kerberos — это протокол сетевой аутентификации, который использует билеты для подтверждения личности клиентов и серверов в сети. Настраивая Kerberos, важно убедиться, что все настройки конфигурационных файлов согласуются с сервером Key Distribution Center (KDC), который, в данном случае, является частью Active Directory. Ваша ошибка указывает на то, что credentials, т.е. учетные данные, не инициализируются из-за неправильной или отсутствующей записи клиента в базе данных Kerberos. Это может быть связано с неправильным или отсутствующим keytab-файлом, который используется для автоматического получения билетов без запроса пароля.
Пример
Из сообщения об ошибке видно, что приложение, связанное с LDAP, не может наладить зашифрованное соединение с использованием GSSAPI, что может быть вызвано несколькими причинами. Наиболее вероятные включают:
-
Несоответствие keytab-файлов: Убедитесь, что на всех серверах keytab-файл находится в правильном месте, и все записи соответствуют учетным данным в базе данных Kerberos. Для этого каждую запись keytab-файла можно проверить при помощи утилиты
klist -kte
. -
Отсутствие правил преобразования имени: В конфигурации
/etc/krb5.conf
может отсутствовать или быть неправильно задано маппирование имён доменов ([domain_realm]
), что приводит к несоответствию между именем клиента и его записью в KDC. -
Проблемы синхронизации времени: Kerberos является чувствительным к времени, и даже небольшие рассинхронизации на несколько минут могут привести к отказу в аутентификации. Используйте NTP для синхронизации времени на всех серверах.
Применение
Для диагностики и устранения вашей проблемы рекомендуется следовать следующим шагам:
-
Проверка keytab-файла: Проверьте, что файл
/etc/krb5.keytab
имеет правильные права доступа и содержит корректные записи. Используйте командуklist -kte /etc/krb5.keytab
, чтобы убедиться, что там есть необходимые записи дляmyhost42$@EXAMPLE.XYZ
. Отсутствие таких записей может означать необходимость перегенерации keytab с сервера AD. -
Настройка правил realms: Проверьте секцию
[domain_realm]
в файле/etc/krb5.conf
. Убедитесь, что ваша доменная структура правильно отображена и AD сервер может корректно разрешить имена хостов в соответствующие реалмы. -
Проверка синхронизации времени: Установите и настройте
chronyd
илиntpd
для поддержания времени в актуальном состоянии на всех серверах. Можете использовать командуntpq -p
илиchronyc tracking
, чтобы удостовериться в корректной настройке. -
Обновление и проверка DNS-записей: Проверьте ваши DNS-записи для всех серверов, чтобы убедиться, что прямая и обратная DNS-записи разрешаются корректно. Kerberos полагается на DNS для определения путей и имен хостов.
-
Проверка логов: Ищите больше информации в логах Kerberos и системных логах (
/var/log/krb5libs.log
,/var/log/krb5kdc.log
, и/var/log/kadmind.log
), чтобы детально понять, в чем заключается проблема. Внимательно изучите сообщения об ошибках, которые могут указать на очевидные конфигурационные проблемы.
Причины возникновения таких ошибок многогранны, и их решение может потребовать тщательной проверки всех пунктов настройки сети и взаимодействия с Active Directory. Убедитесь, что все компоненты системы поддерживаются с актуальными патчами и настройками, соответствующими требованиям вашей сети.orrectionPomазательны рекомендуются регулярные аудиты и мониторинг сетевой активности и журналов для предотвращения подобных проблем в будущем.