Tags: Active Directory, PowerShell
Bekanntlich lassen sich im Active Directory Regeln definieren, die Benutzer an der Verwendung zu schwacher Passwörter hindern oder die bestimmen, nach wie vielen Fehleingaben ein Konto gesperrt wird. Alternativ zu GUI-Tools wie AD Benutzer und Computer kann PowerShell diese Aufgabe übernehmen.
Standardmäßig gibt das AD über die Default Domain Policy für User in allen OUs und Gruppen vor, wie Passwörter auszusehen haben, wie lange man sie nutzen kann oder wann man sie wiederverwenden darf.
Seit Windows Server 2008 besteht zudem die Möglichkeit, über Fine-grained Password Policies separate Regeln für bestimmte User oder Gruppen zu definieren. Sowohl diese spezifischen als auch die domänenweiten Regeln lassen sich über PowerShell bearbeiten.
Kennwortregeln der Domäne
Für die beiden verschiedenen Policies sind jeweils eigenen Cmdlets zuständig. Auf Domänenebene verwendet man Get-ADDefaultDomainPasswordPolicy und Set-ADDefaultDomainPasswordPolicy, um die Regeln abzurufen bzw. zu verändern.
Ersteres ist relativ einfach, da man als notwendigen Parameter nur den Namen der Domäne in einer der zulässigen Formen übergeben muss. Die kürzeste Variante ohne Parameter nimmt jene Domäne, an welcher man selbst angemeldet ist.
Alternativ kann man natürlich den Namen einer Domäne explizit angeben, etwa als Distinguished Name (z.B. DC=contoso,DC=com) oder als DNS-Name:
Get-ADDefaultDomainPasswordPolicy contoso.com
Die von diesem Befehl ausgegebenen Eigenschaften der Passwort-Policy lassen sich mit Set-ADDefaultDomainPasswordPolicy einzelnen verändern. Dafür stehen folgende Parameter zur Verfügung:
- ComplexityEnabled (wenn aktiviert, dann müssen Kennwörter Groß- und Kleinbuchstaben oder wahlweise Ziffern enthalten. Zulässige Werte sind 0 und 1 bzw. $true und $false)
- LockoutDuration (Dauer der Kontosperre im Format Tag.Stunden:Minuten)
- LockoutObservationWindow (max. Zeitspanne zwischen ungültigen Anmeldeversuchen, bevor der Zähler auf 0 zurückgesetzt wird)
- LockoutThreshold (Zahl der gescheiterten Anmeldeversuche, bevor ein Konto gesperrt wird)
- MaxPasswordAge (max. Zeitraum, in dem ein User das gleiche Passwort verwenden darf)
- MinPasswordAge (Zeitraum, der mindestens verstreichen muss, bevor man das Passwort ändern darf)
- MinPasswordLength (Mindestläge von Passwörtern)
- PasswordHistoryCount (Zahl der verwendeten Passwörter, die im AD gespeichert werden sollen. Sie dürfen vom Benutzer nicht wiederverwendet werden.)
- ReversibleEncryptionEnabled
Möchte man zum Beispiel die Zahl der gespeicherten Kennwörter auf 10 festlegen, dann erledigt dies folgender Befehl:
Set-ADDefaultDomainPasswordPolicy contoso.com -PasswordHistoryCount 10
Fine-grained Password Policies bearbeiten
Bei fine-grained Password Policies ist das Vorgehen weitgehend identisch mit jenem für die Default Domain Policy. Ein Unterschied besteht indes darin, dass man pro Domäne mehrere davon haben kann. Daher wird man häufig überhaupt erst herausfinden wollen, welche bisher erstellt wurden:
Get-ADFineGrainedPasswordPolicy -Filter *
Dieser Aufruf listet alle Policy-Objekte auf.
Bei Bedarf kann man den Filter so modifizieren, dass er nur auf bestimmte Namen zutrifft, etwa -Filter {Name -like "*admin*"}. Möchte man zusätzlich wissen, welchen Benutzern und Gruppen eine solche Policy zugeordnet wurde, dann gibt darüber
Get-ADFineGrainedPasswordPolicySubject <Name der Fine-grained Policy>
Auskunft. Alternativ kann man die Ausgabe von
Get-ADFineGrainedPasswordPolicy
über eine Pipe an
Get-ADFineGrainedPasswordPolicySubject
übergeben, um die mit einer Policy verknüpften Objekte anzuzeigen.
Erwartungsgemäß ändert man ein bestimmtes Policy-Objekt, indem man dessen Name oder GUID inklusive der Attribut-spezifischen Parameter an Set-ADFineGrainedPasswordPolicy übergibt:
Set-ADFineGrainedPasswordPolicy AdminPW -LockoutThreshold 0
In diesem Fall würde ein Konto, das den Regeln von AdminPW unterliegt, nie gesperrt, egal wie oft die Anmeldung scheitert.
Schließlich besteht noch die Möglichkeit, Passwort-Policy-Objekte zu erstellen oder zu löschen. Diese Aufgabe übernehmen New-ADFineGrainedPasswordPolicy, dessen Aufruf identisch ist mit jenem von Set-ADFineGrainedPasswordPolicy, sowie Remove-ADFineGrainedPasswordPolicy.
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
- Security- und Health-Checks für Active Directory mit PowerShell-Scripts
- Split-brain DNS in Active Directory einrichten
- AD-Konten mit DES- und RC4-Algorithmus für Kerberos-Verschlüsselung finden
- UserAccountControl: Sicherheitseinstellungen für AD-Konten prüfen und ändern
- Gruppen in Azure Active Directory mit PowerShell verwalten
Weitere Links