Share via


Настройка Credentials Roaming в домене

Механизм Credentials Roaming (перемещения учётных данных) пришёл к нам в Windows Server 2003 SP1 (его старое название - Digital Identity Management service (DIMS). Он позволяет пользователю домена получить доступ к своим закрытым ключам PKI с любого доменного компьютера, а не только с того конкретного, на котором эти ключи были получены от Центра Сертификации. Это достигается благодаря хранению ключевой информации в AD в объекте User соответствующего пользователя, и синхронизации её с локальным хранилищем сертификатов в профиле пользователя на соответствующем доменном компьютере, где пользователь совершил вход. Целостность таких учетных данных поддерживается при любых условиях, например при обновлении сертификатов и при одновременном входе пользователя с нескольких компьютеров.

Это может оказаться чрезвычайно полезной функцией, особенно для пользователей домена, не имеющих постоянного рабочего места. Одним из практических применений Credentials Roaming можно назвать использование шифрования и цифровой подписи в почтовых сообщениях.

Для работы этого механизма, если в домене нет Win2K8 DC, нужно расширять схему. Если есть – ничего не нужно кроме настройки групповых политик.

Расширение схемы

Расширение схемы производится под правами Ent.Admin+Schema Admin. Перед расширением схемы нужно убедиться, что оно разрешено: на мастере схемы в реестре по маршруту HCLM\System\Current Control Set\Services\NTDS\Parameters должен существовать параметр DWORD “Schema Update Allowed” со значением 1.

Перед расширением схемы необходимо иметь следующие файлы: KRDeploy.cmd, KRdeploy.js, DIMSRoam.ldf. Файлы KRDeploy* можно получить, обратившись в службу поддержки Microsoft. Файл ldf можно создать, руководствуясь информацией здесь. Все три файла нужно поместить в одну папку на контроллере домена – хозяине схемы.

Собственно расширение производится выполнением команды: KRDeploy . cmd -- ldif - import [ RootDN ] DIMSRoam . ldf , где RootDN – пространство имён корневого домена леса (узнать значение [RootDN] можно, выполнив команду: ldifde –f RootDSE.txt –d “” –r (objectclass=*) –p Base && findstr /i rootDomainNamingContext RootDSE.txt && del RootDSE.txt(требуемое имя будет отображено в последних строках вывода командной строки)).

image

Необходимо дождаться распространения изменений на все контроллеры доменов в лесе.

Далее, существует одна особенность. Информация перемещаемых учётных данных хранится в атрибутах объекта пользователя msPKIDPAPIMasterKeys и msPKIAccountCredentials. Имеется вероятность (особенно если в домене Windows 2003 при инсталляции контроллера была задана настройка безопасности Pre-Windows 2000 Compatible Access), что аутентифицированные пользователи могут читать атрибуты других пользователей. Это является лазейкой в безопасности системы и должно быть устранено. В каждом домене леса выполняется команда: krdeploy . cmd -- set - sd [ DomainDN ] В случае, если в домене имеется хотя бы один контроллер с Windows 2008, выполнять эту команду нет необходимости. Команда выполняется после того как завершилась синхронизация изменения схемы на все контроллеры леса.

image

В завершение процесса модификации схемы, нужно убрать (удалить) ранее выставленный в реестре хозяина схемы параметр HCLM\System\Current Control Set\Services\NTDS\Parameters\ Schema Update Allowed.

Настройка групповых политик

Административный шаблон DIMS.adm можно создать, руководствуясь информацией здесь.

Далее его нужно проимпортировать в AD и осуществить настройку групповой политики, определяющей работу Credentials Roaming. Подробную инструкцию можно найти здесь.

Проверить, что клиент подпадает под политику DIMS, можно задав команду:

image

Работа механизма

  1. Пользователь выполняет вход на клиентском компьютере, подключенном к домену Active Directory.
  2. Групповая политика перемещения учетных данных применяется на клиентском компьютере как часть процесса входа.
  3. Если перемещение учетных данных применяется в первый раз, сертификаты из пользовательского хранилища на клиентском компьютере копируются в Active Directory.
  4. Если у пользователя уже имеются сертификаты в Active Directory, то сертификаты, сохраняемые в пользовательском хранилище на клиентском компьютере, сравниваются с сертификатами этого пользователя, сохраняемыми в Active Directory.
  5. Если сертификаты из пользовательского хранилища являются самыми новыми, дальнейшие действия не выполняются. Если же для этого пользователя в Active Directory сохраняются более новые сертификаты, они копируются на клиентский компьютер.
  6. После обновления сертификатов пользователя на клиентском компьютере выполняется обработка запросов автозаявок на устаревшие сертификаты.
  7. Затем, когда пользователь выполняет вход на другом клиентском компьютере, подключенном к домену, применяется та же групповая политика и учетные данные еще раз реплицируются из Active Directory. При перемещении учетных данных выполняется синхронизация и устраняются любые конфликты сертификатов и закрытых ключей для любого количества клиентских компьютеров, на которые входит пользователь, а также для Active Directory.
  8. При последующих операциях входа сертификаты и ключи из локального хранилища сравниваются с сертификатами и ключами в Active Directory.
    • Если используются последние сертификаты и ключи, дальнейшие действия не выполняются.
    • Если требуется обновление сертификатов и ключей, устанавливается связь с Центром Сертификации с рабочей станции, выполняется процесс обновления и обновленные сертификаты и ключи реплицируются в Active Directory.
  9. Когда пользователь выполняет вход на другом компьютере, обновленные сертификаты и ключи реплицируются в хранилище сертификатов и ключей на этом компьютере.
  10. Когда срок действия сертификата пользователя истекает, старый сертификат автоматически архивируется в профиле клиента и в Active Directory.

Перемещение учетных данных запускается при каждом обновлении сертификата или закрытого ключа в локальном хранилище сертификатов пользователя, при каждой блокировке или разблокировании компьютера пользователем и при каждом обновлении групповой политики.

Все относящиеся к перемещению учетных данных сеансы связи между компонентами на локальном компьютере и между локальным компьютером и Active Directory выполняются с подписями и шифрованием. В AD сертификат хранится так, что вычленить Private Key нельзя.

Некоторые практические особенности работы Credentials Roaming, о которых нужно знать

Природа работы такова: за единственный главный сертификат принимается тот, который был выдан последним; если пользователь входит на ПК впервые и создается его профиль, то в случае присутствия в AD сертификата, полученного в период действия политики Credentials Roaming, он сгружается на локальный ПК (т.е. новый сертификат не создается).

Даже если в AD у пользователя имеется несколько сертификатов, главным Credentials Roaming -сертификатом признается только один (самый поздний, как правило).

Если пользователь стирает свой сертификат из профиля, то при следующем входе на этот же ПК не сгружается из AD старый, а создаётся новый сертификат, который поступает в AD и признаётся системой самым новым, и заменяет собой предыдущие НА ВСЕХ ОСТАЛЬНЫХ ПРОФИЛЯХ при следующих входах в них. Это может служить негативным моментом, если к примеру строить на механизме Credentials Roaming шифрование S\MIME. Поэтому стирать сертификаты из профиля пользователям ни в коем случае нельзя позволять!

Настройки политики из шаблона DIMS.adm не рекомендуется применять для Vista:

image

Чтобы задать выполнение групповой политики только для определенной ОС, например WinXP, можно воспользоваться фильтрацией WMI:

image  

image 

Даже несмотря на то, что политика применяется к пользователю, а не к ПК, именование ОС будет учитываться.

Credentials Roaming работает только с AD. И не будет работать с другими службами LDAP, например ADAM.

Credentials Roaming не будет работать с RODC (Read Only Domain Controllers).

Если между выдачей сертификата на компьютере, который проверяет подлинность пользователя на одном контроллере домена, и входом пользователя в сеть с использованием другого контроллера домена прошло мало времени, учетные данные не всегда бывают доступны сразу. Учетные данные станут доступными только после завершения репликации между двумя доменами или контроллерами домена.

Credentials Roaming нельзя рассматривать как механизм защиты сертификатов и закрытых ключей, т.к. он не спасает при их удалении пользователями.

Нельзя применять Credentials Roaming одновременно с перемещаемыми профилями для одного и того же пользователя. Это не является поддерживаемым решением.

Рекомендуется настраивать и применять политики для разных типов ОС сразу, и в дальнейшем не злоупотреблять возможностью их отключения/включения. Иначе могут возникать ситуации, когда ранее выданные сертификаты в AD будут видеться, а на рабочую станцию не будут синхронизироваться.

Есть известный баг, в соответствии с которым если в числе раб.станций есть ОС VISTA, может наблюдаться некорректный рост размера базы AD. Для этого случая есть специальный патч.

Вообще же, при проектировании Credentials Roaming в лесах с большим количеством пользователей, можно оценить прирост базы ntds. dit в соответствии с формулой, изложенной здесь (последний раздел).

Работа в Mixed Environment (XP и Vista)

В смешанных средах, когда в качестве клиентов используются компьютеры и Windows XP, и VISTA, администраторам предлагается всегда использовать ПК с VISTA или Windows Server 2008 для настройки групповых политик Credentials Roaming.

У VISTA и Windows Server 2008 в реестре по умолчанию уже имеются настройки для работы с Credentials Roaming, и нет нужды задавать для них отдельный административный шаблон.

Поэтому инсталлируем RSAT на Висту, даже если в домене нет контроллеров Win2K8, и создаём политику отдельно для Vista ПК. И так же прикручиваем её с помощью WMI. Находятся настройки Credentials Roaming для Висты здесь:

image   image   image

image 

image

Таким образом, в смешанных средах создаём две политики, одну для XP, одну для Vista. Можно и для серверных ОС.

Полезные ссылки

https://technet.microsoft.com/ru-ru/library/cc773373(WS.10).aspx

https://technet.microsoft.com/ru-ru/library/cc700821(en-us).aspx

https://support.microsoft.com/kb/907247