Назад | Перейти на главную страницу

Несколько областей и несколько TGT под MIT Kerberos для Windows

Мой локальный компьютер использует Windows 7 Pro и принадлежит к области LR, управляемой серверами AD. Я вхожу в свой компьютер, будучи подключенным к сети этого царства. Я могу просмотреть TGT с MIT Kerberos для Windows вер. 4.0.1.

Я хочу получить доступ к ресурсам в чужой сфере, FR. Между LR и FR нет доверия Kerberos, но они разрешают трафик TCP между собой. Я запрашиваю TGT для FR с его KDC (Red Hat IdM / FreeIPA) и успешно ввожу свой пароль при появлении запроса. Опять же, я могу просмотреть TGT с MIT Kerberos для Windows вер. 4.0.1. Теперь я могу получить доступ к ресурсам в FR через SSH без запроса пароля, несмотря на то, что я исходил из LR.

Проблема в том, что когда я получаю TGT для FR, TGT для моего принципала LR исчезает. В MIT Kerberos виден только FR TGT. Если я заблокирую свой компьютер, а затем разблокирую его паролем, FR TGT исчезнет, ​​его заменит новый LR TGT.

Кажется, что MIT Kerberos для Windows может хранить только один TGT за раз. Каждый TGT полностью работает для своей области для всех намерений и целей. Как я могу настроить MIT Kerberos, чтобы у меня было два TGT одновременно, по одному для каждой области? Можно ли «разделить» на несколько экземпляров клиентов, каждый из которых указывает на свой KRB5_CONFIG и локальный ключ? Если я не могу, есть ли альтернативная реализация Windows для клиентского Kerberos 5, которая будет работать, даже если нет межсферных доверительных отношений?

P.S. - Я не хочу доверия. Не могу получить доверие.

ОБНОВИТЬ: Я упустил некоторые из этих деталей ранее, потому что думал, что это может запутать проблему. Но, судя по ответу Брэда, это может быть оправдано. Я жду большинство локальное программное обеспечение будет использовать встроенную реализацию Kerberos в Windows и всегда использовать вкладку LR.

Однако опытные пользователи, такие как я, используют heimdal под Cygwin для перехода по SSH в FR. Я ожидаю, что все, что проходит через библиотеки DLL Cygwin, будет использовать heimdal и никогда не увидит LR TGT (чего нет, по крайней мере, не по умолчанию). Я явно кинит и двигаюсь дальше.

Сложная часть возникает для неопытных пользователей, которых я должен поддерживать, которые не используют Cygwin, но используют PuTTY. PuTTY позволяет указать как путь к библиотеке, так и DLL, для которой следует использовать реализацию GSSAPI. Например, я настраиваю сеансы SSH для использования библиотек MIT Kerberos вместо встроенных библиотек Windows. Я надеялся, что существует библиотека DLL, которая либо никогда не пыталась найти LR TGT (например, heimdal), либо позволяла использовать несколько TGT из разных областей. У него не обязательно должно быть окно графического интерфейса, такое как MIT Kerberos, но оно помогает.

Что ж, я не скажу, что это НЕ МОЖЕТ быть сделано с Windows, но я скажу, что ограничение зависит от сеанса. Проблема в том, что для каждого сеанса Windows кэширует один билет. Когда вы блокируете свой компьютер, а затем разблокируете его, инициируется другой сеанс, и от KDC запрашивается новый ключ. То же самое происходит, когда вы выйдете из системы, а затем снова войдете в нее. Этот метод на самом деле определяет права пользователей и для сеансов сервера, Это означает, что ключ / билет можно кэшировать, поэтому каждый инициируемый вами серверный ресурс или сеанс не должен запрашивать ваш пароль, но я никогда не слышал / не читал / не исследовал его, чтобы иметь возможность кэшировать более одного.

Теперь вы, вероятно, уже знаете, что, учитывая ваши знания, которые вы указали в своем вопросе, поэтому я скажу, что, основываясь на том факте, что Windows хранит ключ, который вы получаете при выдаче TGT, и основан на сеансе, я не думаю, это возможно с ТОЛЬКО Windows. MIT Kerberos для Windows может иметь способ инициировать два сеанса под одним пользователем, но даже в этом случае я не уверен, как ресурсы, к которым вы обращаетесь, будут знать, какую пару билет / ключ использовать. Имеет ли это смысл?

См. Здесь описание того, как Windows хранит пары TGT / ключи.

Кстати, очень хороший вопрос.

Хорошо, я нашел рабочее решение, которое требует дополнительной доработки, поэтому может работать не во всех средах.

