#linux #active-directory #ldap #kerberos #keytab
#linux #active-directory #ldap #kerberos #keytab
Вопрос:
У меня просто простой вопрос. У меня есть Windows Active directory . Я создал из него файл ключевой вкладки с помощью команды :
ktpass /princ host/User1.contoso.com@CONTOSO.COM /mapuser User1 /pass MyPas$w0rd /out machine.keytab /crypto all /ptype KRB5_NT_PRINCIPAL /mapop set
Теперь, насколько я понимаю, этот файл состоит из имени пользователя и его пароля в зашифрованном формате.
Когда я попытаюсь пройти аутентификацию с помощью этого файла keytab, запрос будет обслуживаться только файлом, или он будет дополнительно взаимодействовать с Windows AD для аутентификации.
Причина, по которой я спрашиваю, заключается в том, что я получаю тайм-аут, и я думаю в этом направлении, если он подключается к AD также потому, что AD находится в совершенно другом VPC.
Ответ №1:
Здесь происходит несколько вещей. Люди обычно проходят аутентификацию с использованием реальных сервисов, таких как HTTP, SSH и тому подобное, а не с хостом. ХОСТ — это просто сама машина.
При этом здесь происходит еще несколько вещей. У вас нет имени хоста, определенного внутри вашей keytab — у вас есть имя пользователя там. HOST/ в этом случае должен соответствовать имени хоста DNS, а не имени пользователя (в вашем случае, User1.contoso.com ). В своей простейшей форме Kerberos предназначен для того, чтобы позволить пользовательским принципам (таким людям, как вы, пользователь) проходить аутентификацию в службах сети (которые будут представлены как принципы обслуживания как в KDC, так и в keytab). В более сложных сценариях это сервис для сервиса, но я думаю, что здесь вы говорите о пользователе для сервиса. Я думаю, что в этом случае Kerberos запутывается и время ожидания истекает, потому что «host / User1.contoso.com» либо не существует в KDC, либо у вас нет машины с именем User1.constoso.com в DNS или в обоих. Вы все еще можете сопоставить Kerberos SPN с пользователем 1, но ХОСТ должен соответствовать компьютеру в сети. Вместо host/User1.contoso.com@CONTOSO.COM Я бы заменил User1 фактическим именем компьютера, на котором Kerberos будет проходить аутентификацию. Например, если компьютер называется Server1, заново создайте keytab, как показано ниже. Пожалуйста, также добавьте имя области Kerberos в service principle при создании keytab; вы не указали это в приведенном вами примере. Наконец, службы Kerberos должны быть написаны в верхнем регистре, поэтому используйте HOST вместо host. Чтобы исправить это:
-
Удалите SPN из User1 следующим образом:
setspn -D host/User1.contoso.com@CONTOSO.COM Пользователь1
-
Заново создайте вкладку ключей, как показано ниже (я внес три изменения), затем повторите попытку:
ktpass /princ HOST/server1.contoso.com@CONTOSO.COM /mapuser user1@CONTOSO.COM /передайте MyPas$ w0rd / из машины.keytab /crypto all /ptype KRB5_NT_PRINCIPAL /набор mapop
ПРИМЕЧАНИЕ: keytab никогда не взаимодействует с AD. Что он делает, так это расшифровывает входящий запрос службы Kerberos, чтобы сообщить, кто является пользователем. У меня есть статья о механизме этого здесь: https://social.technet.microsoft.com/wiki/contents/articles/36470.active-directory-using-kerberos-keytabs-to-integrate-non-windows-systems.aspx .
Комментарии:
1. Привет @T-heron на самом деле файл keytab сгенерирован и предоставлен кем-то другим с помощью указанной команды, теперь я пытаюсь загрузить его, подключиться и выяснить, является ли его связь с самим AD или просто файл keytab самодостаточным сам по себе.
2. Keytab никогда не взаимодействует с AD. Что он делает, так это расшифровывает входящий запрос службы Kerberos, чтобы сообщить, кто является пользователем. У меня есть статья о механизме этого здесь: social.technet.microsoft.com/wiki/contents/articles /… . Отредактировал мой ответ с помощью этой информации.
3. Сработало ли решение, которое я предоставил? Если нет, то какое сообщение об ошибке вы видите?