Шпаклівка Kerberos / аутентифікація GSSAPI


9

Я налаштував декілька серверів Linux для аутентифікації з Active Directory Kerberos за допомогою sssd на RHEL6. Я також увімкнув аутентифікацію GSSAPI, сподіваючись на вхід без паролів.

Але я не можу отримати Putty (0.63) для автентифікації без пароля.

GSSAPI працює між системами Linux (клієнт openSSH), які налаштовані для аутентифікації AD, використовуючи параметри .ssh / config для включення GSSAPI.

Він також працює від Cygwin (openSSH клієнт), використовуючи ті самі налаштування .ssh / config, а також виконуючи команду kinit, щоб отримати квиток.

Також Samba ділиться з усіма системами Linux, включаючи домашні каталоги, які працюють з Windows Explorer, не вимагаючи пароля (я не впевнений, чи GSSAPI буде там грати)

Які речі я можу спробувати усунути це? Більшість моїх користувачів використовують Putty. Крім того, я не адміністратор Windows, тому нічого не можу зробити на контролерах домену. Мій обліковий запис має лише привілеї для додавання серверів до домену AD.


Я ввімкнув шпаклівку SSH-пакетів. Мені це було цікавим, я ще не впевнений, що робити з цією інформацією:

Event Log: Server version: SSH-2.0-OpenSSH_5.3
Event Log: Using SSH protocol version 2
Event Log: We claim version: SSH-2.0-PuTTY_Release_0.63
Outgoing packet #0x0, type 20 / 0x14 (SSH2_MSG_KEXINIT)
Incoming packet #0x0, type 20 / 0x14 (SSH2_MSG_KEXINIT)
Event Log: Doing Diffie-Hellman group exchange
Outgoing packet #0x1, type 30 / 0x1e (SSH2_MSG_KEX_DH_GEX_REQUEST)
Incoming packet #0x1, type 31 / 0x1f (SSH2_MSG_KEX_DH_GEX_GROUP)
Event Log: Doing Diffie-Hellman key exchange with hash SHA-256
Outgoing packet #0x2, type 32 / 0x20 (SSH2_MSG_KEX_DH_GEX_INIT)
Incoming packet #0x2, type 33 / 0x21 (SSH2_MSG_KEX_DH_GEX_REPLY)
Outgoing packet #0x3, type 21 / 0x15 (SSH2_MSG_NEWKEYS)
Event Log: Initialised AES-256 SDCTR client->server encryption
Event Log: Initialised HMAC-SHA1 client->server MAC algorithm
Outgoing raw data at 2014-11-25 00:21:08
Incoming packet #0x3, type 21 / 0x15 (SSH2_MSG_NEWKEYS)
Event Log: Initialised AES-256 SDCTR server->client encryption
Event Log: Initialised HMAC-SHA1 server->client MAC algorithm
Outgoing packet #0x4, type 5 / 0x05 (SSH2_MSG_SERVICE_REQUEST)
Incoming packet #0x6, type 51 / 0x33 (SSH2_MSG_USERAUTH_FAILURE)
...%gssapi-keyex
,gssapi-with-mic
,password.
Event Log: Using SSPI from SECUR32.DLL
Event Log: Attempting GSSAPI authentication
Outgoing packet #0x6, type 50 / 0x32 (SSH2_MSG_USERAUTH_REQUEST)
Incoming packet #0x7, type 60 / 0x3c (SSH2_MSG_USERAUTH_GSSAPI_RESPONSE)
Event Log: GSSAPI authentication initialised
Outgoing packet #0x7, type 61 / 0x3d (SSH2_MSG_USERAUTH_GSSAPI_TOKEN)
Incoming packet #0x8, type 61 / 0x3d (SSH2_MSG_USERAUTH_GSSAPI_TOKEN)
Event Log: GSSAPI authentication initialised
Event Log: GSSAPI authentication loop finished OK
Outgoing packet #0x8, type 66 / 0x42 (SSH2_MSG_USERAUTH_GSSAPI_MIC)
Incoming packet #0x9, type 51 / 0x33 (SSH2_MSG_USERAUTH_FAILURE)
...%gssapi-keyex
,gssapi-with-mic
,password.

1
Увімкнувши налагодження в ніч ssh демон демонструйте корисну інформацію. Ви завжди можете запустити другу інстанцію на іншому порту для тестування.
Пол Халдейн

Відповіді:


7

На машинах Windows, які є частиною домену Active Directory, користувачі отримують свій квиток на видачу квитків Kerberos під час входу в Windows, і PuTTY може використовувати це для аутентифікації, якщо ввімкнено автентифікацію GSSAPI в підключенні PuTTY Configuration Connection | SSH | Auth | GSSAPI .

