Implementar a sincronização do hash de palavras-passe com a sincronização do Azure AD Connect

Este artigo fornece informações de que precisa de sincronizar as suas palavras-passe de utilizador de uma instância Ative Directory no local para um caso de Diretório Ativo (Azure AD) baseado na nuvem.

Como funciona a sincronização do hash de palavras-passe

O Active Directory Domain Services armazena palavras-passe na forma de uma representação de um valor de hash, da palavra-passe do utilizador. Os valores de hash são o resultado de uma função matemática unidirecional (o algoritmo hash). Não existe nenhum método para reverter o resultado de uma função unidirecional para a versão de texto simples de uma palavra-passe.

Para sincronizar a palavra-passe, a sincronização do Azure AD Connect extrai o hash da palavra-passe da instância do Active Directory no local. É aplicado um processo de segurança extra ao hash de palavras-passe antes de ser sincronizado com serviço de autenticação do Azure Active Directory. As palavras-passe são sincronizadas por utilizador e por ordem cronológica.

O fluxo de dados real do processo de sincronização do hash de palavras-passe é semelhante à sincronização dos dados do utilizador. No entanto, as palavras-passe são sincronizadas com mais frequência do que a janela de sincronização padrão de diretório para outros atributos. O processo de sincronização do hash de palavras-passe é executado a cada 2 minutos. Não é possível modificar a frequência deste processo. Quando sincroniza uma palavra-passe, substitui a palavra-passe em nuvem existente.

A primeira vez que ativa a funcionalidade de sincronização do hash de palavras-passe, é executada uma sincronização inicial das palavras-passe de todos os utilizadores no âmbito. Não é possível definir explicitamente um subconjunto de palavras-passe do utilizador que pretende sincronizar. Todavia, se existirem vários conectores, é possível desativar a sincronização do hash de palavras-passe para alguns conectores, mas não para outros que utilizam o cmdlet Set-ADSyncAADPasswordSyncConfiguration.

Quando altera uma palavra-passe no local, a palavra-passe atualizada é sincronizada, na maioria das vezes em questão de minutos. A funcionalidade de sincronização do hash de palavras-passe tenta novamente e de forma automática sincronizar as tentativas falhadas. Se ocorrer um erro durante uma tentativa de sincronizar uma palavra-passe, é registado um erro no seu visualizador de eventos.

A sincronização de uma palavra-passe não tem qualquer impacto no utilizador que está atualmente inscrito. A sua sessão de serviço na nuvem atual não é imediatamente afetada por uma alteração de senha sincronizada que ocorre, enquanto estiver assinado, num serviço de cloud. No entanto, quando o serviço de cloud requer que volte a autenticar, tem de fornecer a sua nova palavra-passe.

Um utilizador deve introduzir as suas credenciais corporativas uma segunda vez para autenticar para Azure AD, independentemente de se inscrever na sua rede corporativa. Este padrão pode ser minimizado, no entanto, se o utilizador selecionar a caixa de verificação Keep me signed in (KMSI) no início de sação. Esta seleção define um cookie de sessão que contorna a autenticação durante 180 dias. O comportamento kmsi pode ser ativado ou desativado pelo administrador Azure AD. Além disso, pode reduzir as solicitações de palavra-passe ligando o Seamless SSO, que automaticamente assina os utilizadores quando estão nos seus dispositivos corporativos ligados à sua rede corporativa.

Nota

A sincronização de palavra-passe só é suportada para o utilizador do tipo de objeto no Ative Directory. Não é suportado para o tipo de objeto iNetOrgPerson.

Descrição detalhada do funcionamento da sincronização do hash de palavras-passe

A secção seguinte descreve detalhadamente o funcionamento da sincronização do hash de palavras-passe entre o Active Directory e o Azure Active Directory.

