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

У меня есть bash для создания файла keytab:

#!/bin/bash
 
user = "username"
pass = "password"
 
printf "%b" "add_entry -password -p [email protected] -k 1 -e aes128-cts-hmac-sha1-96\n$pass\nadd_entry -password -p [email protected] -k 1 -e aes256-cts-hmac-sha1-96\n$pass\nadd_entry -password -p [email protected] -k 1 -e arcfour-hmac-md5-exp\n$pass\nadd_entry -password -p [email protected] -k 1 -e des3-cbc-sha1\n$pass\nadd_entry -password -p [email protected] -k 1 -e des-cbc-md5\n$pass\nwrite_kt $user.keytab" | ktutil

но не могу подключиться к ldap-серверу с этой ошибкой:

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

когда я использую kinit -V $user, все в порядке, и я пытаюсь создать keytab из командной строки несколько раз, но получаю ту же ошибку при входе в keytab

дес-cbc-md5? Вы получили сценарий 1999 года?

grawity_u1686 29.04.2024 06:28
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
586
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Наборы шифров aes128 и aes256 в Kerberos используют соленый PBKDF2 для получения ключа из пароля. Когда вы kinit с паролем, соль извлекается из KDC, но когда вы вручную создаете вкладку ключей, используется имя по умолчанию + соль области, которая будет работать большую часть времени, но не будет работать, если учетная запись пользователя была переименована как тогда его существующие ключи по-прежнему будут использовать старую соль (на основе старого имени), по крайней мере, до смены пароля.

Чтобы справиться с такой возможностью, используйте опцию -f для add_entry — она заставит ktutil выполнить AS-REQ и получить правильную соль от KDC, точно так же, как это делает kinit:

add_entry -password -p [email protected] -k 1 -e aes128-cts-hmac-sha1-96 -f

(arcfour-hmac не использует соль; он работает с прямыми NTLM-хешами, поэтому у него нет этой проблемы, но с другой стороны, arcfour-hmac — это другое имя для RC4, и в наши дни вам, вероятно, не следует его использовать. .

Я не помню, какие наборы шифров salt des3 и des используют, но я очень сомневаюсь, что вам нужен любой из них — Windows вообще не поддерживает des3, только des, а одиночный DES можно взломать за несколько часов, так что не надо тоже хочу его использовать. Тем не менее, в любом случае опция -f будет работать правильно для всех наборов шифров.)


Вместо массивного printf используйте << heredoc:

ktutil <<EOF
add_entry -password -p [email protected] -k 1 -e aes128-cts-hmac-sha1-96 -f
$pass
add_entry -password -p [email protected] -k 1 -e aes256-cts-hmac-sha1-96 -f
$pass
write_kt $user.keytab
EOF

Альтернативно, вместо одной команды вы можете использовать { } или ( ) для одновременной передачи нескольких выводов команды:

{
    for etype in {aes128,aes256}-cts-hmac-sha1-96; do
        echo "add_entry -password -p [email protected] -k 1 -e $etype -f"
        echo "$pass"
    done
    echo "write_kt $user.keytab"
} | ktutil

Другие вопросы по теме