Implement password hash synchronization with Azure AD Connect sync (Implementera synkronisering av lösenordshash med Azure AD Connect-synkronisering)

Den här artikeln innehåller information som du behöver för att synkronisera dina användarlösenord från en lokal Active Directory-instans till en molnbaserad Azure Active Directory-instans (Azure AD).

Så här fungerar hash-synkronisering

Active Directory-domäntjänsten lagrar lösenord i form av en hashvärderepresentation av det faktiska användarlösenordet. Ett hashvärde är ett resultat av en enkelriktad matematisk funktion ( hashalgoritmen). Det finns ingen metod för att återställa resultatet av en envägsfunktion till versionen av ett lösenord med oformaterad text.

Om du vill synkronisera ditt lösenord extraherar Azure AD Connect-synkronisering lösenordshash från lokal Active Directory-instansen. Extra säkerhetsbearbetning tillämpas på lösenordshash innan den synkroniseras till Azure Active Directory-autentiseringstjänsten. Lösenord synkroniseras per användare och i kronologisk ordning.

Det faktiska dataflödet i synkroniseringsprocessen för lösenordshash liknar synkroniseringen av användardata. Lösenord synkroniseras dock oftare än standardkatalogsynkroniseringsfönstret för andra attribut. Synkroniseringsprocessen för lösenordshash körs var 2:e minut. Du kan inte ändra frekvensen för den här processen. När du synkroniserar ett lösenord skriver det över det befintliga molnlösenordet.

Första gången du aktiverar synkroniseringsfunktionen för lösenordshash utför den en första synkronisering av lösenorden för alla användare inom omfånget. Du kan inte uttryckligen definiera en delmängd av användarlösenord som du vill synkronisera. Men om det finns flera anslutningsappar kan du inaktivera synkronisering av lösenordshash för vissa anslutningsappar, men inte andra med cmdleten Set-ADSyncAADPasswordSyncConfiguration .

När du ändrar ett lokalt lösenord synkroniseras det uppdaterade lösenordet, oftast på några minuter. Synkroniseringsfunktionen för lösenordshash försöker automatiskt synkronisera om misslyckade synkroniseringsförsök. Om ett fel uppstår under ett försök att synkronisera ett lösenord loggas ett fel i loggboken.

Synkroniseringen av ett lösenord påverkar inte den användare som för närvarande är inloggad. Den aktuella molntjänstsessionen påverkas inte omedelbart av en synkroniserad lösenordsändring som inträffar när du är inloggad på en molntjänst. Men när molntjänsten kräver att du autentiserar igen måste du ange ditt nya lösenord.

En användare måste ange sina företagsautentiseringsuppgifter en andra gång för att autentisera till Azure AD, oavsett om de är inloggade i företagets nätverk. Det här mönstret kan dock minimeras om användaren markerar kryssrutan Håll mig inloggad (KMSI) vid inloggningen. Det här valet anger en sessionscookie som kringgår autentisering i 180 dagar. KMSI-beteende kan aktiveras eller inaktiveras av Azure AD-administratören. Dessutom kan du minska lösenordsanvisningarna genom att aktivera sömlös enkel inloggning, som automatiskt loggar in användare när de är på sina företagsenheter som är anslutna till företagets nätverk.

Anteckning

Lösenordssynkronisering stöds endast för objekttypsanvändaren i Active Directory. Det stöds inte för objekttypen iNetOrgPerson.

Detaljerad beskrivning av hur synkronisering av lösenordshash fungerar

I följande avsnitt beskrivs ingående hur synkronisering av lösenordshash fungerar mellan Active Directory och Azure AD.