Fluxo de senha detalhado

  1. A cada dois minutos, o agente de sincronização do hash de palavras-passe no servidor do AD Connect pede os hashes de palavras-passe armazenados (o atributo unicodePwd) a um DC. Este pedido é através do protocolo padrão de replicação MS-DRSR utilizado para sincronizar dados entre DCs. A conta de serviço necessita de ter permissões para Replicar Alterações para o Diretório e Replicar Todas as Alterações para o Diretório (concedidas por predefinição durante a instalação) para obter os hashes de palavras-passe.
  2. Antes de enviar, o DC encripta o hash de palavras-passe MD4 com uma chave que é um hash MD5 da chave de sessão RPC e um salt. Em seguida, envia o resultado para o agente de sincronização do hash de palavras-passe através do RPC. O DC também passa o sal para o agente de sincronização usando o protocolo de replicação de DC, para que o agente possa desencriptar o envelope.
  3. Depois de o agente de sincronização do hash de palavras-passe ter o envelope encriptado, utiliza o MD5CryptoServiceProvider e o salt para gerar uma chave para desencriptar os dados recebidos de volta ao formato MD4 original. O agente de sincronização do hash de palavras-passe nunca tem acesso ao texto simples da palavra-passe. A utilização do MD5 pelo agente de sincronização do hash de palavras-passe é estritamente para compatibilidade do protocolo de replicação com o DC e só é utilizada no ambiente no local entre o DC e o agente de sincronização do hash de palavras-passe.
  4. O agente de sincronização do hash de palavras-passe expande o hash de palavras-passe binário de 16 bytes para 64 bytes ao converter primeiro o hash numa cadeia hexadecimal de 32 bytes e, em seguida, ao converter esta cadeia de volta num binário com codificação UTF-16.
  5. O agente de sincronização do hash de palavras-passe adiciona um salt por utilizador, constituído por um salt de 10 bytes, ao binário de 64 bytes para aumentar a proteção original do hash.
  6. Em seguida, o agente de sincronização do hash de palavras-passe combina o hash MD4 e o salt por utilizador e introduz o mesmo na função PBKDF2. São utilizadas 1000 iterações do algoritmo de hash com a chave HMAC-SHA256. Para mais detalhes, consulte o Azure AD Whitepaper.
  7. O agente de sincronização do hash de palavras-passe assume o hash de 32 byte resultante, concatena o salt por utilizador e o número de iterações SHA256 (para utilização pelo Azure Active Directory) e, em seguida, transmite a cadeia de carateres do Azure AD Connect para o Azure Active Directory através do TLS.
  8. Quando um utilizador tenta iniciar sação para Azure AD e introduzir a sua palavra-passe, a palavra-passe é executada através do mesmo processo MD4+sal+PBKDF2+HMAC-SHA256. Se o hash resultante corresponder ao hash armazenado no Azure Active Directory, significa que o utilizador introduziu a palavra-passe correta e é autenticado.

Nota

O hash MD4 original não é transmitido ao Azure Active Directory. Em vez disso, é transmitido o hash SHA256 do hash MD4 original. Como resultado, se o hash armazenado no Azure Active Directory for obtido, não poderá ser utilizado num ataque Pass-the-Hash no local.

Considerações de segurança

Ao sincronizar palavras-passe, a versão em texto simples da palavra-passe não é exposta à funcionalidade de sincronização do hash de palavras-passe no Azure Active Directory nem em qualquer serviço associado.

A autenticação do utilizador ocorre contra Azure AD e não contra a própria instância ative do Diretório da organização. Os dados de palavra-passes SHA256 armazenados no Azure Active Directory – um hash do hash MD4 original – estão mais seguros do que os dados armazenados no Active Directory. Além disso, como este hash SHA256 não pode ser desencriptado, também não poderá ser levado de volta para o ambiente do Active Directory da organização e apresentado como uma palavra-passe válida de um utilizador durante um ataque Pass-the-Hash.

Considerações de política de palavra-passe

Existem dois tipos de políticas de palavras-passe que são afetadas ao ativar a sincronização do hash de palavras-passe:

  • Política de complexidade de palavras-passe
  • Política de expiração da palavra-passe

Política de complexidade de palavras-passe

Quando a sincronização do hash de palavras-passe é ativada, as políticas de complexidade de palavras-passe na instância do Active Directory no local substituem as políticas de complexidade na cloud dos utilizadores sincronizados. Pode utilizar todas as palavras-passe válidas da sua Ative Directory no local instância para aceder aos serviços Azure AD.

Nota

As palavras-passe para os utilizadores que são criados diretamente na nuvem ainda estão sujeitas a políticas de senhas, tal como definidas na nuvem.

Política de expiração da palavra-passe

Se um utilizador estiver no âmbito da sincronização do hash de palavras-passe, por predefinição, a palavra-passe da conta cloud será definida como Nunca Expirar.

Pode continuar a iniciar súm na sua nuvem utilizando uma palavra-passe sincronizada que está expirada no seu ambiente no local. A sua palavra-passe de cloud é atualizada da próxima vez que alterar a palavra-passe no ambiente no local.

ImporCloudPasswordPolicyForPasswordSyncedUsers