Это работает с:

  1. MIT Kerberos для Windows 4.0.1 с инструментами поддержки Windows (KSETUP.EXE, KTPASS.EXE)
  2. PuTTY 0,63
  3. Windows 7 с пакетом обновления 1 (SP1)

Я искал в источнике MIT Kerberos и наткнулся на README для Windows. Особый интерес вызвали разные значения для Кэш учетных данных. Он поддерживает значение по умолчанию API:, но я неожиданно обнаружил, что мой реестр использует MSLSA: вместо.

Я играл с разными значениями ccname под HKEY_CURRENT_USER\Software\MIT\Kerberos5. Я попытался ОБЪЕМ ПАМЯТИ: сначала, что привело к интересному поведению. При открытии сеанса PuTTY мое окно MIT Kerberos Ticket Manager восстанавливается и выходит на передний план, предлагая мне ввести учетные данные. Вот Это Да! Такого никогда не было раньше, но, увы, PuTTY отвергнет это. Значение, которое помогло мне, было FILE:C:\Some\Full\File\Path. Я не совсем уверен, как защитить доступ к указанному файлу, поэтому оставлю это в качестве упражнения для читателя. У меня такое же поведение окна на передний план, но на этот раз понравилось только PuTTY. В окне диспетчера билетов также, наконец, были отображены билеты LR и FR. Было доказано, что билеты могут быть переадресованы и выдержат многократную блокировку / разблокировку Windows. НОТА: не забудьте полностью выйти и перезапустить Ticket Manager между изменениями реестра. Я не пробовал ccname из API: все же.

Я не знаю, имеет ли это значение или нет, но я также играл с KSETUP до этого начал работать. Сначала KSETUP без параметров просто показывал бы мне информацию о LR. Я добавил информацию о FR на моей локальной рабочей станции.

ksetup /AddKdc FOREIGN.REALM KDC.FOREIGN.REALM
ksetup /AddRealmFlags FOREIGN.REALM TcpSupported Delegate NcSupported

Для меня это похоже на ошибку в Kerberos для Windows.

Я обнаружил следующее:

Если я использую опцию «получить билет» в окне KfW 4.0.1, он просто работает (TM); Я могу нажать кнопку «Получить билет» и получить дополнительный билеты на оригинальные билеты, которые я получил при входе в систему.

Если я нажимаю опцию «сделать по умолчанию» в окне KfW, то с этого момента каждый раз, когда я нажимаю «получить билет», новый билет будет заменить какой бы билет ни был выбран по умолчанию, вместо добавления еще одной записи в список известных билетов. Проверка реестра на этом этапе покажет, что ccname запись (как в ответе Тоддиуса) была добавлена. Удаление эта запись, как ни странно, восстановит предыдущее поведение разрешения нескольких билетов.

Следуя ответу Тоддиуса, у меня есть коллега в аналогичной ситуации (64-разрядная версия Windows 7 Enterprise, подключенная к домену AD, также работающая под управлением MIT Kerberos для Windows 4.0.1): его копия Kerberos Ticket Manager будет разрешить ему иметь только одного принципала / одного TGT. Когда бы он ни использовал кнопку «Получить билет», чтобы получить TGT для другого принципала, предыдущий принципал исчезал.

Я просмотрел ПРОЧТИ МЕНЯ, и большинство ключей реестра были настроены должным образом, Кроме для ccname ключ на пути HKEY_CURRENT_USER\Software\MIT\Kerberos5. Этот ключ был установлен на значение MSLSA:. Нашим решением было изменить это на API:. В частности, шаги были:

  1. Закройте диспетчер билетов Kerberos вместе со всеми другими приложениями (так как вы будете перезагружаться).
  2. На пути к реестру HKEY_CURRENT_USER\Software\MIT\Kerberos5, изменить ccname ключ к API: (A-P-I, затем двоеточие).
  3. Выйдите из regedit и перезапустите.
  4. После повторного входа в систему запустите диспетчер билетов Kerberos и используйте кнопку «Получить билет», чтобы получить TGT участника, не являющегося участником AD.

С указанными выше действиями все сработало, и теперь мой коллега может видеть сразу несколько принципалов / TGT.

Между прочим, MIT Kerberos для Windows включает в себя собственный набор программ командной строки (например, klist), и эти программы поддерживают несколько кешей учетных данных. В моей 64-битной системе, когда я запускаю "C:\Program Files\MIT\Kerberos\bin\klist.exe" -A" после получения нескольких TGT я вижу свой участник Active Directory в кэше MSLSA, а затем у меня есть один кеш API для каждого дополнительного участника.

P.S. Это моя первая запись на этом сайте, поэтому я не смог добавить ее в качестве комментария к ответу Тоддиуса. Извинения!