Как создать keytab файл linux

Настройка Kerberos-аутентификации для Linux

Настройки kerberos-аутентификации под Linux отличаются в зависимости от дистрибутива. В таблице представлены пакеты, которые необходимо установить для настройки аутентификации.

RHEL/ CentOS/ Fedora Debian/ Ubuntu/ Astra Alt
krb5-workstation
krb5-libs
krb5-pkinit
pam_krb5
sssd-krb5
sssd-krb5-common
gssntlmssp
krb5-user
krb5-config
krb5-pkinit
sssd-krb5
sssd-krb5-common
gss-ntlmssp
krb5-kinit
pam_krb5
sssd-krb5
sssd-krb5-common
gssntlmssp

Настройка подключения к серверу Kerberos

Чтобы настроить подключение к серверу Kerberos, внесите изменения в файл «/etc/krb5.conf»:

    В секции [libdefaults] укажите:

default_ccache_name = FILE:/home/%/krb5cc 
default_tgs_enctypes = rc4-hmac 
default_tkt_enctypes = rc4-hmac 
permitted_enctypes = rc4-hmac 
default_realm = название_домена_в_котором_находится_сервер_Kerberos_в_верхнем_регистре 
  1. Если на сервере Kerberos включено другое шифрование, тогда его нужно указать вместо rc4-hmac.
  2. Если это шифрование относится к стойким, то параметр allow_weak_crypto можно поставить в false.
  • имя_домена = имя_домена_в_верхнем_регистре
  • имя_домена_с_сточкой_впереди = имя_домена_в_верхнем_регистре
  • [domain_realm]
  • v2016.testinfomaximum.com = V2016.TESTINFOMAXIMUM.COM
  • .v2016.testinfomaximum.com = V2016.TESTINFOMAXIMUM.COM
kinit пользователь_под_которым_будем_входить_в_систему@домен_в_верхнем_регистре 

После ввода пароля создается билет Kerberos, по которому можно будет входить в систему. Билет имеет время жизни, которое можно установить в «krb5.conf» в секции [libdefaults] (например, ticket_lifetime = 24h) или при вызове kinit (добавив перед именем пользователя ключ -l от времени жизни). После истечения времени жизни билет необходимо пересоздавать командой kinit.

При использовании стойких шифров сервер Kerberos (KDC) добавляет к паролю дополнительные символы («соль»). В качестве «соли» Kerberos использует имя домена, объединённое с именем сервера. Клиент Kerberos под Linux в качестве «соли» по умолчанию использует имя домена, объединённое с именем пользователя, под которым необходимо залогиниться. Таким образом, при использовании стойкого шифрования не удаётся наладить связь между KDC и клиентом, так как пароли оказываются разными. Чтобы избежать данной проблемы, мы советуем задать в клиенте Kerberos шифрование rca4-hmac.

Настройки браузеров

Firefox

Чтобы настроить браузер Firefox:

  1. На вкладке about:config найдите все параметры со словом negotiate.
  2. Установите в true:
network.negotiate-auth.allow-non-fqdn 
network.negotiate-auth.allow-proxies 
network.negotiate-auth.using-native-gsslib 

Active Directory в браузере FireFox не работает со встроенной библиотекой обработки GSS-API. Инструкция по решению данной проблемы представлена на странице Настройка Kerberos-аутентификации для Firefox.

Chrome/Chromium

Чтобы настроить браузеры Chrome/Chromium, в директории /etc/chromium/policies/managed (или /etc/chromium-browser/policies/managed) создайте json-файл с произвольным именем (например, kerberos.json):

Этот файл настроен на принятие любых адресов для использования Kerberos. Можно заменить «*» на конкретное доменное имя сервера.

Вход в систему

После создания билета и настройки браузера вход в систему осуществляется через нажатие кнопки Войти с помощью Active Directory. При этом ни имя, ни пароль дополнительно не запрашиваются (запрос пароля происходит в процессе создания билета Kerberos).

Источник

Создаем keytab-файл для Kerberos аутентификации в Active Directory

date

31.08.2020