Se existirem utilizadores sincronizados que interagem apenas com Azure AD serviços integrados e que também devem cumprir uma política de expiração da palavra-passe, pode forçá-los a cumprir a sua Azure AD política de expiração da palavra-passe, permitindo a funcionalidade EnforceCloudPasswordPolicyForPasswordSyncedUsers.

Quando o EnforceCloudPasswordPolicyForPasswordSyncedUsers é desativado (que é a definição padrão), Azure AD Connect define o atributo PasswordPolicies de utilizadores sincronizados para "DisablePasswordExpiration". Isto é feito sempre que a palavra-passe de um utilizador é sincronizada e instrui Azure AD ignorar a política de validade da palavra-passe na nuvem para esse utilizador. Pode verificar o valor do atributo utilizando o módulo Azure AD PowerShell com o seguinte comando:

(Get-AzureADUser -objectID <User Object ID>).passwordpolicies

Para ativar a funcionalidade EnforceCloudPasswordPolicyForPasswordSyncedUsers, executa o seguinte comando utilizando o módulo MSOnline PowerShell, conforme mostrado abaixo. Você teria que escrever sim para o parâmetro Enable como mostrado abaixo :

Set-MsolDirSyncFeature -Feature EnforceCloudPasswordPolicyForPasswordSyncedUsers
cmdlet Set-MsolDirSyncFeature at command pipeline position 1
Supply values for the following parameters:
Enable: yes
Confirm
Continue with this operation?
[Y] Yes [N] No [S] Suspend [?] Help (default is "Y"): y

Uma vez ativado, Azure AD não vai a cada utilizador sincronizado para remover o DisablePasswordExpiration valor do atributo PasswordPolicies. Em vez disso, o DisablePasswordExpiration valor é removido da PasswordPolicies durante a próxima sincronização de haxixe de palavra-passe para cada utilizador, após a sua próxima alteração de palavra-passe no AD no local.

Após a ativação da funcionalidade EnforceCloudPasswordPolicyForPasswordSyncedUsers , os novos utilizadores são aprovisionados sem um valor PasswordPolicies.

Recomenda-se ativar o EnforceCloudPasswordPolicyForPasswordSyncedUsers antes de permitir a sincronização de hash de palavra-passe, de modo a que a sincronização inicial dos hashes de palavra-passe não adicione o DisablePasswordExpiration valor ao atributo PasswordPolicies para os utilizadores.

A política de Azure AD palavra-passe por defeito requer que os utilizadores alterem as suas palavras-passe a cada 90 dias. Se a sua política em AD também for de 90 dias, as duas políticas devem coincidir. No entanto, se a política de AD não for de 90 dias, pode atualizar a política de palavra-passe Azure AD para coincidir utilizando o comando powerShell Set-MsolPasswordPolicy.

Azure AD suporta uma política de validade de senha separada por domínio registado.

Caveat: Se existirem contas sincronizadas que necessitem de ter senhas não expiradas em Azure AD, deve adicionar explicitamente o DisablePasswordExpiration valor ao atributo PasswordPolicies do objeto do utilizador em Azure AD. Pode fazê-lo executando o seguinte comando.

Set-AzureADUser -ObjectID <User Object ID> -PasswordPolicies "DisablePasswordExpiration"

Nota

Para os utilizadores híbridos que tenham um valor PasswordPolicies definido para DisablePasswordExpiration, este valor muda para None depois de uma alteração de palavra-passe ser executada no local.

Nota

O comando Set-MsolPasswordPolicy PowerShell não funcionará em domínios federados.

Nota

O comando Set-AzureADUser PowerShell não funcionará em domínios federados.

Sincronizar senhas temporárias e "Alterar palavras-passe no próximo logon"

É típico forçar um utilizador a alterar a sua palavra-passe durante a sua primeira sposição, especialmente depois de ocorrer um reset da palavra-passe de administração. É vulgarmente conhecida como definição de uma palavra-passe "temporária" e é completada verificando a bandeira "User must change at next logon" num objeto de utilizador em Ative Directy (AD).

A funcionalidade de senha temporária ajuda a garantir que a transferência de propriedade da credencial seja concluída na primeira utilização, para minimizar a duração do tempo em que mais de um indivíduo tem conhecimento dessa credencial.

Para suportar palavras-passe temporárias em Azure AD para utilizadores sincronizados, pode ativar a função ForcePasswordChangeOnLogOn, executando o seguinte comando no seu servidor Azure AD Connect:

Set-ADSyncAADCompanyFeature -ForcePasswordChangeOnLogOn $true

Nota