Detaljerat lösenordsflöde

  1. Varannan minut begär synkroniseringsagenten för lösenordshash på AD Connect-servern lagrade lösenordshashvärden (unicodePwd-attributet) från en domänkontrollant. Den här begäran sker via standardprotokollet för MS-DRSR-replikering som används för att synkronisera data mellan domänkontrollanter. Tjänstkontot måste ha behörigheten Replikera katalogändringar och Replikera katalogändringar Alla AD-behörigheter (beviljas som standard vid installationen) för att hämta lösenordshasher.
  2. Innan du skickar krypterar domänkontrollanten MD4-lösenordshashen med hjälp av en nyckel som är en MD5-hash för RPC-sessionsnyckeln och ett salt. Resultatet skickas sedan till synkroniseringsagenten för lösenordshash via RPC. Domänkontrollanten skickar också saltet till synkroniseringsagenten med hjälp av DC-replikeringsprotokollet, så att agenten kan dekryptera kuvertet.
  3. När synkroniseringsagenten för lösenordshash har det krypterade kuvertet använder den MD5CryptoServiceProvider och saltet för att generera en nyckel för att dekryptera mottagna data tillbaka till sitt ursprungliga MD4-format. Synkroniseringsagenten för lösenordshash har aldrig åtkomst till lösenordet för klartext. Lösenordshashsynkroniseringsagentens användning av MD5 är strikt för replikeringsprotokollkompatibilitet med domänkontrollanten och används endast lokalt mellan domänkontrollanten och synkroniseringsagenten för lösenordshash.
  4. Synkroniseringsagenten för lösenordshash utökar hashvärdet för binärt lösenord på 16 byte till 64 byte genom att först konvertera hashen till en hexadecimal sträng på 32 byte och sedan konvertera den här strängen tillbaka till binär med UTF-16-kodning.
  5. Synkroniseringsagenten för lösenordshash lägger till ett salt per användare, bestående av ett salt med 10 bytes längd, till binärfilen på 64 byte för att ytterligare skydda den ursprungliga hashen.
  6. Synkroniseringsagenten för lösenordshash kombinerar sedan MD4-hashen plus saltet per användare och matar in den i PBKDF2-funktionen . 1 000 iterationer av HMAC-SHA256-nyckelhashalgoritmen används. Mer information finns i Azure AD white paper.
  7. Synkroniseringsagenten för lösenordshash tar den resulterande hashen på 32 byte, sammanfogar både per användarsalt och antalet SHA256-iterationer till den (för användning av Azure AD) och överför sedan strängen från Azure AD Anslut till Azure AD via TLS.
  8. När en användare försöker logga in på Azure AD och anger sitt lösenord körs lösenordet via samma MD4+salt+PBKDF2+HMAC-SHA256-process. Om den resulterande hashen matchar hashen som lagras i Azure AD har användaren angett rätt lösenord och autentiseras.

Anteckning

Den ursprungliga MD4-hashen överförs inte till Azure AD. I stället överförs SHA256-hashen för den ursprungliga MD4-hashen. Om hashen som lagras i Azure AD hämtas kan den därför inte användas i en lokal pass-the-hash-attack.

Säkerhetsöverväganden

När du synkroniserar lösenord exponeras inte oformaterad textversion av lösenordet för synkroniseringsfunktionen för lösenordshash, för Azure AD eller någon av de associerade tjänsterna.

Användarautentisering sker mot Azure AD i stället för mot organisationens egen Active Directory-instans. SHA256-lösenordsdata som lagras i Azure AD – en hash för den ursprungliga MD4-hashen – är säkrare än vad som lagras i Active Directory. Eftersom sha256-hashen inte kan dekrypteras kan den dessutom inte föras tillbaka till organisationens Active Directory-miljö och visas som ett giltigt användarlösenord i en pass-the-hash-attack.

Överväganden för lösenordsprinciper

Det finns två typer av lösenordsprinciper som påverkas av aktivering av synkronisering av lösenordshash:

  • Princip för lösenordskomplexitet
  • Förfalloprincip för lösenord

Princip för lösenordskomplexitet

När synkronisering av lösenordshash är aktiverat åsidosätter principerna för lösenordskomplexitet i din lokal Active Directory instans komplexitetsprinciper i molnet för synkroniserade användare. Du kan använda alla giltiga lösenord från din lokal Active Directory-instans för att få åtkomst till Azure AD tjänster.

Anteckning

Lösenord för användare som skapas direkt i molnet omfattas fortfarande av lösenordsprinciper som definieras i molnet.

Förfalloprincip för lösenord

Om en användare är inom omfånget för synkronisering av lösenordshash är lösenordet för molnkontot som standard inställt på Upphör aldrig att gälla.

Du kan fortsätta att logga in på dina molntjänster med ett synkroniserat lösenord som har upphört att gälla i din lokala miljö. Ditt molnlösenord uppdateras nästa gång du ändrar lösenordet i den lokala miljön.

EnforceCloudPasswordPolicyForPasswordSyncedUsers

