Поделиться через


Реализация синхронизации хэша паролей с помощью Службы синхронизации Microsoft Entra Connect

В этой статье содержится информация, необходимая для синхронизации паролей пользователей из локального экземпляра службы Active Directory с облачным экземпляром Microsoft Entra.

Как работает синхронизация хэшированных паролей

Доменная служба Active Directory хранит пароли в виде хэш-значений реальных паролей пользователей. Для получения хэш-значений используется необратимая математическая функция (алгоритм хэширования). Нет способа вернуть результат односторонней функции в обычный текст пароля.

Чтобы синхронизировать ваш пароль, Microsoft Entra Connect Sync извлекает хэш вашего пароля из локального экземпляра Active Directory. Дополнительная обработка безопасности применяется к хэшу паролей перед синхронизацией с службой проверки подлинности Microsoft Entra. Пароли синхронизируются для каждого пользователя отдельно и в хронологическом порядке.

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

Когда вы впервые включаете функцию синхронизации хэшированных паролей, выполняется первоначальная синхронизация паролей для всех пользователей в области действия функции. Поэтапное развертывание позволяет выборочно тестировать группы пользователей с облачными возможностями аутентификации, такими как многофакторная аутентификация Microsoft Entra, условный доступ, Защита идентификации Microsoft Entra для обнаружения утечки учетных данных, Управление удостоверениями и другими, прежде чем полностью перенести ваши домены. Невозможно явно определить подмножество паролей пользователей, которые требуется синхронизировать. Однако при наличии нескольких соединителей можно отключить синхронизацию хэша паролей для некоторых соединителей, но не других с помощью командлета Set-ADSyncAADPasswordSyncConfiguration .

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

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

Пользователь должен ввести свои корпоративные учетные данные во второй раз, чтобы пройти проверку подлинности в идентификаторе Microsoft Entra, независимо от того, вошли ли они в свою корпоративную сеть. Но эту проблему можно свести к минимуму, если пользователь при входе в систему установит флажок "Оставаться в системе (KMSI)". Выбор этой опции устанавливает сеансовый cookie, который позволяет обходить аутентификацию в течение 180 дней. Поведение KMSI можно включить или отключить администратором Microsoft Entra. Кроме того, вы можете уменьшить запросы паролей, настроив присоединение к Microsoft Entra или гибридное соединение Microsoft Entra, которое автоматически регистрирует пользователей при подключении к корпоративной сети на своих корпоративных устройствах.

Дополнительные преимущества

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

Примечание.

Синхронизация паролей поддерживается только для типа объектов user в Active Directory. Он не поддерживается для типа объекта iNetOrgPerson.

Подробное описание принципа действия синхронизации хэшированных паролей

В следующем разделе описано, как работает синхронизация хэша паролей между Active Directory и идентификатором Microsoft Entra.

