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

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

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

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

  1. Каждые две минуты агент синхронизации хэша паролей на сервере AD Connect запрашивает у контроллера домена сохраненные хэши паролей (атрибут unicodePwd). Этот запрос выполняется по стандартному протоколу репликации MS-DRSR, который используется для синхронизации данных между контроллерами домена. Для получения хэша паролей учетной записи службы требуются разрешения AD "Репликация изменений каталога" и "Репликация всех изменений каталога" (предоставляется по умолчанию при установке).
  2. Перед отправкой контроллер домена шифрует MD4-хэш пароля с помощью ключа — комбинации MD5-хэша от ключа сеанса RPC и случайных данных. После этого он отправляет результат агенту синхронизации хэшированных паролей по протоколу RPC. Контроллер домена также передает агенту синхронизации случайные данные, используя протокол репликации контроллера домена, чтобы агент смог расшифровать конверт.
  3. Когда агент синхронизации хэшированных паролей получает зашифрованный конверт, он создает ключ для расшифровки полученных данных в исходный формат MD4, используя MD5CryptoServiceProvider и значение соли. Агенту синхронизации хэша паролей не доступен пароль в виде открытого текста. Он применяет MD5 только для совместимости по протоколу репликации с контроллером домена и только в локальной среде для обмена данными между контроллером домена и агентом синхронизации хэшированных паролей.
  4. Агент синхронизации хэшированных паролей увеличивает 16-байтовый двоичный хэш пароля до 64 байтов. Для этого он преобразует хэш в 32-байтовую шестнадцатеричную строку, а затем преобразует ее обратно в двоичный формат с кодировкой UTF-16.
  5. Агент синхронизации паролей добавляет к 64-байтовому двоичному значению 10-байтовое значение соли для каждого пользователя, чтобы обеспечить дополнительную защиту исходного хэша.
  6. Затем он передает строку, полученную при объединении хэша MD4 с солью каждого пользователя, в функцию PBKDF2. Выполняется 1000 итераций алгоритма хэширования с ключом HMAC-SHA256. Дополнительные сведения см. в техническом документе по Microsoft Entra.
  7. Агент синхронизации хэша паролей принимает полученный 32-байтовый хэш, объединяет в него соль пользователя и количество итераций SHA256 (для использования идентификатором Microsoft Entra), а затем передает строку из Microsoft Entra Connect к идентификатору Microsoft Entra по протоколу TLS.
  8. Когда пользователь пытается войти в Microsoft Entra ID и вводит свой пароль, пароль выполняется через тот же процесс MD4+salt+PBKDF2+HMAC-SHA256. Если полученный хэш совпадает с хэшом, хранящимся в идентификаторе Microsoft Entra, пользователь вводит правильный пароль и проходит проверку подлинности.

Примечание

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

Примечание

Значение хэша пароля НИКОГДА не хранится в SQL. Эти значения обрабатываются только в памяти перед отправкой в идентификатор Microsoft Entra.

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

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

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

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

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

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

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

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

Примечание

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

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

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

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

CloudPasswordPolicyForPasswordSyncedUsersEnabled

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

Если cloudPasswordPolicyForPasswordSyncedUsersEnabled отключен (это параметр по умолчанию), Microsoft Entra Connect устанавливает для атрибута PasswordPolicies синхронизированных пользователей значение DisablePasswordExpiration. Это делается каждый раз, когда пароль пользователя синхронизирован и указывает Microsoft Entra идентификатор игнорировать политику истечения срока действия облачных паролей для этого пользователя. Значение атрибута можно проверить с помощью модуля Azure AD 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 

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

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

Совет

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

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

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

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

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

Примечание

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

Примечание

Ни команды Update-MgDomain, ни нерекомендуемые команды PowerShell Set-MsolPasswordPolicy не будут работать в федеративных доменах.

Примечание

Ни команды Set-MgUser, ни нерекомендуемые Set-AzureADUser PowerShell не будут работать в федеративных доменах.

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

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

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

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

Set-ADSyncAADCompanyFeature -ForcePasswordChangeOnLogOn $true

Примечание

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

Если для пользователя настроен параметр «Срок действия пароля не истекает» в Active Directory (AD), то флаг принудительного изменения пароля не устанавливается в Active Directory (AD), поэтому пользователю не будет предложено изменить пароль при следующем входе.

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

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

Внимание!

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

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

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

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

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

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

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

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

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

Если вы используете Microsoft Entra доменных служб для обеспечения устаревшей проверки подлинности для приложений и служб, которым необходимо использовать Kerberos, LDAP или NTLM, некоторые дополнительные процессы являются частью потока синхронизации хэша паролей. Microsoft Entra Connect использует следующий дополнительный процесс для синхронизации хэшей паролей с идентификатором Microsoft Entra для использования в доменных службах 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.

Если устаревшие приложения не используют проверку подлинности 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 идентификатор.
  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 доменных служб.

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

Важно!

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

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

Если при установке 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.

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

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

Дальнейшие действия