Om det finns synkroniserade användare som bara interagerar med Azure AD integrerade tjänster och måste följa en lösenordsförfalloprincip kan du tvinga dem att följa din Azure AD förfalloprincip för lösenord genom att aktivera funktionen EnforceCloudPasswordPolicyForPasswordSyncedUsers.

När EnforceCloudPasswordPolicyForPasswordSyncedUsers är inaktiverat (vilket är standardinställningen) anger Azure AD Connect attributet PasswordPolicies för synkroniserade användare till "DisablePasswordExpiration". Detta görs varje gång en användares lösenord synkroniseras och instruerar Azure AD att ignorera förfalloprincipen för lösenord i molnet för användaren. Du kan kontrollera värdet för attributet med hjälp av Azure AD PowerShell-modulen med följande kommando:

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

Om du vill aktivera funktionen EnforceCloudPasswordPolicyForPasswordSyncedUsers kör du följande kommando med hjälp av MSOnline PowerShell-modulen enligt nedan. Du måste skriva ja för parametern Aktivera enligt nedan:

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

När det är aktiverat går Azure AD inte till varje synkroniserad användare för att ta bort DisablePasswordExpiration värdet från attributet PasswordPolicies. DisablePasswordExpiration I stället tas värdet bort från PasswordPolicies vid nästa synkronisering av lösenordshash för varje användare vid nästa lösenordsändring i lokal AD.

När funktionen EnforceCloudPasswordPolicyForPasswordSyncedUsers har aktiverats etableras nya användare utan ett PasswordPolicies-värde.

Vi rekommenderar att du aktiverar EnforceCloudPasswordPolicyForPasswordSyncedUsers innan du aktiverar synkronisering av lösenordshash, så att den första synkroniseringen DisablePasswordExpiration av lösenordshash inte lägger till värdet i attributet PasswordPolicies för användarna.

Standardprincipen för Azure AD lösenord kräver att användarna ändrar sina lösenord var 90:e dag. Om din princip i AD också är 90 dagar ska de två principerna matcha. Men om AD-principen inte är 90 dagar kan du uppdatera Azure AD lösenordsprincipen så att den matchar med hjälp av kommandot Set-MsolPasswordPolicy PowerShell.

Azure AD stöder en separat förfalloprincip för lösenord per registrerad domän.

Varning: Om det finns synkroniserade konton som måste ha lösenord som inte upphör att gälla i Azure AD måste du uttryckligen lägga till DisablePasswordExpiration värdet i attributet PasswordPolicies för användarobjektet i Azure AD. Du kan göra detta genom att köra följande kommando.

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

Anteckning

För hybridanvändare som har värdet PasswordPolicies inställt DisablePasswordExpirationpå växlar det här värdet till efter att None en lösenordsändring har körts lokalt.

Anteckning

Kommandot Set-MsolPasswordPolicy PowerShell fungerar inte på federerade domäner.

Anteckning

Kommandot Set-AzureADUser PowerShell fungerar inte på federerade domäner.

Synkroniserar tillfälliga lösenord och "Framtvinga lösenordsändring vid nästa inloggning"

Det är vanligt att tvinga en användare att ändra sitt lösenord under sin första inloggning, särskilt efter att en återställning av administratörslösenord inträffar. Det kallas ofta för att ange ett "tillfälligt" lösenord och slutförs genom att kontrollera flaggan "Användaren måste ändra lösenord vid nästa inloggning" på ett användarobjekt i Active Directory (AD).

Den tillfälliga lösenordsfunktionen hjälper till att säkerställa att överföringen av ägarskapet för autentiseringsuppgifterna slutförs vid första användningen, för att minimera hur lång tid mer än en individ har kunskap om den autentiseringsuppgiften.

Om du vill ha stöd för tillfälliga lösenord i Azure AD för synkroniserade användare kan du aktivera funktionen ForcePasswordChangeOnLogOn genom att köra följande kommando på Azure AD Connect-servern:

Set-ADSyncAADCompanyFeature -ForcePasswordChangeOnLogOn $true

Anteckning

Att tvinga en användare att ändra sitt lösenord vid nästa inloggning kräver en lösenordsändring samtidigt. Azure AD Connect hämtar inte flaggan för tvingad lösenordsändring i sig. Det är ett komplement till den identifierade lösenordsändringen som inträffar under synkroniseringen av lösenordshash.