Forçar um utilizador a alterar a sua palavra-passe no próximo logor o logo requer uma alteração de palavra-passe ao mesmo tempo. O Azure AD Connect não seleciona o sinalizador para forçar a alteração da palavra-passe automaticamente; é complementar à alteração da palavra-passe detetada que ocorre durante a sincronização do hash de palavras-passe.

Se o utilizador tiver a opção "Password nunca expira" definida no Ative Directory (AD), a bandeira de alteração de senha de força não será definida no Ative Directory (AD), pelo que o utilizador não será solicitado a alterar a palavra-passe durante o próximo pré-in.

Atenção

Só deve utilizar esta funcionalidade quando a writeback SSPR e Password estiverem ativadas no arrendatário. Isto é para que, se um utilizador alterar a sua palavra-passe através de SSPR, seja sincronizado com o Ative Directory.

Expiração da conta

Se a sua organização utilizar o atributo Despires como parte da gestão da conta de utilizador, este atributo não é sincronizado para Azure AD. Como resultado, a conta do Ative Directory expirada num ambiente configurado para sincronização do hash de palavras-passe continuará ativa no Azure Active Directory. Recomendamos a utilização de um script PowerShell programado que desative as contas AD dos utilizadores, uma vez expiradas (utilize o cmdlet Set-ADUser ). Inversamente, durante o processo de remoção da expiração de uma conta AD, a conta deve ser re-habilitada.

Palavras-passe sincronizadas de substituição

Um administrador pode redefinir manualmente a sua palavra-passe utilizando Windows PowerShell.

Neste caso, a nova palavra-passe substitui a sua palavra-passe sincronizada e todas as políticas de palavra-passe definidas na nuvem são aplicadas à nova palavra-passe.

Se alterar novamente a palavra-passe no local, a nova palavra-passe é sincronizada na nuvem e substitui a palavra-passe atualizada manualmente.

A sincronização de uma palavra-passe não tem qualquer impacto no utilizador do Azure que se inscreve. A sua sessão atual de serviço na nuvem não é imediatamente afetada por uma alteração de senha sincronizada que ocorre enquanto está inscrito num serviço de cloud. A KMSI prolonga a duração desta diferença. Quando o serviço de nuvem requer que volte a autenticar, tem de fornecer a sua nova palavra-passe.

Vantagens adicionais

  • Geralmente, a sincronização do hash de palavras-passe é mais simples de implementar do que um serviço de federação. Não requer nenhum servidor adicional, e elimina a dependência de um serviço de federação altamente disponível para autenticar os utilizadores.
  • A sincronização do hash de palavras-passe também pode ser ativada em conjunto com a federação. Pode ser usado como recuo se o seu serviço de federação sofrer uma paragem.

Processo de sincronização do hash de palavras-passe para o Azure AD Domain Services

Se utilizar o Azure AD Domain Services para permitir a autenticação legada para aplicações e serviços que necessitem de utilizar Kerberos, LDAP ou NTLM, alguns processos adicionais fazem parte do fluxo de sincronização do hash de palavras-passe. O Azure AD Connect utiliza o seguinte processo adicional para sincronizar os hashes de palavras-passe com o Azure Active Directory para utilização no Azure AD Domain Services:

Importante

Azure AD Connect só deve ser instalado e configurado para sincronização com ambientes AD DS no local. Não é suportado para instalar Azure AD Connect num domínio gerido Azure AD DS para sincronizar objetos de volta ao Azure AD.

A Azure AD Connect só sincroniza hashes de palavras-passe legados quando ativa o Azure AD DS para o inquilino do Azure Active Directory. Os seguintes passos não são utilizados se utilizar apenas Azure AD Connect para sincronizar um ambiente AD DS no local com Azure AD.