Подробная схема использования паролей

  1. Каждые две минуты агент синхронизации хэша паролей на сервере AD Connect запрашивает у контроллера домена сохраненные хэши паролей (атрибут unicodePwd). Этот запрос осуществляется через стандартный протокол репликации MS-DRSR, который используется для синхронизации данных между контроллерами домена. Учетная запись соединителя AD DS должна иметь разрешения "Replicate Directory Changes" и "Replicate Directory Changes All", которые предоставляются по умолчанию при установке, чтобы получить хэши паролей.

  2. Перед отправкой контроллер домена шифрует MD4-хэш пароля с помощью ключа, представляющего собой MD5-хэш от ключа сеанса RPC и соли. После этого он отправляет результат агенту синхронизации хэшированных паролей по протоколу RPC. Контроллер домена также передает соль агенту синхронизации с помощью протокола репликации контроллера домена, поэтому агент может расшифровать конверт.

  3. Когда агент синхронизации хэшированных паролей получает зашифрованный конверт, он использует MD5CryptoServiceProvider и соль для генерации ключа, чтобы преобразовать полученные данные обратно в исходный формат MD4. Агенту синхронизации хэша паролей не доступен пароль в виде открытого текста. Использование агента синхронизации хэша паролей md5 строго предназначено для обеспечения совместимости протокола репликации с контроллером домена, и он используется только локально между контроллером домена и агентом синхронизации хэша паролей.

  4. Агент синхронизации хэшированных паролей увеличивает 16-байтовый двоичный хэш пароля до 64 байтов. Для этого он преобразует хэш в 32-байтовую шестнадцатеричную строку, а затем преобразует ее обратно в двоичный формат с кодировкой UTF-16.

  5. Агент синхронизации паролей добавляет к 64-байтовому двоичному значению 10-байтовое значение соли для каждого пользователя, чтобы обеспечить дополнительную защиту исходного хэша.

  6. Агент для синхронизации хэшей паролей затем объединяет хэш MD4 с индивидуальной солью пользователя и вводит их в функцию PBKDF2. Используются 1000 итераций алгоритма ключевого хеширования HMAC-SHA256. Для получения дополнительной информации смотрите Белую книгу Microsoft Entra.

  7. Агент синхронизации хэша паролей получает 32-байтовый хэш, объединяет его с солью пользователя и количеством итераций SHA256 (для использования Microsoft Entra ID), а затем передает строку из Microsoft Entra Connect в Microsoft Entra ID через TLS.

  8. Когда пользователь пытается войти в Microsoft Entra ID и вводит свой пароль, этот пароль обрабатывается с помощью того же процесса MD4+salt+PBKDF2+HMAC-SHA256. Если полученный хэш соответствует хэшу, хранящейся в идентификаторе Microsoft Entra, это означает, что пользователь ввел правильный пароль и прошел проверку подлинности.

Примечание.

Исходный хэш MD4 не передается в идентификатор Microsoft Entra. Вместо этого передается SHA256-хэш от оригинального MD4-хэша. В результате, если хэш, хранящийся в идентификаторе Microsoft Entra ID, попадет в распоряжение злоумышленников, он не может быть использован в наземной атаке типа pass-the-hash.

Примечание.

Хэш-значение пароля никогда не хранится в SQL. Эти значения обрабатываются только в памяти перед отправкой в идентификатор Microsoft Entra.

Вопросы безопасности

При синхронизации паролей ваш пароль в открытом виде не передается функции синхронизации хэша паролей, Microsoft Entra ID или любой из связанных служб.

Проверка подлинности пользователей осуществляется через Microsoft Entra, вместо собственного экземпляра Active Directory организации. Данные паролей SHA256, хранящиеся в идентификаторе Microsoft Entra (хэш исходного хэша MD4), более безопасны, чем данные, хранящиеся в Active Directory. Кроме того, поскольку этот хэш SHA256 не может быть расшифрован, его нельзя вернуть в среду Active Directory организации и представить в качестве допустимого пароля пользователя при атаке типа pass-the-hash.

Рекомендации по политикам паролей

Есть два типа политик паролей, которые затрагивает синхронизация хэшированных паролей:

  • Политика сложности паролей
  • политика срока действия паролей.

Политика сложности паролей

Если используется синхронизация хэшированных паролей, настроенные в локальном экземпляре Active Directory политики сложности паролей переопределяют политики сложности, настроенные в облаке для синхронизированных пользователей. Вы можете использовать все допустимые пароли из экземпляра локальной службы Active Directory для доступа к службам Microsoft Entra.

Примечание.

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

политика срока действия паролей.

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

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

ПолитикаОблачногоПароляДляПользователейСПаролемСинхронизированаВключена

Если имеются синхронизированные пользователи, которые взаимодействуют только с интегрированными службами Microsoft Entra и должны соответствовать политике истечения срока действия пароля, вы можете принудить их к соблюдению политики истечения срока действия пароля в Microsoft Entra, включив функцию CloudPasswordPolicyForPasswordSyncedUsersEnabled (в устаревшем модуле MSOnline PowerShell эта функция называлась EnforceCloudPasswordPolicyForPasswordSyncedUsers).

