Реализация синхронизации хэша паролей с помощью Службы синхронизации 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, которое автоматически регистрирует пользователей при подключении к корпоративной сети на своих корпоративных устройствах.
Дополнительные преимущества
- Как правило, синхронизация хэша паролей проще реализовать, чем служба федерации. Для проверки подлинности пользователей он не требует больше серверов и устраняет зависимость от высокодоступной службы федерации.
- Синхронизация хэша паролей также может быть включена в дополнение к федерации. Ее можно использовать в качестве резервной копии, если служба федерации испытывает сбой.
Заметка
Синхронизация паролей поддерживается только для пользователя типа объекта в Active Directory. Он не поддерживается для типа объекта iNetOrgPerson.
Подробное описание работы синхронизации хэша паролей
В следующем разделе описано, как работает синхронизация хэша паролей между Active Directory и идентификатором Microsoft Entra.
Каждые две минуты агент синхронизации хэша паролей на сервере AD Connect запрашивает сохраненные хэши паролей (атрибут ЮникодPwd) из контроллера домена. Этот запрос осуществляется через стандартный протокол репликации MS-DRSR , используемый для синхронизации данных между контроллерами домена. Учетная запись соединителя AD DS должна иметь реплицировать изменения каталога и реплицировать все разрешения AD (предоставленные по умолчанию при установке), чтобы получить хэши паролей.
Перед отправкой контроллер домена шифрует хэш паролей MD4 с помощью ключа, который является хэшом MD5 ключа сеанса RPC и соли. Затем он отправляет результат агенту синхронизации хэша паролей через RPC. Контроллер домена также передает соль агенту синхронизации с помощью протокола репликации контроллера домена, поэтому агент может расшифровать конверт.
После того как агент синхронизации хэша паролей имеет зашифрованный конверт, он использует MD5CryptoServiceProvider и соль для создания ключа для расшифровки полученных данных обратно в исходный формат MD4. Агент синхронизации хэша паролей никогда не имеет доступа к паролю с четким текстом. Использование агента синхронизации хэша паролей md5 строго предназначено для обеспечения совместимости протокола репликации с контроллером домена, и он используется только локально между контроллером домена и агентом синхронизации хэша паролей.
Агент синхронизации хэша паролей расширяет хэш-хэш 16-байтового двоичного пароля до 64 байт, преобразовав хэш в шестнадцатеричную строку 32-байтов, а затем преобразовав эту строку обратно в двоичный файл с кодировкой UTF-16.
Агент синхронизации хэша паролей добавляет соль пользователя, состоящую из 10-байтовой соли длины, в 64-байтовый двоичный файл для дальнейшей защиты исходного хэша.
Затем агент синхронизации хэша паролей объединяет хэш MD4 плюс соль пользователя и вводит его в функцию PBKDF2 . Используются 1000 итераций алгоритма хэширования HMAC-SHA256 . Дополнительные сведения см. в техническом документе Microsoft Entra.
Агент синхронизации хэша паролей принимает полученный хэш 32-байтового хэша, объединяет как соль пользователя, так и количество итераций SHA256 (для использования идентификатором Microsoft Entra ID), а затем передает строку из Microsoft Entra Connect в Идентификатор Microsoft Entra ID через TLS.
Когда пользователь пытается войти в идентификатор Microsoft Entra и вводит пароль, пароль выполняется через тот же процесс 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 организации и представить в качестве допустимого пароля пользователя в сквозной атаке хэша.
Рекомендации по политике паролей
Существует два типа политик паролей, затронутых включением синхронизации хэша паролей:
- Политика сложности паролей
- Политика истечения срока действия пароля
Политика сложности паролей
Если включена синхронизация хэша паролей, политики сложности паролей в экземпляре локальная служба Active Directory переопределяют политики сложности в облаке для синхронизированных пользователей. Для доступа к службам Microsoft Entra можно использовать все допустимые пароли из экземпляра локальная служба Active Directory.
Заметка
Пароли для пользователей, созданных непосредственно в облаке, по-прежнему подвергаются политикам паролей, как определено в облаке.
Политика истечения срока действия пароля
Если пользователь находится в области синхронизации хэша паролей, по умолчанию пароль облачной учетной записи имеет значение "Никогда не истекает".
Вы можете продолжить вход в облачные службы с помощью синхронизированного пароля, истекшем в локальной среде. Ваш облачный пароль обновляется при следующем изменении пароля в локальной среде.
CloudPasswordPolicyForPasswordSyncedUsersEnabled
Если есть синхронизированные пользователи, которые взаимодействуют только с интегрированными службами 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 не переходит к каждому синхронизированному пользователю, чтобы удалить DisablePasswordExpiration
значение из атрибута PasswordPolicies. Вместо этого DisablePasswordExpiration
значение удаляется из PasswordPolicies во время следующей синхронизации хэша паролей для каждого пользователя после следующего изменения пароля в локальной ad.
После включения функции CloudPasswordPolicyForPasswordSyncedUsersEnabled новые пользователи подготавливаются без значения PasswordPolicies.
Кончик
Рекомендуется включить CloudPasswordPolicyForPasswordSyncedUsersEnabled перед включением синхронизации хэша паролей, чтобы начальная синхронизация хэшей паролей не добавляла DisablePasswordExpiration
значение в атрибут PasswordPolicies для пользователей.
Политика паролей Microsoft Entra по умолчанию требует, чтобы пользователи изменяли пароли каждые 90 дней. Если политика в AD также составляет 90 дней, эти две политики должны соответствовать. Однако если политика AD не 90 дней, вы можете обновить политику паролей Microsoft Entra, чтобы она соответствовала с помощью команды Update-MgDomain PowerShell.
Идентификатор Microsoft Entra поддерживает отдельную политику истечения срока действия пароля для каждого зарегистрированного домена.
Предостережение. Если есть синхронизированные учетные записи, которые должны иметь неиспользуемые пароли в идентификаторе Microsoft Entra, необходимо явно добавить DisablePasswordExpiration
значение в атрибут PasswordPolicies объекта пользователя в идентификаторе Microsoft Entra ID. Это значение можно добавить, выполнив следующую команду:
Update-MgUser -UserID <User Object ID> -PasswordPolicies "DisablePasswordExpiration"`
Заметка
Для гибридных пользователей, имеющих значение DisablePasswordExpiration
PasswordPolicies, это значение переключается на 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, так как новый пользователь подготавливается без пароля, в то время как функция ForcePasswordChangeOnLogOnOnOn влияет только на сценарии сброса пароля администратора.
Если пользователь был создан в Active Directory с параметром "Пользователь должен изменить пароль при следующем входе" перед включением функции, пользователь получит ошибку при входе. Чтобы устранить эту проблему, отмените проверку и повторно проверьте поле "Пользователь должен изменить пароль при следующем входе" в Пользователи и компьютеры Active Directory. После синхронизации изменения объекта пользователя пользователь получит ожидаемый запрос в идентификаторе 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. Если вы выполняете полную синхронизацию, существует вероятность того, что конечные пользователи будут запрашивать повторное вход с обновленным паролем, если проверка подлинности на основе сертификатов не используется.
Перезапись синхронизированных паролей
Администратор может вручную сбросить пароль непосредственно в идентификаторе Microsoft Entra с помощью 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.
- Microsoft Entra Connect извлекает открытый ключ для экземпляра клиента доменных служб Microsoft Entra.
- Когда пользователь изменяет пароль, локальный контроллер домена сохраняет результат изменения пароля (хэши) в двух атрибутах:
- ЮникодPwd для хэша паролей NTLM.
- дополнениеCredentials для хэша паролей Kerberos.
- Microsoft Entra Connect обнаруживает изменения паролей через канал репликации каталогов (изменения атрибутов, необходимые для репликации на другие контроллеры домена).
- Для каждого пользователя, пароль которого изменен, Microsoft Entra Connect выполняет следующие действия:
- Создает случайный симметричный ключ AES 256-разрядного.
- Создает вектор случайной инициализации, необходимый для первого раунда шифрования.
- Извлекает хэши паролей Kerberos из атрибутов дополнительныхCredentials .
- Проверяет параметр конфигурации безопасности доменных служб Microsoft Entra SyncNtlmPasswords .
- Если этот параметр отключен, создается случайный хэш NTLM с высокой энтропией (отличается от пароля пользователя). Затем этот хэш объединяется с точными хэшами паролей Kerberos из атрибута supplementalCrendetials в одну структуру данных.
- Если этот параметр включен, объединяет значение атрибута ЮникодPwd с извлеченными хэшами паролей Kerberos из атрибута supplementalCredentials в одну структуру данных.
- Шифрует одну структуру данных с помощью симметричного ключа AES.
- Шифрует симметричный ключ AES с помощью открытого ключа доменных служб Microsoft Entra клиента.
- Microsoft Entra Connect передает зашифрованный симметричный ключ AES, зашифрованную структуру данных, содержащую хэши паролей, и вектор инициализации в идентификатор Microsoft Entra ID.
- Идентификатор Microsoft Entra хранит зашифрованный симметричный ключ AES, зашифрованную структуру данных и вектор инициализации для пользователя.
- Идентификатор Microsoft Entra отправляет зашифрованный симметричный ключ AES, зашифрованную структуру данных и вектор инициализации с помощью внутреннего механизма синхронизации через зашифрованный HTTP-сеанс в доменные службы Microsoft Entra.
- Доменные службы Microsoft Entra извлекают закрытый ключ для экземпляра клиента из хранилища ключей Azure.
- Для каждого зашифрованного набора данных (представляющего изменение пароля отдельного пользователя), доменные службы Microsoft Entra выполняют следующие действия:
- Использует закрытый ключ для расшифровки симметричного ключа AES.
- Использует симметричный ключ AES с вектором инициализации для расшифровки зашифрованной структуры данных, содержащей хэши паролей.
- Записывает хэши паролей Kerberos, которые он получает на контроллер домена доменных служб Microsoft Entra. Хэши сохраняются в дополнительный атрибут пользовательского объектаCredentials, зашифрованный на открытый ключ контроллера домена доменных служб Microsoft Entra.
- Доменные службы Microsoft Entra записывает хэш пароля NTLM, полученный контроллеру домена доменных служб Microsoft Entra. Хэш сохраняется в атрибуте юникодPwd объекта пользователя, зашифрованном для открытого ключа контроллера домена доменных служб Microsoft Entra.
Включение синхронизации хэша паролей
Важный
Если вы переносите AD FS (или другие технологии федерации) на синхронизацию хэша паролей, просмотрите ресурсы для переноса приложений в идентификатор Microsoft Entra ID.
При установке Microsoft Entra Connect с помощью параметра Express Settings синхронизация хэша паролей автоматически включена. Дополнительные сведения см. в статье "Начало работы с Microsoft Entra Connect" с помощью экспресс-параметров.
Если при установке Microsoft Entra Connect используются пользовательские параметры, синхронизация хэша паролей доступна на странице входа пользователя. Дополнительные сведения см. в разделе "Настраиваемая установка Microsoft Entra Connect".
Синхронизация хэша паролей и FIPS
Если сервер заблокирован в соответствии со стандартом FIPS, то MD5 отключен.
Чтобы включить MD5 для синхронизации хэша паролей, выполните следующие действия.
- Перейдите в папку %programfiles%\Microsoft Azure AD Sync\Bin.
- Откройте файл miiserver.exe.config.
- Перейдите к узлу конфигурации и среды выполнения в конце файла.
- Добавьте следующий узел:
<enforceFIPSPolicy enabled="false" />
- Сохраните изменения.
- Перезагрузите изменения, которые вступают в силу.
Для справки этот фрагмент кода выглядит следующим образом:
<configuration>
<runtime>
<enforceFIPSPolicy enabled="false" />
</runtime>
</configuration>
Сведения о безопасности и FIPS см. в разделе синхронизации хэша паролей Microsoft Entra, шифрования и соответствия FIPS.
Устранение неполадок синхронизации хэша паролей
Если у вас возникли проблемы с синхронизацией хэша паролей, см . раздел "Устранение неполадок синхронизации хэша паролей".