[Якщо вам також потрібно делегування квитків (наприклад, для монтажу керберизованих файлових систем на сервері після входу), переконайтесь, що делегування GSSAPI також включено в PuTTY, а сервери, на які ви входите , позначені в Active Directory на вкладці Делегування як " Довіряйте цьому комп’ютеру для делегування будь-якій службі (лише для Kerberos) ", яку вони не за замовчуванням. Останнє налаштування довіри до AD дивно потрібно лише делегуванню для роботи від клієнтів Windows, таких як PuTTY; він не потрібен клієнтам "ssh -K" для Linux.]

На автономних (персональних) машинах Windows, які не входять у домен Active Directory, ви все одно можете використовувати автентифікацію Kerberos / GSSAPI (і делегування квитків) через PuTTY, але ви повинні отримати квиток самостійно. На жаль, Windows 7 не встановлюється з будь-яким еквівалентом програми kinit (щоб ви вручну вимагали квиток), і PuTTY також не підкаже вам пароль вашого Kerberos, якщо вам не вистачає квитка. Тому вам доведеться встановити MIT Kerberos для Windowsпакет, який включає як звичайні інструменти командного рядка kinit / klist / kdestroy, так і акуратний інструмент графічного інтерфейсу "MIT Kerberos Ticket Manager". Використовуйте ці, щоб отримати свій квиток, і тоді PuTTY автоматично використовуватиме бібліотеку MIT GSSAPI замість бібліотеки Microsoft SSPI, і все має працювати. Якщо "MIT Kerberos Ticket Manager" запущений, він автоматично запропонує вам пароль Kerberos, коли PuTTY потрібен квиток, тому добре пов'язувати його з папки Startup.


1
З того часу я дізнався, що Windows має насправді такий собі еквівалент команди MIT Kerberos, що kinitназивається cmdkey.
Маркус Кун

1
Що стосується включення делегування квитків, якщо ви один з тих , хто розуміє , що Active Directory дійсно тільки Microsoft LDAPv3 під капотом: переконайтеся , що запис LDAP з основних послуг ви хочете , щоб мати можливість делегувати квиток Kerberos для має в своєму UserAccountControl біт TRUSTED_FOR_DELEGATION = 0x80000 = 524288 набір.
Маркус Кун

FYI будь-кому, хто розглядає можливість налаштування "Довірити цьому комп’ютеру для делегування будь-якій службі (лише Kerberos)", наприклад, необмежену делегацію Kerberos, це має СЕРЕДОВІ наслідки для безпеки, які слід врахувати. Я рекомендую спочатку прочитати adsecurity.org/?p=1667
Бред

3

Спочатку переконайтесь, що ваш вихідний список klist у вікні Windows під керуванням PuTTY показує дійсний TGT. Тоді в конфігурації для вашої PuTTY сесії, переконайтеся , що аутентифікація Замах GSSAPI включена в Connection - SSH - Auth - GSSAPI. Нарешті, переконайтеся, що він налаштований для автоматичного входу з вашим ім'ям користувача в Connection - Data. Ви можете чітко вказати ім'я користувача або вибрати перемикач для використання системного імені користувача .

Історично це все, що мені потрібно було зробити, щоб без паролів увійти в SSH через Kerberos.


1
klist tgt, схоже, має сенс для мене. каже, що це також непередбачувано. klist показує 5 клавіш для таких речей, як Exchange. У мене також є квиток на сервер Linux, до якого я намагаюся сш. Я перебирав конфігурацію шпаклівки 100 разів. Усі онлайн-документи / путівники в основному говорять те саме, тому я впевнений, що частина налаштована правильно.
xdaxdb

3

Проблема була в налаштуванні Windows Kerberos. Я думаю, що наш Active Directory створений фанк, я не знаю, що я не адміністратор Windows.

Але я вирішив проблему, вручну налаштувавши Kerberos за допомогою ksetup в CLI для Windows 7.

Після перезавантаження на віддалену робочу станцію я не зміг увійти в свій ПК. Це тому, що в початковій конфігурації частина TLD мого домену реального часу завжди відсутня (домен \ користувач), але після того, як я вручну налаштував її, мені довелося змінити свій вхідний домен, щоб відобразити повне ім'я домену realm (domain.TLD \ user) та Мені вдалося увійти на свій ПК з Windows, хоча зараз автентифікація зайняла більше часу.

До змін виведення ksetup показало лише мою область за замовчуванням, і це було в нижньому регістрі.

Я використовував "nslookup -type = SRV _kerberos._tcp.domain.TLD", щоб отримати всі сервери kdc для мого царства.

Я не встановлював жодних прапорів.

Я встановив відображення свого імені користувача "ksetup / mapuser user@domain.TLD user"

Я використовував ресурси: https://wiki.ncsa.illinois.edu/display/ITS/Windows+7+Kerberos+Login+using+External+Kerberos+KDC

https://www.cgl.ucsf.edu/Security/CGLAUTH/CGLAUTH.html

Якщо у когось є якісь пропозиції, які я можу дати адміністраторам Windows щодо того, як вони можуть виправити це (чи це зламано?), Я передам це разом.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.