Если CloudPasswordPolicyForPasswordSyncedUsersEnabled отключен (который является параметром по умолчанию), Microsoft Entra Connect обновляет атрибут PasswordPolicies синхронизированных пользователей на "DisablePasswordExpiration". Это обновление выполняется каждый раз, когда пароль пользователя синхронизирован и указывает идентификатору Microsoft Entra игнорировать политику истечения срока действия облачного пароля для этого пользователя. Значение атрибута можно проверить с помощью модуля Microsoft Graph PowerShell с помощью следующей команды:

(Get-MgUser -UserId <User Object ID> -Property PasswordPolicies).PasswordPolicies

Чтобы включить функцию CloudPasswordPolicyForPasswordSyncedUsersEnabled, выполните следующие команды с помощью модуля Graph PowerShell:

$OnPremSync = Get-MgDirectoryOnPremiseSynchronization
$OnPremSync.Features.CloudPasswordPolicyForPasswordSyncedUsersEnabled = $true

Update-MgDirectoryOnPremiseSynchronization `
  -OnPremisesDirectorySynchronizationId $OnPremSync.Id `
  -Features $OnPremSync.Features 

Примечание.

Необходимо установить модуль MSGraph PowerShell для работы предыдущего скрипта. Если возникают ошибки, связанные с недостаточными привилегиями, убедитесь, что вы правильно предоставили область API с помощью следующей команды при подключении. Connect-MgGraph -Scopes "OnPremDirectorySynchronization.ReadWrite.All"

После включения Microsoft Entra ID не обращается к каждому синхронизированному пользователю, чтобы удалить DisablePasswordExpiration значение из атрибута PasswordPolicies. Вместо этого значение DisablePasswordExpiration удаляется из PasswordPolicies во время следующей синхронизации хэша паролей для каждого пользователя при следующем изменении пароля в локальной службе Active Directory.

После включения функции CloudPasswordPolicyForPasswordSyncedUsersEnabled новые пользователи подготавливаются без значения PasswordPolicies.

Совет

Рекомендуется включить CloudPasswordPolicyForPasswordSyncedUsersEnabled перед включением синхронизации хэша паролей, чтобы начальная синхронизация хэшей паролей не добавляла DisablePasswordExpiration значение в атрибут PasswordPolicies для пользователей.

Политика паролей Microsoft Entra по умолчанию не требует, чтобы пользователи изменили свои пароли. Если политика в вашей локальной среде Active Directory отличается, можно изменить политику паролей Microsoft Entra с помощью команды PowerShell Update-MgDomain, чтобы она соответствовала.

Идентификатор Microsoft Entra поддерживает отдельную политику истечения срока действия пароля для каждого зарегистрированного домена.

Предостережение. Если есть синхронизированные учетные записи, которые должны иметь неиспользуемые пароли в идентификаторе Microsoft Entra, необходимо явно добавить DisablePasswordExpiration значение в атрибут PasswordPolicies объекта пользователя в идентификаторе Microsoft Entra ID. Это значение можно добавить, выполнив следующую команду:

