GPO-Chaos: Dein stilles Sicherheitsleck
Gruppenrichtlinien (GPOs) sind eines der mächtigsten Werkzeuge in Active Directory. Sie steuern alles – von Passwortrichtlinien über Firewall-Einstellungen bis hin zu Software-Deployments.
Doch in vielen Umgebungen sind GPOs ein gewachsenes Chaos:
- Jahrzehnte alte Richtlinien wurden nie gelöscht
- Vererbungen sind unübersichtlich
- Sicherheitsfilter fehlen oder sind falsch gesetzt
- Legacy-Einstellungen öffnen Angreifern Tür und Tor
Was als Ordnungsinstrument gedacht war, wird so schnell zum Sicherheitsleck.
Typische Risiken durch GPOs
- Verwaiste GPOs
- Fehlende Sicherheitsfilterung
- Komplexe Vererbung
- Unsichere Legacy-Settings
– GPOs, die an keine OU, Site oder Domain mehr gebunden sind
– Enthalten oft noch unsichere Einstellungen (z. B. alte Skripte oder Registry Keys)
– GPO wirkt auf mehr Systeme oder Benutzer als nötig
– Angreifer profitieren von zu breiter Anwendung
– Verschachtelte OUs + „Block Inheritance“ + „Enforced“ = niemand weiß mehr, was wirklich greift
– Alte Passwort-Policies (LM/NTLMv1 zulassen)
– Unsichere Anmeldeskripte
– Offen konfigurierte Firewall-Regeln
Schritt 1: Überblick schaffen
Alle GPOs auflisten
Get-GPO -All | Select-Object DisplayName, CreationTime, ModificationTime
GPO-Gesamtbericht erzeugen (HTML)
Get-GPOReport -All -ReportType HTML -Path "C:\Temp\AllGPOs.html"
Ergebnis: Komplette Übersicht aller Richtlinien in einem HTML-Bericht.
Schritt 2: Verwaiste (“unlinked”) GPOs identifizieren
Variante A – sauber per XML analysieren
$reports = Get-GPO -All | ForEach-Object {
[pscustomobject]@{
Guid = $_.Id
Name = $_.DisplayName
Xml = [xml](Get-GPOReport -Guid $_.Id -ReportType Xml)
}
}
$unlinked = $reports | Where-Object { -not $_.Xml.GPO.LinksTo }
$unlinked | Select-Object Name, Guid | Sort-Object Name | Format-Table -AutoSize
Variante B – Quick & Dirty (Stringsuche)
Get-GPO -All | Where-Object {
-not (Get-GPOReport -Guid $_.Id -ReportType Xml | Select-String '')
} | Select-Object DisplayName, Id | Sort-Object DisplayName
Schritt 3: Sicherheitsfilterung prüfen
Standardfehler: “Authenticated Users” hat Apply-Rechte → GPO greift breit
Besser: Nur benötigte Gruppen oder Computer gezielt berechtigen
Berechtigungen (Security Filtering) anzeigen
Get-GPPermission -Guid-All | Select-Object Trustee, Permission, Type
Prüfen, ob „Authenticated Users“ noch Apply-Rechte hat:
$gpo = '<GPO-GUID-HIER>'
Get-GPPermission -Guid $gpo -All |
Where-Object { $_.Trustee.Name -eq 'Authenticated Users' } |
Select-Object Trustee, Permission, Type
Schritt 4: Unsichere Einstellungen bereinigen
- Kennwortrichtlinien: LM/NTLMv1 deaktivieren; sichere Mindestlänge/Komplexität
- Skripte: Alte Logon-Skripte (Batch, VBS) ablösen; signierte PowerShell-Skripte, AppLocker/WDAC & ggf. Constrained Language Mode nutzen
- Firewall: Keine „Any Any“; eingehende Regeln auf das Minimum beschränken, ausgehende Regeln prüfen
- Registry Settings: Nur dokumentierte, aktuelle Werte verwenden; Altlasten entfernen
Get-GPResultantSetOfPolicy -ReportType Html -Path "C:\Temp\RSOP.html"
# oder klassisch:
gpresult /H C:\Temp\RSOP.html
Best Practices für saubere GPOs
- Dokumentation einführen
- Namenskonventionen verwenden
- Minimalprinzip anwenden
- Regelmäßige Reviews
- Automatisches Reporting
– Jede GPO braucht einen Owner, Erstellungsdatum, Zweck und Zielgruppe
– Beispiel:
SEC-PasswordPolicy, WSUS-Clients, APP-OfficeSettings
– Lieber mehrere kleine, gezielte GPOs statt einer „All-in-One-Richtlinie“
– Mindestens jährlich alle GPOs durchgehen, veraltete löschen oder archivieren (Backup + Disabled)
– Monatliche GPO-Berichte per Scheduled Task generieren und an das Admin-Team senden
Checkliste: GPO-Health-Audit
- Unlinked GPOs gelöscht oder archiviert
- Sicherheitsfilterung geprüft – keine unnötige Breite
- Passwort- und Kerberos-Policies auf aktuelle Standards gesetzt
- Alte Skripte entfernt oder ersetzt
- Firewall- und Registry-Einstellungen überprüft
- Namenskonventionen und Dokumentation umgesetzt
Fazit
Gruppenrichtlinien sind ein Machtinstrument – aber ohne Pflege werden sie schnell zum Sicherheitsrisiko.
Alte, unübersichtliche oder falsch konfigurierte GPOs bieten Angreifern oft einfache Einstiegspunkte.
Mit etwas Konsequenz und den richtigen Cmdlets lässt sich das Chaos schnell in den Griff bekommen – und das AD gewinnt massiv an Stabilität und Sicherheit.