Se as aplicações legadas não utilizarem a autenticação NTLM ou os enlaces simples LDAP, recomendamos que desative a sincronização do hash de palavras-passe NTLM para o Azure AD DS. Para obter mais informações, veja Desativar os conjuntos de cifras fracos e a sincronização do hash de credenciais NTLM.

  1. Azure AD Connect recupera a chave pública para o caso do inquilino de Azure AD Serviços de Domínio.
  2. Quando um utilizador altera a palavra-passe, o controlador de domínio no local armazena o resultado da alteração de palavras-passe (hashes) em dois atributos:
    • unicodePwd para o hash de palavra-passe NTLM.
    • supplementalCredentials para o hash de palavra-passe Kerberos.
  3. Azure AD Connect deteta alterações de palavra-passe através do canal de replicação do diretório (atribui alterações que precisam de se replicar para outros controladores de domínio).
  4. Para cada utilizador cuja palavra-passe foi alterada, Azure AD Connect executa os seguintes passos:
    • Gera uma chave simétrica AES de 256 bits aleatória.
    • Gera um vetor de inicialização aleatório necessário para a primeira ronda de encriptação.
    • Extrai os hashes de palavras-passe Kerberos dos atributos supplementalCredentials.
    • Verifica a configuração de segurança de Azure AD Serviços de Domínio Sincronização SyncNtlmPasswords.
      • Se esta definição estiver desativada, será gerado um hash NTLM aleatório de entropia elevada (diferente da palavra-passe do utilizador). Este hash é, em seguida, combinado com os hashes de palavra-passe Kerberos exatos do atributo supplementalCrendetials numa única estrutura de dados.
      • Se ativado, combina o valor do atributo unicodePwd com os hashes de palavra-passe Kerberos extraídos do atributo supplementalCredentials numa única estrutura de dados.
    • Encripta a estrutura de dados única utilizando a chave simétrica AES.
    • Encripta a chave simétrica AES utilizando a chave pública Azure AD Domain Services do arrendatário.
  5. O Azure AD Connect transmite a chave simétrica encriptada AES, a estrutura de dados encriptada que contém os hashes de palavras-passe e o vetor de inicialização ao Azure Active Directory.
  6. Azure AD armazena a chave simétrica encriptada da AES, a estrutura de dados encriptada e o vetor de inicialização para o utilizador.
  7. Azure AD empurra a chave simétrica encriptada da AES, a estrutura de dados encriptada e o vetor de inicialização usando um mecanismo interno de sincronização sobre uma sessão HTTP encriptada para Azure AD Serviços de Domínio.
  8. Azure AD Domain Services recupera a chave privada para a instância do inquilino do cofre Azure Key.
  9. Para cada conjunto de dados encriptados (que representam a alteração da palavra-passe de um único utilizador), Azure AD Domain Services executa então os seguintes passos:
    • Usa a sua chave privada para desencriptar a chave simétrica AES.
    • Utiliza a chave simétrica AES com o vetor de inicialização para desencriptar a estrutura de dados encriptada que contém os hashes de palavras-passe.
    • Escreve os hashes de palavras-passe Kerberos que recebe no controlador de domínio do Azure AD Domain Services. Os hashes são guardados no atributo supplementalCredentials do objeto do utilizador que é encriptado para a chave pública do controlador de domínio do Azure AD Domain Services.
    • O Azure AD Domain Services escreve o hash de palavra-passe NTLM que recebeu no controlador de domínio do Azure AD Domain Services. O hash é guardado no atributo unicodePwd do objeto do utilizador que é encriptado para a chave pública do controlador de domínio do Azure AD Domain Services.

Ativar a sincronização do hash de palavras-passe

Importante

Se estiver a migrar de AD FS (ou outras tecnologias de federação) para a Sincronização do Hash de Palavras-passe, recomendamos vivamente que siga o nosso guia de implementação detalhado disponível aqui.

Quando instala o Azure AD Connect com a opção Definições Expresso, a sincronização do hash de palavras-passe é ativada automaticamente. Para obter mais informações, consulte Começar com Azure AD Ligar utilizando as definições expressas.

Se utilizar definições personalizadas quando instalar o Azure AD Connect, a sincronização do hash de palavras-passe estará disponível na página de início de sessão do utilizador. Para mais informações, consulte a instalação personalizada de Azure AD Connect.

Ativar a sincronização do hash de palavras-passe

Sincronização do hash de palavras-passe e FIPS

Se o seu servidor tiver sido bloqueado de acordo com a Norma Federal de Processamento de Informação (FIPS), então o MD5 está desativado.

Para ativar a sincronização do hash de palavras-passe MD5, execute os seguintes passos:

  1. Vá a %programfiles%\Microsoft Azure AD Sync\Bin.
  2. Abra miiserver.exe.config.
  3. Vá para o nó de configuração/tempo de execução no final do ficheiro.
  4. Adicione o seguinte nó: <enforceFIPSPolicy enabled="false"/>
  5. Guarde as alterações.
  6. Reinicie para que as alterações entrem em vigor.

Para referência, este corte é o que deve parecer:

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

Para obter informações sobre segurança e a política FIPS, veja Sincronização do hash de palavras-passe, encriptação e conformidade com a política FIPS do Azure Active Directory.

Resolver problemas com a sincronização do hash de palavras-passe

Se tiver problemas com a sincronização do hash de palavras-passe, veja Resolver problemas com a sincronização do hash de palavras-passe.

Passos seguintes