===== Keytabs =====
Кейтаб - текстовый файл, содержащий сведения о сервисе, защищаемом Kerberos, и зашифрованном ключе, ассоциированном с SPN (service principal name), хранящимся на контроллере домена. Нужен для связывания неWindows-систем с доменом, для работы SSO.
Генерируется на серверных ОС, входящих в домен.
++++ ktpass /? |
Command line options:
---------------------most useful args
[- /] out : Keytab to produce
[- /] princ : Principal name (user@REALM)
[- /] pass : password to use
use '*' to prompt for password.
[- +] rndPass : ... or use +rndPass to generate a random password
[- /] minPass : minimum length for random password (def:15)
[- /] maxPass : maximum length for random password (def:256)
---------------------less useful stuff
[- /] mapuser : map princ (above) to this user account (default: don't)
[- /] mapOp : how to set the mapping attribute (default: add it)
[- /] mapOp : is one of:
[- /] mapOp : add : add value (default)
[- /] mapOp : set : set value
[- +] DesOnly : Set account for des-only encryption (default:don't)
[- /] in : Keytab to read/digest
---------------------options for key generation
[- /] crypto : Cryptosystem to use
[- /] crypto : is one of:
[- /] crypto : DES-CBC-CRC : for compatibility
[- /] crypto : DES-CBC-MD5 : for compatibility
[- /] crypto : RC4-HMAC-NT : default 128-bit encryption
[- /] crypto : AES256-SHA1 : AES256-CTS-HMAC-SHA1-96
[- /] crypto : AES128-SHA1 : AES128-CTS-HMAC-SHA1-96
[- /] crypto : All : All supported types
[- /] IterCount : Iteration Count used for AES encryption
Default: ignored for non-AES, 4096 for AES
[- /] ptype : principal type in question
[- /] ptype : is one of:
[- /] ptype : KRB5_NT_PRINCIPAL : The general ptype-- recommended
[- /] ptype : KRB5_NT_SRV_INST : user service instance
[- /] ptype : KRB5_NT_SRV_HST : host service instance
[- /] ptype : KRB5_NT_SRV_XHST :
[- /] kvno : Override Key Version Number
Default: query DC for kvno. Use /kvno 1 for Win2K compat.
[- +] Answer : +Answer answers YES to prompts. -Answer answers NO.
[- /] Target : Which DC to use. Default:detect
[- /] RawSalt : raw salt to use when generating key (not needed)
[- +] DumpSalt : show us the MIT salt being used to generate the key
[- +] SetUpn : Set the UPN in addition to the SPN. Default DO.
[- +] SetPass : Set the user's password if supplied.
++++
Пример создания:
ktpass -out centos1-dev-local.keytab -mapUser krbCentos@DEV.LOCAL +rndPass -mapOp set +DumpSalt -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -princ HTTP/centos1.dev.local@DEV.LOCAL
Если пересоздать кейтаб, используя тот же SPN, то необходимо перенастроить сервис на новый кейтаб и перезапустить его.
Автогенерация пароля предпочтительна - нет шансов его компрометации.
Если возникла ошибка Unable to set SPN mapping data, то нужно пересоздать кейтаб, так как этот работать не будет. Нужно сделать следующее:
- Проверить, не дубликат ли это. Команда ''setspn -x'' найдёт учётную запись, где созержится дубликат.
- Удалить дубликат, если таковой обнаружится.
- Убедиться, что ktpass запущен на серверной системе.
- Выключить UAC.
- Запустить консоль с привилегиями доменного админа.
- Запустить ktpass снова.
Если как-либо модифицировать кейтаб после его создания, то он перестанет работать, нужно будет его пересоздавать.
После создания кейтаба User logon name в свойствах учётки изменится, и будет иметь вид типа HTTP/proxy.domain.ru, также в свойствах нужно включить галку "This account supports Kerberos AES 256 bit encryption", чтобы не получать ошибку Cannot find key of appropriate type to decrypt AP REP...
Опция ''-crypto ALL'' помещает все возможные типы шифрования в кейтаб, и сервер с клиентом потом будут выбирать наиболее стойкий вариант.
Тест кейтаба (это уже в линуксе на сервере сервиса):
kinit -k -t centos1-dev-local.keytab HTTP/centos1.dev.local
https://social.technet.microsoft.com/wiki/contents/articles/36470.active-directory-using-kerberos-keytabs-to-integrate-non-windows-systems.aspx