Om användaren har alternativet "Lösenordet upphör aldrig att gälla" i Active Directory (AD) anges inte flaggan för tvingad lösenordsändring i Active Directory (AD), så användaren uppmanas inte att ändra lösenordet under nästa inloggning.

Varning

Du bör bara använda den här funktionen när SSPR och tillbakaskrivning av lösenord är aktiverade i klientorganisationen. Detta gör att om en användare ändrar sitt lösenord via SSPR synkroniseras det till Active Directory.

Kontots giltighetstid

Om din organisation använder attributet accountExpires som en del av användarkontohantering synkroniseras inte det här attributet till Azure AD. Därför är ett Active Directory-konto som har upphört att gälla i en miljö som konfigurerats för synkronisering av lösenordshash fortfarande aktiv i Azure AD. Vi rekommenderar att du använder ett schemalagt PowerShell-skript som inaktiverar användarnas AD-konton när de upphör att gälla (använd cmdleten Set-ADUser ). Under processen att ta bort förfallodatumet från ett AD-konto bör kontot däremot återaktiveras.

Skriv över synkroniserade lösenord

En administratör kan återställa lösenordet manuellt med hjälp av Windows PowerShell.

I det här fallet åsidosätter det nya lösenordet ditt synkroniserade lösenord och alla lösenordsprinciper som definierats i molnet tillämpas på det nya lösenordet.

Om du ändrar ditt lokala lösenord igen synkroniseras det nya lösenordet till molnet och det åsidosätter det manuellt uppdaterade lösenordet.

Synkroniseringen av ett lösenord påverkar inte den Azure-användare som är inloggad. Den aktuella molntjänstsessionen påverkas inte omedelbart av en synkroniserad lösenordsändring som sker när du är inloggad på en molntjänst. KMSI förlänger varaktigheten för den här skillnaden. När molntjänsten kräver att du autentiserar igen måste du ange ditt nya lösenord.

Ytterligare fördelar

  • Vanligtvis är synkronisering av lösenordshash enklare att implementera än en federationstjänst. Det kräver inga ytterligare servrar och eliminerar beroendet av en federationstjänst med hög tillgänglighet för att autentisera användare.
  • Synkronisering av lösenordshash kan också aktiveras utöver federation. Den kan användas som reserv om federationstjänsten drabbas av ett avbrott.

Synkroniseringsprocess för lösenordshash för Azure AD Domain Services

Om du använder Azure AD Domain Services för att tillhandahålla äldre autentisering för program och tjänster som behöver använda Kerberos, LDAP eller NTLM är vissa ytterligare processer en del av synkroniseringsflödet för lösenordshash. Azure AD Connect använder följande ytterligare process för att synkronisera lösenordshashvärden för att Azure AD för användning i Azure AD Domain Services:

Viktigt

Azure AD Connect ska endast installeras och konfigureras för synkronisering med lokala AD DS-miljöer. Det går inte att installera Azure AD Connect i en Azure AD DS-hanterad domän för att synkronisera objekt tillbaka till Azure AD.

Azure AD Connect synkroniserar bara äldre lösenordshashvärden när du aktiverar Azure AD DS för din Azure AD klientorganisation. Följande steg används inte om du bara använder Azure AD Anslut för att synkronisera en lokal AD DS-miljö med Azure AD.

