Создание SPN и Keytab файла: различия между версиями
Нет описания правки |
Нет описания правки |
||
Строка 16: | Строка 16: | ||
Создадим SPN для прокси-сервера squid HTTP/sqserver.domg.testg и привяжем его к пользователю squid.<br> | Создадим SPN для прокси-сервера squid HTTP/sqserver.domg.testg и привяжем его к пользователю squid.<br> | ||
Для этого в командной строке на контроллере домена выполним следующую команду: | Для этого в командной строке на контроллере домена выполним следующую команду: | ||
<pre>setspn -A HTTP/sqserver.domg.testg squid</pre> | <pre>C:\>setspn -A HTTP/sqserver.domg.testg squid | ||
Регистрация ServicePrincipalNames для CN=squid,CN=Users,DC=domg,DC=testg | |||
HTTP/sqserver.domg.testg | |||
Обновленный объект | |||
</pre> | |||
Проверить привязанные SPN у пользователя можно командой: | Проверить привязанные SPN у пользователя можно командой: | ||
<pre>setspn -L squid</pre> | <pre>C:\>setspn -L squid | ||
Зарегистрирован ServicePrincipalNames для CN=squid3,CN=Users,DC=domg,DC=testg: | |||
HTTP/sqserver.domg.testg</pre> | |||
== Генерирование keytab-файла == | |||
Создать keytab-файл можно разными способами.<br> | |||
Рассмотрим некоторые из них.<br> | |||
Способ №1. На контроллере домена Windows 2008 R2:<br> | |||
Необходимо выполнить следующую команду: | |||
<pre>C:\>ktpass -princ HTTP/sqserver.domg.testg@DOMG.TESTG -mapuser squid -pass Pa$$word -ptype KRB5_NT_PRINCIPAL -out C:\squid.keytab | |||
Targeting domain controller: dcd.domg.testg | |||
Using legacy password setting method | |||
Successfully mapped HTTP/sqserver.domg.testg to squid3. | |||
Key created. | |||
Output keytab to C:\squid.keytab: | |||
Keytab version: 0x502 | |||
keysize 70 HTTP/sqserver.domg.testg@DOMG.TESTG ptype 1 (KRB5_NT_PRINCIPAL) vno 6 | |||
etype 0x17 (RC4-HMAC) keylength 16 (0x1a4b1757588cab6298e29e91c06df58d)</pre> | |||
Рассмотрим параметры команды подробнее:<br> | |||
*'''-princ''' - имя принципала содержащее SPN и Kerberos-область (realm) | |||
*'''-mapuser''' - пользователь к которому привязывается SPN | |||
*'''-pass''' - пароль пользователя | |||
*'''-ptype''' - указывает тип принципала (рекомендуется KRB5_NT_PRINCIPAL) | |||
*'''-out''' - путь и имя генерируемого файла | |||
Способ №2. На машине с ALT:<br> |
Версия от 16:17, 14 марта 2017
Введение
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.
Например создадим пользователя squid:
Далее необходимо запретить пользователю смену пароля и не ограничивать срок действия пароля. Последнее важно, так как иначе при истечении срока действия пароля придется не только менять пароль, но и заново генерировать keytab-файлы привязанные к этому пользователю:
В целях безопасности рекомендуется исключить сервисного пользователя из доменных групп.
Создадим SPN для прокси-сервера squid HTTP/sqserver.domg.testg и привяжем его к пользователю squid.
Для этого в командной строке на контроллере домена выполним следующую команду:
C:\>setspn -A HTTP/sqserver.domg.testg squid Регистрация ServicePrincipalNames для CN=squid,CN=Users,DC=domg,DC=testg HTTP/sqserver.domg.testg Обновленный объект
Проверить привязанные SPN у пользователя можно командой:
C:\>setspn -L squid Зарегистрирован ServicePrincipalNames для CN=squid3,CN=Users,DC=domg,DC=testg: HTTP/sqserver.domg.testg
Генерирование keytab-файла
Создать keytab-файл можно разными способами.
Рассмотрим некоторые из них.
Способ №1. На контроллере домена Windows 2008 R2:
Необходимо выполнить следующую команду:
C:\>ktpass -princ HTTP/sqserver.domg.testg@DOMG.TESTG -mapuser squid -pass Pa$$word -ptype KRB5_NT_PRINCIPAL -out C:\squid.keytab Targeting domain controller: dcd.domg.testg Using legacy password setting method Successfully mapped HTTP/sqserver.domg.testg to squid3. Key created. Output keytab to C:\squid.keytab: Keytab version: 0x502 keysize 70 HTTP/sqserver.domg.testg@DOMG.TESTG 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 - путь и имя генерируемого файла
Способ №2. На машине с ALT: