Создание SPN и Keytab файла: различия между версиями
(Новая страница: «{{Stub}} == Введение == '''SPN (Service Principal Name)''' - уникальный идентификатор экземпляра сервиса. SPN исп...») |
м (→DC FreeIPA) |
||
(не показана 31 промежуточная версия 4 участников) | |||
Строка 1: | Строка 1: | ||
== Введение == | == Введение == | ||
'''SPN (Service Principal Name)''' | Многие сервисы ([[Apache2/AD-auth|apache]], [[Nginx/AD-auth|nginx]] и др.) могут использовать keytab-файлы для Kerberos аутентификации в домене без ввода пароля. SSO-аутентификация избавляет доменного пользователя от повторных запросов на прохождение аутентификации. Пользователь вводит доменный логин/пароль всего один раз — при логоне в операционную систему. | ||
'''SPN (Service Principal Name)''' — уникальный идентификатор экземпляра сервиса. SPN используется аутентификацией Kerberos для сопоставления экземпляра сервиса с учетной записью сервиса (service logon account). Это позволяет клиентским приложением аутентифицироваться в роли сервиса даже не зная имени пользователя.<br> | |||
До того как аутентификация Kerberos сможет использовать SPN для аутентификации сервиса, SPN должен быть привязан к учетной записи, которая будет использоваться для входа. SPN может быть привязан только к одной учетной записи. Если учетная запись, привязанная к SPN, изменяется, то необходимо заново выполнить привязку.<br> | До того как аутентификация Kerberos сможет использовать SPN для аутентификации сервиса, SPN должен быть привязан к учетной записи, которая будет использоваться для входа. SPN может быть привязан только к одной учетной записи. Если учетная запись, привязанная к SPN, изменяется, то необходимо заново выполнить привязку.<br> | ||
Когда клиент хочет воспользоваться сервисом, он находит экземпляр сервиса и составляет SPN для этого экземпляра, далее использует этот SPN для аутентификации.<br> | Когда клиент хочет воспользоваться сервисом, он находит экземпляр сервиса и составляет SPN для этого экземпляра, далее использует этот SPN для аутентификации.<br> | ||
'''Keytab-файл''' | '''Keytab-файл''' — это файл содержащий пары Kerberos принципалов и их ключей (полученных с использованием Kerberos пароля). Эти файлы используются для аутентификации в системах, использующих Kerberos, без ввода пароля. Если пароль принципала изменится, то keytab-файл необходимо будет сгенерировать заново.<br> | ||
{{Attention|Каждый кто имеет разрешения на чтения keytab-файла может воспользоваться любыми ключами в нем. Чтобы предотвратить нежелательное использование, ограничивайте права доступа при создании keytab-файла}} | {{Attention|Каждый кто имеет разрешения на чтения keytab-файла может воспользоваться любыми ключами в нем. Чтобы предотвратить нежелательное использование, ограничивайте права доступа при создании keytab-файла}} | ||
== Создание SPN == | |||
=== DC Windows === | |||
Для начала необходимо создать на контроллере домена (DC) пользователя к которому впоследствии будет привязан SPN.<br> | |||
Например, создадим пользователя webauth: | |||
[[Файл:Win_user_create.png|DC Windows. Создание пользователя]] | |||
Далее необходимо запретить пользователю смену пароля и не ограничивать срок действия пароля. Последнее важно, так как иначе при истечении срока действия пароля придется не только менять пароль, но и заново генерировать keytab-файлы привязанные к этому пользователю: | |||
[[Файл:Win_user_options.png|DC Windows. Создание пользователя - пароль]] | |||
В целях безопасности рекомендуется исключить сервисного пользователя из доменных групп. | |||
Создать SPN для веб-сервера HTTP/web.win.alt и привязать его к пользователю webauth (этот шаг делать отдельно не обязательно, т.к. его автоматически выполняет утилита {{cmd|ktpass}} при создании keytab-файла).<br> | |||
Для этого в командной строке на контроллере домена выполнить следующую команду: | |||
<syntaxhighlight lang="bash">C:\>setspn -A HTTP/web.win.alt webauth | |||
Checking domain DC=win,DC=alt | |||
Registered ServicePrincipalNames for CN=webauth,CN=Users,DC=win,DC=alt | |||
HTTP/web.win.alt | |||
Updated object | |||
</syntaxhighlight> | |||
Вывести список SPN записей, привязанных к пользователю: | |||
<syntaxhighlight lang="bash">C:\>setspn -L webauth | |||
Registered ServicePrincipalNames for CN=webauth,CN=Users,DC=win,DC=alt: | |||
HTTP/web.win.alt</syntaxhighlight> | |||
=== Samba DC === | |||
Создать пользователя, с которым будут связаны создаваемые SPN: | |||
<syntaxhighlight lang="bash"># samba-tool user create --random-password webauth | |||
# samba-tool user setexpiry webauth --noexpiry</syntaxhighlight> | |||
Команда привязки SPN к пользователю (возможно несколько раз для разных сервисов): | |||
<syntaxhighlight lang="bash"># samba-tool spn add <service-name>/<fdqn@KerberosRealm> <someuser></syntaxhighlight> | |||
Привязать к пользователю SPN: | |||
<syntaxhighlight lang="bash"># samba-tool spn add HTTP/web.test.alt webauth</syntaxhighlight> | |||
=== DC FreeIPA === | |||
Для добавления SPN необходимо в веб-интерфейсе сервера FreeIPA выбрать «Идентификация»→«Службы» и нажать кнопку «Добавить» «Identity»→«Services»→«Add»: | |||
[[Файл:Add SPN FreeIPA 01.png|FreeIPA. Добавление SPN]] | |||
В открывшемся окне необходимо выбрать имя сервиса и имя узла, к которому будет привязан сервис: | |||
[[Файл:Add SPN FreeIPA 02.png|FreeIPA. Добавление SPN]] | |||
Чтобы добавить SPN с коротким именем узла (например, это необходимо для samba), следует выполнить команду: | |||
<syntaxhighlight lang="bash"># ipa service-add cifs/samba --force</syntaxhighlight> | |||
== Генерирование keytab-файла == | |||
Создать keytab-файл можно разными способами.<br> | |||
Рассмотрим некоторые из них.<br> | |||
=== На контроллере домена Windows === | |||
Чтобы создать keytab-файл необходимо выполнить следующую команду: | |||
<syntaxhighlight lang="bash">C:\>ktpass -princ HTTP/web.wim.alt@WIN.ALT -mapuser webauth -pass Pa$$word -ptype KRB5_NT_PRINCIPAL -out C:\web.keytab | |||
Targeting domain controller: dc1.win.alt | |||
Using legacy password setting method | |||
Successfully mapped HTTP/web.wim.alt to webauth. | |||
Key created. | |||
Output keytab to C:\web.keytab: | |||
Keytab version: 0x502 | |||
keysize 59 HTTP/web.wim.alt@WIN.ALT ptype 1 (KRB5_NT_PRINCIPAL) vno 6 | |||
etype 0x17 (RC4-HMAC) keylength 16 (0x1a4b1757588cab6298e29e91c06df58d)</syntaxhighlight> | |||
Где: | |||
*'''-princ''' — имя принципала содержащее SPN и Kerberos-область (realm); | |||
*'''-mapuser''' — пользователь к которому привязывается SPN; | |||
*'''-pass''' — пароль пользователя; | |||
*'''-ptype''' — указывает тип принципала (рекомендуется KRB5_NT_PRINCIPAL); | |||
*'''-out''' — путь и имя генерируемого файла. | |||
В результате выполнения данной команды будет создан keytab файл {{path|C:\web.keytab}} для SPN записи сервиса HTTP/web.win.alt. При этом SPN запись привязывается к учетной записи webauth с указанным паролем. | |||
После привязки SPN к учетной записи, «Имя входа пользователя» («User logon name») в свойствах пользователя станет равен SPN: | |||
[[Файл:Win_user_logon.png|DC Windows. Свойства пользователя]] | |||
В одном keytab-файле могут хранится ключи нескольких SPN. Дополнительные имена SPN и ключи добавляются в файл keytab с помощью отдельных параметров утилиты {{cmd|ktpass}} (-in, -setupn, -setpass). | |||
=== На машине с ALT === | |||
==== С помощью ktutil ==== | |||
Этот способ работает если SPN предварительно были созданы и привязаны (например, см.[[Создание_SPN_и_Keytab_файла#Samba_DC]]). | |||
Установить пакет {{pkg|krb5-kadmin}}: | |||
<syntaxhighlight lang="bash"># apt-get install krb5-kadmin</syntaxhighlight> | |||
Запустить {{cmd|ktutil}} и создать keytab-файл: | |||
<syntaxhighlight lang="bash"># ktutil | |||
ktutil: addent -password -p HTTP/web.test.alt@TEST.ALT -k 6 -e RC4-HMAC | |||
Password for HTTP/web.test.alt@TEST.ALT: | |||
ktutil: wkt web.keytab | |||
ktutil: q</syntaxhighlight> | |||
==== С помощью Samba ==== | |||
Для создания keytab-файла с помощью samba, необходима работающая kerberos-аутентификация. | |||
При использовании этого метода нет необходимости генерировать и привязывать SPN на контроллере домена. | |||
Привести файл настроек {{path|/etc/samba/smb.conf}} к следующему виду: | |||
<syntaxhighlight lang="ini">realm = TEST.ALT | |||
workgroup = TEST | |||
security = ads | |||
dedicated keytab file = /etc/krb5.keytab | |||
kerberos method = dedicated keytab</syntaxhighlight> | |||
После ввода машины в домен в домене будет создан аккаунт компьютера к которому можно привязать SPN. | |||
Создать keytab-файл для компьютера: | |||
<syntaxhighlight lang="bash"># net ads keytab create -UAdministrator | |||
Password for [TEST\Administrator]:</syntaxhighlight> | |||
Добавить в keytab-файл принципал сервиса "HTTP": | |||
<syntaxhighlight lang="bash"># net ads keytab add HTTP -U Administrator | |||
Processing principals to add... | |||
Password for [TEST\Administrator]:</syntaxhighlight> | |||
Далее можно поменять права на keytab и отредактировать его утилитой kutil. | |||
==== С помощью Samba DC ==== | |||
Этот способ работает если SPN предварительно были созданы и привязаны (например, см.[[Создание_SPN_и_Keytab_файла#Samba_DC]]). | |||
Все действия выполняются на машине с домен-контроллером. | |||
Команда создания keytab: | |||
<syntaxhighlight lang="bash"># samba-tool domain exportkeytab /tmp/keytab --principal=<service-name>/<fdqn></syntaxhighlight> | |||
Эту команду можно выполнить несколько раз для всех SPN, которые нужно поместить в keytab. | |||
Например, создать keytab: | |||
<syntaxhighlight lang="bash"># samba-tool domain exportkeytab /tmp/http.keytab --principal=HTTP/web.test.alt | |||
Export one principal to /tmp/http.keytab</syntaxhighlight> | |||
Проверка: | |||
<syntaxhighlight lang="bash"># klist -ke /tmp/http.keytab | |||
Keytab name: FILE:/tmp/http.keytab | |||
KVNO Principal | |||
---- -------------------------------------------------------------------------- | |||
2 HTTP/web.test.alt@TEST.ALT (DEPRECATED:arcfour-hmac) | |||
</syntaxhighlight> | |||
https://wiki.samba.org/index.php/Generating_Keytabs | |||
==== С помощью FreeIPA Client ==== | |||
Для этого способа необходимо ввести машину в домен FreeIPA [[https://www.altlinux.org/FreeIPA/Клиент ]] | |||
Для генерации keytab-файла используется команда: | |||
<syntaxhighlight lang="bash"># ipa-getkeytab -s <FreeIPA_сервер> -p <SPN> -k <keytab-файл> | |||
</syntaxhighlight> | |||
Пример генерации keytab-файла (предварительно необходимо выполнить аутентификацию в качестве учетной записи администратора домена) | |||
<syntaxhighlight lang="bash"># kinit admin | |||
Password for admin@EXAMPLE.TEST: | |||
# ipa-getkeytab -s ipa.example.test -p HTTP/web.example.test -k /tmp/http.keytab | |||
Таблица ключей успешно получена и сохранена в: /tmp/http.keytab</syntaxhighlight> | |||
Содержимое файла keytab можно просмотреть с помощью команды {{cmd|klist}}: | |||
<syntaxhighlight lang="bash"># klist -ekt /tmp/http.keytab | |||
Keytab name: FILE:/tmp/http.keytab | |||
KVNO Timestamp Principal | |||
---- ------------------- ------------------------------------------------------ | |||
1 02.05.2023 14:38:18 HTTP/web.example.test@EXAMPLE.TEST (aes256-cts-hmac-sha384-192) | |||
1 02.05.2023 14:38:18 HTTP/web.example.test@EXAMPLE.TEST (aes128-cts-hmac-sha256-128) | |||
1 02.05.2023 14:38:18 HTTP/web.example.test@EXAMPLE.TEST (aes256-cts-hmac-sha1-96) | |||
1 02.05.2023 14:38:18 HTTP/web.example.test@EXAMPLE.TEST (aes128-cts-hmac-sha1-96) | |||
</syntaxhighlight> | |||
== Проверка keytab-файла == | |||
Для проверки keytab-файла необходима настроенная Kerberos-аутентификация.<br> | |||
Это можно проверить командой: | |||
<syntaxhighlight lang="bash"># kinit administrator@TEST.ALT</syntaxhighlight> | |||
Она должна запрашивать пароль и получать билет: | |||
<syntaxhighlight lang="bash"># klist | |||
Ticket cache: KEYRING:persistent:0:0 | |||
Default principal: administrator@TEST.ALT | |||
Valid starting Expires Service principal | |||
03.05.2023 10:11:20 03.05.2023 20:11:20 krbtgt/TEST.ALT@TEST.ALT | |||
renew until 10.05.2023 10:11:15</syntaxhighlight> | |||
Попробуем зарегистрироваться с помощью keytab-файла: | |||
<syntaxhighlight lang="bash"># kinit -5 -V -k -t /tmp/web.keytab HTTP/test.alt | |||
Using default cache: /tmp/krb5cc_0 | |||
Using principal: HTTP/test.alt@TEST.ALT | |||
Using keytab: /tmp/web.keytab | |||
Authenticated to Kerberos v5</syntaxhighlight> | |||
{{note|Если при проверке авторизации возникает ошибка: | |||
kinit: Client not found in Kerberos database while getting initial credentials | |||
Необходимо, например в [[ADMC]], изменить для пользователя значение параметра userPrincipalName на значение servicePrincipalName + REALM (в данном примере нужно поменять webauth на HTTP/test.alt@TEST.ALT). | |||
Это происходит потому что {{cmd|samba-tool}}, в отличии от привязки SPN к учетной записи в Windows, не меняет userPrincipalName (Имя входа пользователя) в свойствах пользователя на SPN. | |||
https://serverfault.com/questions/606189/keytab-auth-against-samba-4-dc-client-not-found-in-kerberos-database-while-gett | |||
}} | |||
Проверить версию ключей на сервере можно, предварительно получив билет, с помощью команды: | |||
<syntaxhighlight lang="bash"># kvno HTTP/test.alt@TEST.ALT | |||
HTTP/test.alt@TEST.ALT: kvno = 2</syntaxhighlight> | |||
Проверить версию kvno и список ключей в keytab-файле можно с помощью команды (по умолчанию для файла {{path|/etc/krb5.keytab}}): | |||
<syntaxhighlight lang="bash"># klist -ket</syntaxhighlight> | |||
или | |||
<syntaxhighlight lang="bash"># klist -ket /etc/nginx/web.keytab | |||
Keytab name: FILE:/etc/nginx/web.keytab | |||
KVNO Timestamp Principal | |||
---- ------------------- ------------------------------------------------------ | |||
2 30.04.2023 12:41:07 HTTP/dc.test.alt@TEST.ALT (DEPRECATED:arcfour-hmac) | |||
2 30.04.2023 13:34:31 HTTP/test.alt@TEST.ALT (DEPRECATED:arcfour-hmac)</syntaxhighlight> | |||
После всех проверок желательно удалить полученные билеты командой: | |||
<syntaxhighlight lang="bash"># kdestroy</syntaxhighlight> | |||
[[Категория:Active Directory]] | |||
[[Категория:FreeIPA]] |
Текущая версия от 18:30, 12 ноября 2023
Введение
Многие сервисы (apache, nginx и др.) могут использовать keytab-файлы для Kerberos аутентификации в домене без ввода пароля. SSO-аутентификация избавляет доменного пользователя от повторных запросов на прохождение аутентификации. Пользователь вводит доменный логин/пароль всего один раз — при логоне в операционную систему.
SPN (Service Principal Name) — уникальный идентификатор экземпляра сервиса. SPN используется аутентификацией Kerberos для сопоставления экземпляра сервиса с учетной записью сервиса (service logon account). Это позволяет клиентским приложением аутентифицироваться в роли сервиса даже не зная имени пользователя.
До того как аутентификация Kerberos сможет использовать SPN для аутентификации сервиса, SPN должен быть привязан к учетной записи, которая будет использоваться для входа. SPN может быть привязан только к одной учетной записи. Если учетная запись, привязанная к SPN, изменяется, то необходимо заново выполнить привязку.
Когда клиент хочет воспользоваться сервисом, он находит экземпляр сервиса и составляет SPN для этого экземпляра, далее использует этот SPN для аутентификации.
Keytab-файл — это файл содержащий пары Kerberos принципалов и их ключей (полученных с использованием Kerberos пароля). Эти файлы используются для аутентификации в системах, использующих Kerberos, без ввода пароля. Если пароль принципала изменится, то keytab-файл необходимо будет сгенерировать заново.
Создание SPN
DC Windows
Для начала необходимо создать на контроллере домена (DC) пользователя к которому впоследствии будет привязан SPN.
Например, создадим пользователя webauth:
Далее необходимо запретить пользователю смену пароля и не ограничивать срок действия пароля. Последнее важно, так как иначе при истечении срока действия пароля придется не только менять пароль, но и заново генерировать keytab-файлы привязанные к этому пользователю:
В целях безопасности рекомендуется исключить сервисного пользователя из доменных групп.
Создать SPN для веб-сервера HTTP/web.win.alt и привязать его к пользователю webauth (этот шаг делать отдельно не обязательно, т.к. его автоматически выполняет утилита ktpass при создании keytab-файла).
Для этого в командной строке на контроллере домена выполнить следующую команду:
C:\>setspn -A HTTP/web.win.alt webauth
Checking domain DC=win,DC=alt
Registered ServicePrincipalNames for CN=webauth,CN=Users,DC=win,DC=alt
HTTP/web.win.alt
Updated object
Вывести список SPN записей, привязанных к пользователю:
C:\>setspn -L webauth
Registered ServicePrincipalNames for CN=webauth,CN=Users,DC=win,DC=alt:
HTTP/web.win.alt
Samba DC
Создать пользователя, с которым будут связаны создаваемые SPN:
# samba-tool user create --random-password webauth
# samba-tool user setexpiry webauth --noexpiry
Команда привязки SPN к пользователю (возможно несколько раз для разных сервисов):
# samba-tool spn add <service-name>/<fdqn@KerberosRealm> <someuser>
Привязать к пользователю SPN:
# samba-tool spn add HTTP/web.test.alt webauth
DC FreeIPA
Для добавления SPN необходимо в веб-интерфейсе сервера FreeIPA выбрать «Идентификация»→«Службы» и нажать кнопку «Добавить» «Identity»→«Services»→«Add»:
В открывшемся окне необходимо выбрать имя сервиса и имя узла, к которому будет привязан сервис:
Чтобы добавить SPN с коротким именем узла (например, это необходимо для samba), следует выполнить команду:
# ipa service-add cifs/samba --force
Генерирование keytab-файла
Создать keytab-файл можно разными способами.
Рассмотрим некоторые из них.
На контроллере домена Windows
Чтобы создать keytab-файл необходимо выполнить следующую команду:
C:\>ktpass -princ HTTP/web.wim.alt@WIN.ALT -mapuser webauth -pass Pa$$word -ptype KRB5_NT_PRINCIPAL -out C:\web.keytab
Targeting domain controller: dc1.win.alt
Using legacy password setting method
Successfully mapped HTTP/web.wim.alt to webauth.
Key created.
Output keytab to C:\web.keytab:
Keytab version: 0x502
keysize 59 HTTP/web.wim.alt@WIN.ALT ptype 1 (KRB5_NT_PRINCIPAL) vno 6
etype 0x17 (RC4-HMAC) keylength 16 (0x1a4b1757588cab6298e29e91c06df58d)
Где:
- -princ — имя принципала содержащее SPN и Kerberos-область (realm);
- -mapuser — пользователь к которому привязывается SPN;
- -pass — пароль пользователя;
- -ptype — указывает тип принципала (рекомендуется KRB5_NT_PRINCIPAL);
- -out — путь и имя генерируемого файла.
В результате выполнения данной команды будет создан keytab файл C:\web.keytab для SPN записи сервиса HTTP/web.win.alt. При этом SPN запись привязывается к учетной записи webauth с указанным паролем.
После привязки SPN к учетной записи, «Имя входа пользователя» («User logon name») в свойствах пользователя станет равен SPN:
В одном keytab-файле могут хранится ключи нескольких SPN. Дополнительные имена SPN и ключи добавляются в файл keytab с помощью отдельных параметров утилиты ktpass (-in, -setupn, -setpass).
На машине с ALT
С помощью ktutil
Этот способ работает если SPN предварительно были созданы и привязаны (например, см.Создание_SPN_и_Keytab_файла#Samba_DC).
Установить пакет krb5-kadmin:
# apt-get install krb5-kadmin
Запустить ktutil и создать keytab-файл:
# ktutil
ktutil: addent -password -p HTTP/web.test.alt@TEST.ALT -k 6 -e RC4-HMAC
Password for HTTP/web.test.alt@TEST.ALT:
ktutil: wkt web.keytab
ktutil: q
С помощью Samba
Для создания keytab-файла с помощью samba, необходима работающая kerberos-аутентификация.
При использовании этого метода нет необходимости генерировать и привязывать SPN на контроллере домена.
Привести файл настроек /etc/samba/smb.conf к следующему виду:
realm = TEST.ALT
workgroup = TEST
security = ads
dedicated keytab file = /etc/krb5.keytab
kerberos method = dedicated keytab
После ввода машины в домен в домене будет создан аккаунт компьютера к которому можно привязать SPN.
Создать keytab-файл для компьютера:
# net ads keytab create -UAdministrator
Password for [TEST\Administrator]:
Добавить в keytab-файл принципал сервиса "HTTP":
# net ads keytab add HTTP -U Administrator
Processing principals to add...
Password for [TEST\Administrator]:
Далее можно поменять права на keytab и отредактировать его утилитой kutil.
С помощью Samba DC
Этот способ работает если SPN предварительно были созданы и привязаны (например, см.Создание_SPN_и_Keytab_файла#Samba_DC).
Все действия выполняются на машине с домен-контроллером.
Команда создания keytab:
# samba-tool domain exportkeytab /tmp/keytab --principal=<service-name>/<fdqn>
Эту команду можно выполнить несколько раз для всех SPN, которые нужно поместить в keytab.
Например, создать keytab:
# samba-tool domain exportkeytab /tmp/http.keytab --principal=HTTP/web.test.alt
Export one principal to /tmp/http.keytab
Проверка:
# klist -ke /tmp/http.keytab
Keytab name: FILE:/tmp/http.keytab
KVNO Principal
---- --------------------------------------------------------------------------
2 HTTP/web.test.alt@TEST.ALT (DEPRECATED:arcfour-hmac)
https://wiki.samba.org/index.php/Generating_Keytabs
С помощью FreeIPA Client
Для этого способа необходимо ввести машину в домен FreeIPA [[1]]
Для генерации keytab-файла используется команда:
# ipa-getkeytab -s <FreeIPA_сервер> -p <SPN> -k <keytab-файл>
Пример генерации keytab-файла (предварительно необходимо выполнить аутентификацию в качестве учетной записи администратора домена)
# kinit admin
Password for admin@EXAMPLE.TEST:
# ipa-getkeytab -s ipa.example.test -p HTTP/web.example.test -k /tmp/http.keytab
Таблица ключей успешно получена и сохранена в: /tmp/http.keytab
Содержимое файла keytab можно просмотреть с помощью команды klist:
# klist -ekt /tmp/http.keytab
Keytab name: FILE:/tmp/http.keytab
KVNO Timestamp Principal
---- ------------------- ------------------------------------------------------
1 02.05.2023 14:38:18 HTTP/web.example.test@EXAMPLE.TEST (aes256-cts-hmac-sha384-192)
1 02.05.2023 14:38:18 HTTP/web.example.test@EXAMPLE.TEST (aes128-cts-hmac-sha256-128)
1 02.05.2023 14:38:18 HTTP/web.example.test@EXAMPLE.TEST (aes256-cts-hmac-sha1-96)
1 02.05.2023 14:38:18 HTTP/web.example.test@EXAMPLE.TEST (aes128-cts-hmac-sha1-96)
Проверка keytab-файла
Для проверки keytab-файла необходима настроенная Kerberos-аутентификация.
Это можно проверить командой:
# kinit administrator@TEST.ALT
Она должна запрашивать пароль и получать билет:
# klist
Ticket cache: KEYRING:persistent:0:0
Default principal: administrator@TEST.ALT
Valid starting Expires Service principal
03.05.2023 10:11:20 03.05.2023 20:11:20 krbtgt/TEST.ALT@TEST.ALT
renew until 10.05.2023 10:11:15
Попробуем зарегистрироваться с помощью keytab-файла:
# kinit -5 -V -k -t /tmp/web.keytab HTTP/test.alt
Using default cache: /tmp/krb5cc_0
Using principal: HTTP/test.alt@TEST.ALT
Using keytab: /tmp/web.keytab
Authenticated to Kerberos v5
kinit: Client not found in Kerberos database while getting initial credentials
Необходимо, например в ADMC, изменить для пользователя значение параметра userPrincipalName на значение servicePrincipalName + REALM (в данном примере нужно поменять webauth на HTTP/test.alt@TEST.ALT).
Это происходит потому что samba-tool, в отличии от привязки SPN к учетной записи в Windows, не меняет userPrincipalName (Имя входа пользователя) в свойствах пользователя на SPN.
Проверить версию ключей на сервере можно, предварительно получив билет, с помощью команды:
# kvno HTTP/test.alt@TEST.ALT
HTTP/test.alt@TEST.ALT: kvno = 2
Проверить версию kvno и список ключей в keytab-файле можно с помощью команды (по умолчанию для файла /etc/krb5.keytab):
# klist -ket
или
# klist -ket /etc/nginx/web.keytab
Keytab name: FILE:/etc/nginx/web.keytab
KVNO Timestamp Principal
---- ------------------- ------------------------------------------------------
2 30.04.2023 12:41:07 HTTP/dc.test.alt@TEST.ALT (DEPRECATED:arcfour-hmac)
2 30.04.2023 13:34:31 HTTP/test.alt@TEST.ALT (DEPRECATED:arcfour-hmac)
После всех проверок желательно удалить полученные билеты командой:
# kdestroy