Update-MgUser -UserID <User Object ID> -PasswordPolicies "DisablePasswordExpiration"`

Примечание.

Для гибридных пользователей, у которых параметра PasswordPolicies имеет значение DisablePasswordExpiration, оно изменяется на None после смены пароля в локальной среде.

Примечание.

Команда Update-MgDomain PowerShell не работает в федеративных доменах.

Примечание.

Команда Update-MgUser PowerShell не работает в федеративных доменах.

Синхронизация временных паролей и принудительное изменение пароля при следующем входе

Обычно пользователя заставляют изменить пароль при первом входе, особенно после сброса пароля администратором. Он обычно называется параметром "временный" пароль и выполняется путем проверки флага "Пользователь должен изменить пароль при следующем входе" в объекте пользователя в Active Directory (AD).

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

Чтобы поддерживать временные пароли в идентификаторе Microsoft Entra для синхронизированных пользователей, можно включить функцию ForcePasswordChangeOnLogOn, выполнив следующие команды с помощью модуля Graph PowerShell:

$OnPremSync = Get-MgDirectoryOnPremiseSynchronization
$OnPremSync.Features.UserForcePasswordChangeOnLogonEnabled = $true

Update-MgDirectoryOnPremiseSynchronization `
  -OnPremisesDirectorySynchronizationId $OnPremSync.Id `
  -Features $OnPremSync.Features 

Примечание.

Новый пользователь, созданный в Active Directory с флагом "Пользователь должен изменить пароль при следующем входе", всегда будет подготовлен в идентификаторе Microsoft Entra с политикой паролей для принудительного изменения пароля при следующем входе, независимо от функции ForcePasswordChangeOnLogOn, которая имеет значение true или false. Это внутренняя логика Microsoft Entra, так как новый пользователь создается без пароля, в то время как функция ForcePasswordChangeOnLogOn влияет только на сценарии сброса пароля администратора.

Если пользователь был создан в Active Directory с параметром "Пользователь должен изменить пароль при следующем входе" перед включением функции, пользователь получит ошибку при входе. Чтобы устранить эту проблему, снимите и снова установите флажок "Пользователь должен изменить пароль при следующем входе" в Active Directory Users and Computers. После синхронизации изменения объекта пользователя пользователь получит ожидаемый запрос в идентификаторе Microsoft Entra для обновления пароля.

Внимание

Эту функцию следует использовать, только если в учетной записи арендатора включены SSPR и функция обратной записи паролей. Таким образом, если пользователь изменяет свой пароль посредством SSPR, он синхронизируется с Active Directory.

Срок действия учетной записи

Если ваша организация использует атрибут accountExpires в рамках управления учетными записями пользователей, этот атрибут не синхронизирован с идентификатором Microsoft Entra. В результате истекший срок действия учетной записи Active Directory в среде, настроенной для синхронизации хэша паролей, по-прежнему будет активен в идентификаторе Microsoft Entra. Рекомендуется использовать запланированный сценарий PowerShell, который отключает учетные записи AD пользователей по окончании срока их действия (используйте командлет Set-ADUser). И наоборот, в процессе снятия ограничения по сроку действия из учетной записи AD эту учетную запись нужно активировать снова.

Синхронизация хэша паролей и проверка подлинности смарт-карт

Клиенты могут потребовать, чтобы пользователи входили в домены Windows с использованием физической смарт-карты CAC/PIV. Это можно сделать, настроив параметр свойства пользователя Smart Card Required for Interactive Logon (SCRIL) в Active Directory.

Если scRIL включен в объекте пользователя, пароль AD пользователя случайным образом определяется контроллером домена в значение, которое никто не знает, и пользователь должен зарегистрировать и впоследствии пройти проверку подлинности в домене Windows с помощью смарт-карты.

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

Примечание.

В выпуске версии 2.4.18.0 Microsoft Entra Connect Sync исправлена проблема, возникающая при повторном включении SCRIL в объекте пользователя. Повторное включение SCRIL часто возникает в сценариях, когда пользователь теряет смарт-карту, требуя отключения SCRIL и предоставления пользователем временного пароля, пока он не будет выдан новой смарт-карты

Ранее при повторном включении SCRIL и создании нового случайного пароля AD пользователь по-прежнему смог использовать старый пароль для проверки подлинности в идентификаторе Microsoft Entra. Теперь синхронизация подключения обновлена таким образом, чтобы новый случайный пароль AD синхронизировался с идентификатором Microsoft Entra и старый пароль нельзя использовать после включения входа смарт-карты.

Рекомендуем администраторам выполнить любое из приведенных ниже действий, если у них есть пользователи с битом SCRIL в домене AD.

  1. Выполните полную синхронизацию PHS по в этом руководстве, чтобы гарантировать, что пароли всех пользователей SCRIL схватываются
  2. Перепутайте пароль конкретного пользователя, сначала отключив, а затем снова включив настройки SCRIL, или напрямую измените пароль пользователя.
  3. Периодически поворачивайте пароли для пользователей SCRIL. В конечном итоге все такие пользователи будут иметь свои пароли перепутаны.

Перезапись синхронизированных паролей

Администратор может вручную сбросить пароль прямо в Microsoft Entra ID с помощью PowerShell (если только пользователь не находится в федеративном домене).

В таком случае новый пароль перезапишет синхронизированный пароль и к новому паролю будут применены все политики паролей, настроенные в облаке.

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

Синхронизация пароля не влияет на вошедших в систему пользователей Azure. Синхронизированная смена пароля, которая происходит, когда вы вошли в облачную службу, не оказывает немедленного влияния на ваш текущий сеанс облачной службы. Функция KMSI продлевает время этого расхождения. Когда снова возникнет необходимость в аутентификации в облачной службе, потребуется указать новый пароль.

Процесс синхронизации хэша паролей для доменных служб Microsoft Entra

Если вы используете доменные службы Microsoft Entra для предоставления устаревшей проверки подлинности для приложений и служб, которые должны использовать Kerberos, LDAP или NTLM, некоторые дополнительные процессы являются частью потока синхронизации хэша паролей. Microsoft Entra Connect использует следующий процесс для синхронизации хэшей паролей с идентификатором Microsoft Entra ID для использования в доменных службах Microsoft Entra:

Внимание

Microsoft Entra Connect следует установить и настроить только для синхронизации с локальными средами AD DS. Не поддерживается установка Microsoft Entra Connect в управляемом домене доменных служб Microsoft Entra для синхронизации объектов с идентификатором Microsoft Entra.

Microsoft Entra Connect синхронизирует хэши устаревших паролей только при включении доменных служб Microsoft Entra для клиента Microsoft Entra. Следующие шаги не требуются, если вы используете только Microsoft Entra Connect для синхронизации локальной среды AD DS с Microsoft Entra ID.

Если устаревшие приложения не используют проверку подлинности NTLM или простые привязки LDAP, рекомендуется отключить синхронизацию хэша паролей NTLM для доменных служб Microsoft Entra. Дополнительные сведения см. в статье Отключение слабых наборов шифров и синхронизации хэш-значений учетных данных NTLM.

  1. Microsoft Entra Connect извлекает открытый ключ для экземпляра клиента доменных служб Microsoft Entra.
  2. Когда пользователь изменяет пароль, локальный контроллер домена сохраняет результат изменения пароля (хэши) в двух атрибутах:
    • unicodePwd для хэша паролей NTLM,
    • supplementalCredentials для хэша паролей Kerberos.
  3. Microsoft Entra Connect обнаруживает изменения паролей через канал репликации каталогов (изменения атрибутов, необходимые для репликации на другие контроллеры домена).
  4. Для каждого пользователя, пароль которого изменен, Microsoft Entra Connect выполняет следующие действия:
    • Создает случайный 256-битный симметричный ключ AES.
    • Создает случайный вектор инициализации, необходимый для первого раунда шифрования.
    • Извлекает хэши паролей Kerberos из атрибутов supplementalCredentials.
    • Проверяет параметр конфигурации безопасности доменных служб Microsoft Entra SyncNtlmPasswords.
      • Если эта настройка отключена, создает случайный хэш NTLM с высокой энтропией (отличный от пароля пользователя). Затем этот хэш объединяется с точными хэшами паролей Kerberos из атрибута supplementalCrendetials в одну структуру данных.
      • Если настройка включена, значение атрибута unicodePwd объединяется с извлеченными хэшами паролей Kerberos из атрибута supplementalCredentials в одну структуру данных.
    • Шифрует одну структуру данных с использованием симметричного ключа AES.
    • Шифрует симметричный ключ AES с помощью открытого ключа доменных служб Microsoft Entra клиента.
  5. Microsoft Entra Connect передает зашифрованный симметричный ключ AES, зашифрованную структуру данных, содержащую хэши паролей, и вектор инициализации в идентификатор Microsoft Entra ID.
  6. Идентификатор Microsoft Entra хранит зашифрованный симметричный ключ AES, зашифрованную структуру данных и вектор инициализации для пользователя.
  7. Идентификатор Microsoft Entra отправляет зашифрованный симметричный ключ AES, зашифрованную структуру данных и вектор инициализации с помощью внутреннего механизма синхронизации через зашифрованный HTTP-сеанс в доменные службы Microsoft Entra.
  8. Доменные службы Microsoft Entra извлекают закрытый ключ для экземпляра клиента из хранилища ключей Azure.
  9. Для каждого зашифрованного набора данных (представляющего изменение пароля отдельного пользователя), доменные службы Microsoft Entra выполняют следующие действия:
    • Используют свой закрытый ключ для расшифровки симметричного ключа AES.
    • Используют симметричный ключ AES с вектором инициализации для расшифровки зашифрованной структуры данных, содержащей хэши паролей.
    • Записывает хэши паролей Kerberos, которые он получает на контроллер домена доменных служб Microsoft Entra. Хэши сохраняются в атрибут supplementalCredentials пользовательского объекта, зашифрованный на открытый ключ контроллера домена доменных служб Microsoft Entra.
    • Доменные службы Microsoft Entra записывают полученный хеш пароля NTLM на контроллер домена Microsoft Entra. Хэш сохраняется в атрибуте unicodePwd объекта пользователя, зашифрованном с использованием открытого ключа контроллера домена Microsoft Entra Domain Services.

Включение синхронизации хэша паролей

Внимание

Если вы мигрируете с AD FS (или других технологий федерации) на синхронизацию хэша паролей, просмотрите ресурсы для переноса приложений в Microsoft Entra ID.

При установке Microsoft Entra Connect с помощью параметра Express Settings синхронизация хэша паролей автоматически включена. Дополнительные сведения см. в статье "Начало работы с Microsoft Entra Connect" с помощью экспресс-параметров.

Если при установке Microsoft Entra Connect используются пользовательские параметры, синхронизация хэша паролей доступна на странице входа пользователя. Дополнительные сведения см. в разделе "Настраиваемая установка Microsoft Entra Connect".

Включение синхронизации хэшированных паролей

Синхронизация хэшированных паролей и FIPS

Если сервер заблокирован в соответствии со стандартом FIPS, то MD5 отключен.

Чтобы включить MD5 для синхронизации хэшированных паролей, выполните следующие действия.

  1. Перейдите в папку %programfiles%\Microsoft Azure AD Sync\Bin.
  2. Откройте файл miiserver.exe.config.
  3. Перейдите к узлу конфигурации или среды выполнения (в конце файла конфигурации).
  4. Добавьте следующий узел: <enforceFIPSPolicy enabled="false" />
  5. Сохраните изменения.
  6. Чтобы изменения вступили в силу, выполните перезагрузку.

Этот фрагмент должен выглядеть примерно так:

    <configuration>
        <runtime>
            <enforceFIPSPolicy enabled="false" />
        </runtime>
    </configuration>

Сведения о безопасности и FIPS см. в разделе синхронизации хэша паролей Microsoft Entra, шифрования и соответствия FIPS.

Устранение неполадок при синхронизации хэшированных паролей

Если у вас возникли проблемы с синхронизацией хэшей паролей, см. Устранение неполадок синхронизации хэшей паролей.

Следующие шаги