user

itpro

directory

Active Directory, PowerShell, Windows Server 2016

comments

комментариев 5

Многие сервисы Linux (apache, nginx и др.) могут использовать keytab файлы для Kerberos аутентификации в Active Directory без ввода пароля. В keytab файле хранятся имена принципалов Kerberos и соответствующие им зашифрованные ключи (ключи получаются из паролей Kerberos). В этой статье мы покажем, как создать keytab файл для SPN связанной учетной записи Active Directory с помощью утилит ktpass.

Чаще всего для службы, которая требует использование keytab файла создается отдельная учетная запись пользователя ActiveDirectory (но можно использовать и объект компьютера), затем к ней привязывается имя сервиса (ServicePrincipalNameSPN). SPN используется аутентификацией Kerberos для сопоставления экземпляра сервиса с учетной записью в AD (благодаря этому приложения могут аутентифицироваться в качестве сервиса даже не зная имени пользователя).

Сначала создайте сервисную учетную запись в AD и задайте ей известный пароль. Можно создать учетную запись из графической консоли ADUC или с помощью PowerShell командлета New-ADUser (из модуля PowerShell для Active Directory):

New-ADUser -Name «web» -GivenName «nginx web app» -SamAccountName «web» -UserPrincipalName «[email protected]» -Path «OU=Services,OU=SPB,DC=test,DC=com» –AccountPassword (ConvertTo-SecureString “Bergam0ttapoK” -AsPlainText -force) -Enabled $true

Включите для сервисной учетной записи опции “User cannot change password” и “Password never expires“ через графическую консоль или PowerShell:

Get-ADUser web | Set-ADUser -PasswordNeverExpires:$True -CannotChangePassword:$true

атрибуты пользователя ad

Следующий шаг – привязка имени сервиса (SPN) к учетной записи пользователя. Этот шаг делать отдельно не обязательно, т.к. его автоматически выполняет утилита ktpass при создании keytab файла (я оставлю этот шаг здесь для общего понимания процесса).

Привяжите следующую SPN запись к учетной записи web:

Выведите список SPN записей, привязанных к пользователю:

setspn - вручную привязать SPN запись к пользователю

Чтобы создать keytab файл используется следующая команда:

ktpass -princ HTTP/[email protected] -mapuser web -crypto ALL -ptype KRB5_NT_PRINCIPAL -pass Bergam0ttapoK -target dc01.test.com -out c:\ps\web_host.keytab

ktpass создать keytab файл

Successfully mapped HTTP/www.test.com to web. Password successfully set! Key created. Key created. Key created. Key created. Key created. Output keytab to c:\ps\web_host.keytab: Keytab version: 0x502 keysize 53 HTTP/[email protected] ptype 1 (KRB5_NT_PRINCIPAL) vno 4 etype 0x1 (DES-CBC-CRC) keylength 8 (0x73f868856e046449) keysize 53 HTTP/[email protected] ptype 1 (KRB5_NT_PRINCIPAL) vno 4 etype 0x3 (DES-CBC-MD5) keylength 8 (0x73f868856e046449) keysize 61 HTTP/[email protected] ptype 1 (KRB5_NT_PRINCIPAL) vno 4 etype 0x17 (RC4-HMAC) keylength 16 (0x9365b81e20c6137186d956c06ade2e77) keysize 77 HTTP/[email protected] ptype 1 (KRB5_NT_PRINCIPAL) vno 4 etype 0x12 (AES256-SHA1) keylength 32 (0x16b6c95e8047e7e70b1dc3cd502353df 5eeab2c24d4097c41165b0ca65b9b31f) keysize 61 HTTP/[email protected] ptype 1 (KRB5_NT_PRINCIPAL) vno 4 etype 0x11 (AES128-SHA1) keylength 16 (0x72c8b1cde771e59b6f1bc6501d614e32)

Данная команда создала keytab файл (c:\ps\web_host.keytab) для SPN записи сервиса HTTP/[email protected]. При этом SPN запись привязывается к учетной записи web с указанным паролем.

