GPO-Replikation: SYSVOL-Berechtigungen für mindestens ein Gruppenrichtlinienobjekt sind nicht synchron

In einem Multi-Domänen Forest werden die GPOs zwischen den Domänencontrollern der einzelnen Active Directories repliziert. Dabei werden neben den Einstellungen auch die Rechte verteilt. Laufen die DCs auf unterschiedlichen Windows Server Versionen, kann es vorkommen, dass bei der Replikation der Gruppenrichtlinienobjekte Fehler auftreten. In diesem Blogeintrag werden wir den folgenden ACL-Fehler genauer betrachten, der in Umgebungen, die eine Kombination von Domänencontrollern in den Versionen 2012 R2 (oder älter) und 2016 (oder neuer) verwenden, auftreten kann:

„Die SYSVOL-Berechtigungen für mindestens ein Gruppenrichtlinienobjekt auf diesem Domänencontroller sind mit den Berechtigungen für die Gruppenrichtlinienobjekte auf dem Basisdomänencontroller nicht synchronisiert.“ (Engl.: „The SYSVOL permissions of one or more GPO's on this domain controller are not in sync with the permissions for the GPO's on the Baseline domain controller.”)

Ein erster Anhaltspunkt zur Lösung des Problems wäre, die Rechte der betroffenen Gruppenrichtlinienobjekte auf den verschiedenen Domänencontrollern zu vergleichen. Dafür kann die Gruppenrichtlinienverwaltung auf den DCs zu Rate gezogen werden:

Das Problem hierbei ist jedoch, dass bei o.g. Fehler üblicherweise keine Unterschiede zwischen den Rechten erkennbar sind. An diesem Punkt bietet sich die PowerShell an, um dem Problem weiter auf den Grund zu gehen. Mithilfe des Befehls icacls [1] lassen sich die Access Control Listen von GPOs genauer betrachten:

icacls “C:\Windows\SYSVOL\domain\Policies\<GPO UID>”

Wie man sieht werden hier weitere Gruppen mit Rechten angezeigt, die in der GUI nicht ersichtlich waren. Dazu zählt der Account Creator Owner, aber auch die doppelte Gruppe der Domain Admins.

Diese doppelten Domain Admins werden ausschließlich von Servern der Versionen 2012 R2 und älter beim Erstellen neuer Gruppenrichtlinienobjekte hinzugefügt. Werden solche Objekte auf neuere Systeme repliziert (2016 und neuer) und betrachtet man dort die Ausgabe des Befehls, wird man feststellen, dass dort lediglich ein Eintrag zu den Domain Admins zu finden ist:

Diese Differenz zwischen den Ausgaben stellt den Grund für das Auftreten des o.g. ACL-Fehlers dar: Systeme ab WS 2016 löschen doppelte ACL-Einträge, weswegen sich anschließend die Berechtigungen der GPOs auf den verschiedenen Domänencontrollern unterscheiden.

Um den Fehler zu lösen, kann wiederum der icacls-Befehl verwendet werden:

  • Löschen aller Domain Admins aus einer betroffenen GPO:

    icacls "C:\Windows\SYSVOL\domain\Policies\$policy" /remove:g "<DomainName>\Domain Admins"
  • Hinzufügen eines einzelnen Domain Admins zur betroffenen GPO mit den Standardrechten:

    icacls "C:\Windows\SYSVOL\domain\Policies\$policy" /grant "<DomainName>\Domain Admins:(OI)(CI)(F)"

Um Probleme bei nachfolgenden Replikationen zu unterbinden, sollten diese Schritte auf jedem Domänencontroller für die betroffene GPO durchgeführt werden. Anschließend sollte eine Replikation angestoßen werden.

  • Führen Sie dazu die beiden Befehle aus:

    repadmin /syncall
    repadmin /syncall /AdePq

Falls mehrere GPOs von dem Fehler betroffen sind, können mithilfe des folgenden Skripts alle GPOs eines Domänencontrollers gleichzeitig korrigiert werden:

$Policies = Get-ChildItem C:\Windows\SYSVOL\domain\Policies -Name -Filter "{*}"
foreach ($Policy in $Policies) {
   icacls "C:\Windows\SYSVOL\domain\Policies\$policy" /remove:g "<DomainName>\Domain Admins" 
   icacls "C:\Windows\SYSVOL\domain\Policies\$policy" /grant "<DomainName>\Domain Admins:(OI)(CI)(F)" 
   icacls "C:\Windows\SYSVOL\domain\Policies\$policy"
}

Auch das Skript sollte auf allen Domänencontrollern ausgeführt werden. Anschließend ist auch hier das Anstoßen einer Replikation notwendig. Danach sollte der ACL-Fehler behoben sein. Bitte beachten Sie, dass Sie zukünftig nur noch auf den neueren Maschinen (2016 und neuer) neue GPOs erstellen, da diese keine zweiten Domain Admins in die Access Control Listen eintragen und dadurch das Wiederauftreten des Problems verhindert wird.

[1] https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/icacls