Putty 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.
xdaxdb
источник
1
Включение отладки на ssh daemon night show показывает полезную информацию. Вы всегда можете запустить второй экземпляр на другом порту для тестирования.
Пол Холдейн

Ответы:

7

На компьютерах с Windows, которые являются частью домена Active Directory, пользователи получают свой билет на выдачу билетов Kerberos при входе в Windows, и PuTTY может использовать его для аутентификации, если аутентификация GSSAPI включена в соединении конфигурации PuTTY | SSH | Auth | GSSAPI (и другие методы аутентификации, которые он использует перед GSSAPI, такие как открытый ключ через Pageant, не устанавливаются и не отключаются в Connection | SSH | Auth).

[Если вам также необходимо делегирование билетов (например, для монтирования керберизованных файловых систем на сервере после входа в систему), убедитесь, что делегирование GSSAPI также включено в PuTTY, а серверы, на которые вы входите, помечены в Active Directory на вкладке Делегирование как « Доверяйте этот компьютер для делегирования какой-либо службе (только Kerberos) », которой они не являются по умолчанию. Эта последняя настройка доверия в AD, как ни странно, необходима только для делегирования для работы с клиентами Windows, такими как PuTTY; он не нужен для клиентов Linux "ssh -K".]

На самоуправляемых (личных) компьютерах 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 понадобится билет, поэтому рекомендуется связать его из папки «Автозагрузка».

Маркус Кун
источник
1
С тех пор я узнал, что Windows на самом деле имеет своего рода эквивалент команды MIT Kerberos, kinitназываемой cmdkey.
Маркус Кун
1
Что касается включения делегирования билетов, если вы один из тех , кто понимает , что Active Directory действительно только Microsoft LDAPv3 под капотом: убедитесь , что запись LDAP из основных услуг вы хотите , чтобы иметь возможность делегировать билет Kerberos для имеет в своем UserAccountControl бит TRUSTED_FOR_DELEGATION = 0x80000 = 524288 установлен.
Маркус Кун
Для всех, кто рассматривает возможность настройки «Доверять этот компьютер для делегирования какой-либо службе (только Kerberos)», например, неограниченное делегирование Kerberos, это имеет СЕРЬЕЗНЫЕ последствия для безопасности, которые следует учитывать. Я бы рекомендовал сначала прочитать adsecurity.org/?p=1667 .
Брэд
3

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

Исторически это все, что мне нужно было сделать, чтобы беспарольный вход в SSH работал через Kerberos.

Райан Болджер
источник
1
klist tgt, похоже, имеет смысл для меня. говорит, что это тоже можно пересылать. klist показывает 5 ключей для таких вещей, как Exchange. У меня также есть билет на сервер Linux, к которому я пытаюсь подключиться по ssh. Я прошел через конфиг замазки 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, как они могут это исправить (это сломано?), Я передам это.

xdaxdb
источник