Проверьте, что для SPN записи службы была создана успешно (если вы не создавали ее вручную):

setspn -Q */[email protected]
Видно, что SPN запись найдена (Existing SPN found!). Она привязана к учетной записи web,

setspn -Q Existing SPN found

В Windows нет встроенных средств для просмотра содержимого keytab файла. Но если, у вас а компьютере установлена версия Java JRE, вы можете воспользоваться утилитой klist.exe, которая входит в комплект java.

cd «c:\Program Files\Java\jre1.8.0_181\bin»
klist.exe -K -e -t -k c:\PS\web_host.keytab

Key tab: c:\PS\web_host.keytab, 5 entries found.

klist.exe вывод содержимого keytab файла spn записией в windows

Посмотрим на содержимое key-tab файла. Здесь хранятся имена SPN, ключи, временные метки, алгоритм шифрование и версия ключа (KVNO — key version number).

При создании keytab файла утилита ktpass увеличивает значение атрибута msDS-KeyVersionNumber учетной записи (можно посмотреть в редакторе атрибутов AD) и использует это значение в качестве номера KVNO в keytab таблице.

атрибут msDS-KeyVersionNumbe

При смене пароля учетной записи значение этого атрибута увеличивается на единицу, при этом все keytab записи с предыдущим номером KVNO становятся невалидными (даже если старый и новый пароли совпадают). Если пароль пользователя в AD изменится, то keytab-файл придется сгенерировать заново.

В одном keytab файле могут хранится ключи нескольких SPN. Дополнительные имена SPN и ключи добавляются в keytab файл с помощью отдельных параметров утилиты ktpass (-in, -setupn, -setpass).

Дальнейшее использование полученного keytab файла зависит от конкретного сервиса, где он применяется. Например, здесь можно посмотреть особенности использования keytab-файла для прозрачной SSO аутентификации пользователей в системе мониторинга Zabbix. Также не забывайте о необходимости обеспечения безопасности keytab файлов (все, кто могут прочитать содержимое keytab смогут воспользоваться любыми ключами из него).

Предыдущая статьяПредыдущая статья Следующая статья Следующая статья

Источник

Owen Rumney

I’m assuming for anyone who is doing this that you have your /etc/krb5.conf in order and that isn’t going to get in your way.

One thing you’re going to want to know is what your permitted and default enctypes and the realm are from this file. In my case I’m going to use aes128-cts-hmac-sha1-96 and my realm is DPE.INTERNAL .

Creating the keytab file

To create the keytab file you’re going to need ktutil (and a number of other kxxxxxx commands)

sudo yum install krb5-workstation 
sudo apt-get install krb5-user 

Now you have the required programs installed, you can create your keytab file using ktutil .

This will present you with a prompt for you to add the entries in the keytab file

add_entry -password -p user@DPE.INTERNAL -k 1 -e aes256-cts-hmac-sha1-96 Password for user@DPE.INTERNAL: write_kt user.keytab quit 

Breaking this down, we are saying that we want to add an entry to the keytab using a password for authentication.

The -p is the principal that we will be logging in as using the end file.

The -k refers to the Key Version Number which in some situations isn’t really needed and is ignored (in Windows environment for example). You can get the current Key version number (kvno) by using the kvno command

kvno user@DPE.INTERNAL user@DPE.INTERNAL: kvno = 1 

The -e refers to the enctype mentioned earlier. This needs to be one of those that are permitted in your krb5.conf file so you’re using an accepted and appropriate encryption.

Testing the Key

We can now test the keytab for successfully login

kinit -kt user.keytab user@DPE.INTERNAL 

This should exit normally, then we can check we’ve got a ticket using klist

klist Ticket cache: FILE:/tmp/krb5cc_1000 Default principal: user@DPE.INTERNAL Valid Starting Expires Service principal 01/23/2019 14:27:28 01/24/2019 00:27:28 user@DPE.INTERNAL 

To clear out the ticket, you can use kdestroy . This will remove all current authentications.

Источник

Читайте также:  Linux ubuntu install package
Оцените статью
Adblock
detector