Ошибка предаутентификации kinit

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

У меня есть CentOS 6.4, который кто-то настроил некоторое время назад.

Администратор не уверен, как он его установил, но он отлично работает с Kerberos. Я использовал authconfig для настройки домена и параметров Kerberos.

Я использую ktpass на контроллере домена Windows и перенёс keytab. kinit -k работает хорошо, и я могу использовать его для монтирования nfs4 с Kerberos.

Всё это довольно стандартно.

Моя проблема заключается в том, что у клиента установлен 6.7 с базовой установкой, и нам не удаётся заставить kinit работать правильно.

Мы установили следующие RPM-пакеты.

$ yum install krb5-libs krb5-workstation pam_krb5 \
       cyrus-sasl-gssapi samba-* nfs-utils nfs4-acl-tools tcpdump -y

Каждая попытка заставить систему получить tgt возвращает общее сообщение.

$ kinit -k nfs/oldlabsystem
kinit: Предварительная аутентификация не удалась при получении начальных учетных данных

Я вернулся назад и установил 6.4 тем же способом, и теперь у 6.4 возникла проблема. Я извлёк список rpm из моей работоспособной версии 6.4 и использовал yum для установки тех же RPM-пакетов.

Никакого результата.

Сетевые трассировки показывают следующее:

AS-REQ
AS-REP error-code: eRR-PREAUTH-REQUIRED (25)
AS-REQ
error-code: eRR-PREAUTH-FAILED (24)

Я вернулся и создал новые ключи для своей рабочей системы, чтобы убедиться, что мой метод генерации ключей был правильным. На моей работающей системе 6.4 нет проблем.

На неработающей системе 6.4 я могу выполнить kinit username и ввести пароль пользователя без проблем. Но я не могу выполнить kinit -k, если я сделаю kinit и введу пароль, установленный с помощью kpass, я получу

kinit: Предварительная аутентификация не удалась при получении начальных учетных данных

В отчаянии я вернулся и создал учетную запись пользователя, а затем сгенерировал keytab из этой учетной записи. Это также завершилось неудачей с той же ошибкой. Затем в учетной записи пользователя в AD я отключил предварительную аутентификацию, и после этого kinit вернул следующее.

[root@ ~]# kinit -k nfs/nfstestsystem.rockies.beta
kinit: Неверный пароль при получении начальных учетных данных

Я подозреваю, что keytab каким-то образом повреждён или операционная система неправильно использует ключи.

Моя проблема заключается в том, что эти ошибки настолько общие, что почти невозможно найти что-то полезное на форумах: lab-admin-krb5.

Я пытался опубликовать эти вопросы на форумах CentOS, но у меня не получилось продвинуться далеко.

Вывод strace обоих kinit показывает, что в целом одни и те же вызовы к одним и тем же библиотекам.

  1. выведите список keytab с помощью klist и вставьте его сюда

  2. покажите нам результат get_principal – у вас установлена предварительная аутентификация?

  3. покажите нам логи KDC

Это прояснит вашу проблему.

Ответ или решение

Для того чтобы разобраться с проблемой, связанной с ошибкой «Preauthentication failed while getting initial credentials», необходимо выполнить несколько шагов и обратить внимание на некоторые аспекты конфигурации Kerberos.

  1. Проверьте содержимое ключевого табулятора (keytab) с помощью команды klist:
    Используйте команду klist -e /path/to/your.keytab, чтобы отобразить содержимое вашего keytab файла. Убедитесь, что в этом файле находятся корректные записи для вашего принципала, например:

    nfs/oldlabsystem@YOUR.REALM
  2. Проверьте настройки принципала в Active Directory:
    Выполните команду get_principal с помощью утилиты kadmin или аналогичной. Убедитесь, что для вашего принципала включена аутентификация. В частности, убедитесь, что опция предварительной аутентификации (Pre-Authentication) включена, так как по умолчанию Kerberos требует эту аутентификацию.

  3. Изучите логи KDC (Key Distribution Center):
    Логи KDC содержат важную информацию о неудачных попытках аутентификации. Попробуйте найти записи, связанные с вашим принципалом в логах. По умолчанию эти логи могут находиться в /var/log/krb5kdc.log или аналогичном пути. Ищите такие строки, как:

    AS-REQ from client nfs/oldlabsystem for krbtgt/YOUR.REALM
  4. Создание нового ключа и ключевого табулятора:
    Если вы снова создавали ключ для nfs/oldlabsystem, убедитесь, что вы используете правильные параметры при генерации нового keytab. Пример команды, которая может быть полезна:

    ktpass -pr nfs/oldlabsystem@YOUR.REALM -mapuser nfsuser -crypto ALL:+AES256 -ptype KRB5_NT_PRINCIPAL -kvno 1
  5. Проверка совместимости:
    Убедитесь, что конфигурации Kerberos на обеих системах (как 6.4, так и 6.7) сопоставимы. Проверьте конфигурационный файл /etc/krb5.conf на наличие всех необходимых настроек, таких как:

    [libdefaults]
       default_realm = YOUR.REALM
       ticket_lifetime = 24h
       renew_lifetime = 7d
       udp_preference_limit = 1
       default_tgs_enctypes = rc4-hmac aes256-cts aes128-cts
       default_tkt_enctypes = rc4-hmac aes256-cts aes128-cts
  6. Отключение предварительной аутентификации:
    Отключение предварительной аутентификации может позволить вам получить TGT, но это небезопасная практика. Используйте этот метод только как временную меру для диагностики.

  7. Дополнительная диагностика:
    Используйте strace для детального отслеживания системных вызовов, как вы уже делали. Важно убедиться, что библиотека, работающая с вашим Kerberos, корректно обрабатывает ключи.

Если после выполнения всех этих шагов проблема не разрешается, рекомендуется обратиться к сообществу CentOS или специалистам по Kerberos, предоставив им подробную информацию о ваших действиях и полученных ошибках.

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

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