Om dina äldre program inte använder NTLM-autentisering eller enkla LDAP-bindningar rekommenderar vi att du inaktiverar synkronisering av NTLM-lösenordshash för Azure AD DS. Mer information finns i Inaktivera svaga chiffersviter och hashsynkronisering för NTLM-autentiseringsuppgifter.

  1. Azure AD Connect hämtar den offentliga nyckeln för klientorganisationens instans av Azure AD Domain Services.
  2. När en användare ändrar sitt lösenord lagrar den lokala domänkontrollanten resultatet av lösenordsändringen (hashvärden) i två attribut:
    • unicodePwd för NTLM-lösenordshashen.
    • supplementalCredentials för Kerberos-lösenordshashen.
  3. Azure AD Connect identifierar lösenordsändringar via katalogreplikeringskanalen (attributändringar som behöver replikeras till andra domänkontrollanter).
  4. För varje användare vars lösenord har ändrats utför Azure AD Connect följande steg:
    • Genererar en slumpmässig AES 256-bitars symmetrisk nyckel.
    • Genererar en slumpmässig initieringsvektor som behövs för den första krypteringsrundan.
    • Extraherar Kerberos-lösenordshashvärden från attributen supplementalCredentials .
    • Kontrollerar inställningen Azure AD Domäntjänsters säkerhetskonfiguration SyncNtlmPasswords.
      • Om den här inställningen är inaktiverad genererar en slumpmässig NTLM-hash med hög entropi (skiljer sig från användarens lösenord). Denna hash kombineras sedan med de exakta Kerberos-lösenordshasharna från attributet supplementalCrendetials till en datastruktur.
      • Om det är aktiverat kombineras värdet för unicodePwd-attributet med de extraherade Kerberos-lösenordshashvärdena från attributet supplementalCredentials till en datastruktur.
    • Krypterar den enskilda datastrukturen med hjälp av den symmetriska AES-nyckeln.
    • Krypterar den symmetriska AES-nyckeln med klientorganisationens offentliga nyckel Azure AD Domain Services.
  5. Azure AD Connect överför den krypterade AES-symmetriska nyckeln, den krypterade datastrukturen som innehåller lösenordshashar och initieringsvektorn till Azure AD.
  6. Azure AD lagrar den krypterade AES-symmetriska nyckeln, den krypterade datastrukturen och initieringsvektorn för användaren.
  7. Azure AD push-överför den krypterade AES-symmetriska nyckeln, den krypterade datastrukturen och initieringsvektorn med hjälp av en intern synkroniseringsmekanism över en krypterad HTTP-session för att Azure AD Domain Services.
  8. Azure AD Domain Services hämtar den privata nyckeln för klientorganisationens instans från Azure Key Vault.
  9. För varje krypterad uppsättning data (som representerar en enskild användares lösenordsändring) utför Azure AD Domain Services sedan följande steg:
    • Använder sin privata nyckel för att dekryptera den symmetriska AES-nyckeln.
    • Använder den symmetriska AES-nyckeln med initieringsvektorn för att dekryptera den krypterade datastrukturen som innehåller lösenordshasher.
    • Skriver Kerberos-lösenordshashar som det tar emot till domänkontrollanten Azure AD Domain Services. Hashvärdena sparas i användarobjektets supplementalCredentials-attribut som krypteras till Azure AD Domänkontrollantens offentliga nyckel.
    • Azure AD Domain Services skriver den NTLM-lösenordshash som den tog emot till domänkontrollanten Azure AD Domain Services. Hashen sparas i användarobjektets unicodePwd-attribut som krypteras till Azure AD Domänkontrollantens offentliga nyckel.

Aktivera hashsynkronisering för lösenord

Viktigt

Om du migrerar från AD FS (eller andra federationstekniker) till synkronisering av lösenordshash rekommenderar vi starkt att du följer vår detaljerade distributionsguide som publiceras här.

När du installerar Azure AD Anslut med alternativet Expressinställningar aktiveras synkronisering av lösenordshash automatiskt. Mer information finns i Komma igång med Azure AD Anslut med expressinställningar.

Om du använder anpassade inställningar när du installerar Azure AD Connect är synkronisering av lösenordshash tillgänglig på användarens inloggningssida. Mer information finns i Anpassad installation av Azure AD Connect.

Aktivera synkronisering av lösenordshash

Synkronisering av lösenordshash och FIPS

Om servern har låsts enligt FIPS (Federal Information Processing Standard) inaktiveras MD5.

Utför följande steg för att aktivera MD5 för synkronisering av lösenordshash:

  1. Gå till %programfiles%\Microsoft Azure AD Sync\Bin.
  2. Öppna miiserver.exe.config.
  3. Gå till noden configuration/runtime i slutet av filen.
  4. Lägg till följande nod: <enforceFIPSPolicy enabled="false"/>
  5. Spara ändringarna.
  6. Starta om för att ändringarna ska börja gälla.

Som referens är det här kodfragmentet hur det ska se ut:

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

Information om säkerhet och FIPS finns i Azure AD synkronisering av lösenordshash, kryptering och FIPS-efterlevnad.

Felsöka synkronisering av lösenordshash

Om du har problem med synkronisering av lösenordshash läser du Felsöka synkronisering av lösenordshash.

Nästa steg