Вопрос или проблема
У меня есть 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
показывает, что в целом одни и те же вызовы к одним и тем же библиотекам.
-
выведите список keytab с помощью klist и вставьте его сюда
-
покажите нам результат get_principal – у вас установлена предварительная аутентификация?
-
покажите нам логи KDC
Это прояснит вашу проблему.
Ответ или решение
Для того чтобы разобраться с проблемой, связанной с ошибкой «Preauthentication failed while getting initial credentials», необходимо выполнить несколько шагов и обратить внимание на некоторые аспекты конфигурации Kerberos.
-
Проверьте содержимое ключевого табулятора (keytab) с помощью команды
klist
:
Используйте командуklist -e /path/to/your.keytab
, чтобы отобразить содержимое вашего keytab файла. Убедитесь, что в этом файле находятся корректные записи для вашего принципала, например:nfs/oldlabsystem@YOUR.REALM
-
Проверьте настройки принципала в Active Directory:
Выполните командуget_principal
с помощью утилитыkadmin
или аналогичной. Убедитесь, что для вашего принципала включена аутентификация. В частности, убедитесь, что опция предварительной аутентификации (Pre-Authentication) включена, так как по умолчанию Kerberos требует эту аутентификацию. -
Изучите логи KDC (Key Distribution Center):
Логи KDC содержат важную информацию о неудачных попытках аутентификации. Попробуйте найти записи, связанные с вашим принципалом в логах. По умолчанию эти логи могут находиться в/var/log/krb5kdc.log
или аналогичном пути. Ищите такие строки, как:AS-REQ from client nfs/oldlabsystem for krbtgt/YOUR.REALM
-
Создание нового ключа и ключевого табулятора:
Если вы снова создавали ключ дляnfs/oldlabsystem
, убедитесь, что вы используете правильные параметры при генерации нового keytab. Пример команды, которая может быть полезна:ktpass -pr nfs/oldlabsystem@YOUR.REALM -mapuser nfsuser -crypto ALL:+AES256 -ptype KRB5_NT_PRINCIPAL -kvno 1
-
Проверка совместимости:
Убедитесь, что конфигурации 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
-
Отключение предварительной аутентификации:
Отключение предварительной аутентификации может позволить вам получить TGT, но это небезопасная практика. Используйте этот метод только как временную меру для диагностики. -
Дополнительная диагностика:
Используйтеstrace
для детального отслеживания системных вызовов, как вы уже делали. Важно убедиться, что библиотека, работающая с вашим Kerberos, корректно обрабатывает ключи.
Если после выполнения всех этих шагов проблема не разрешается, рекомендуется обратиться к сообществу CentOS или специалистам по Kerberos, предоставив им подробную информацию о ваших действиях и полученных ошибках.