Mehrere Kennwortrichtlinien in einer Domäne 18. November 2009

Endlich ist es soweit! Unterschiedliche Kennwortrichtlinien können innerhalb einer Domäne definiert werden. Microsoft hat die Administratoren erhört und führt mit Windows Server 2008 (“Longhorn”) die Möglichkeit ein, unterschiedliche Kennwortrichtlinien innerhalb einer Domäne zu definieren. Wer jetzt hier erwartet, dass er das bequem über die MMC “Active Directory-Benutzer und -Computer” festlegen kann, wird leider enttäuscht. Hier wird wieder Handarbeit nötig.
Um die Kennwortrichtlinien technisch zu realisieren, hat Microsoft zwei neue Klassen im AD definiert. Um diese Klassen bzw. die eigentliche Funktion nutzen zu können, muss sich die Domäne im Funktionslevel “Windows Server 2008″ befinden. Die Klasse “ms-DS-Password-Settings-Container” ist dafür zuständig, neue Kennwortrichtlinien aufzunehmen.
Das eigentliche Objekt dafür wird automatisch während der Installation von Active Directory in der Domänenpartition eingerichtet. Die Klasse “ms-DS-Password-Settings”  stellt die eigentlichen Kennwortrichtlinien dar. Diese Richtlinien müssen innerhalb des Containers “Password Settings Container” angelegt werden. Finden kann man diesen Container unter folgendem Distinguished Name:

roeder-kennwortrl-01-adisedit
CN=Password Settings Container,CN=System,DC=testdom,DC=de

Wer jetzt denkt, dass er die angelegten Richtlinien mit einer Organisationseinheit verknüpfen kann, ist leider auf dem Holzweg. Die Kennwortrichtlinien lassen sich nur mit Benutzerobjekten, InetOrgPerson-Objekten und globalen Sicherheitsgruppen verknüpfen. Dies muss aber kein Nachteil sein, denn man kann dadurch Mitglieder einer administrativen Gruppe zwingen, wesentlich sicherere Kennwörter zu nutzen als die normalen Benutzer, die sich in der gleichen Organisationseinheit befinden.

Jetzt könnte es durch diesen Sachverhalt passieren, dass durch direkte oder indirekte Gruppenmitgliedschaften der Benutzer mit mehreren Kennwortrichtlinien verknüpft ist. Um die effektive Richtlinie zu ermitteln, nutzt der Windows-Server-2008-Domänencontroller das Attribut “ms-DS-Password-Settings-Precedence” der Klasse “ms-DS-Password-Settings”. Dieses Attribut kann mit einem beliebigen Integer-Wert gefüllt werden. Als Mindestwert ist hier “1″ vorgegeben. Die Kennwortrichtlinie mit dem niedrigsten Wert im Attribut “ms-DS-Password-Settings-Precedence” hat die höchste Priorität und setzt alle anderen Richtlinien außer Kraft. Sollte es passieren, dass zwei Richtlinien die gleiche Priorität besitzen, dann wird die Richtlinie gezogen, die die kleinste GUID hat. Dieser Vorgang ist natürlich nicht sonderlich transparent. Deshalb empfiehlt Microsoft, für jede Kennwortrichtlinie eine eindeutige Priorität zu vergeben.

roeder-kennwortrl-02-Ablauf
Ablaufdarstellung der Kennwortrichtlinienauswertung

Zum Anlegen einer eigenen Richtlinie ist im Container “Password Settings Container” ein neues “msDS-Password-Settings” Objekt zu erstellen.

roeder-kennwortrl-03-newpol_adsiedit

Als Erstes gibt man dem Objekt einen CN. In meinem Beispiel habe ich den Namen “Policy-Restricted” gewählt.

roeder-kennwortrl-04-newpol_dialog

Im nächsten Schritt werden alle verbindlichen Attribute des Objekts abgefragt.

  • msDS-PasswordSettingsPrecedence = Kennwortrichtlinienpriorität
  • msDS-PasswordReversibleEncryptionEnabled = Kennwort mit umkehrbarer Verschlüsselung speichern
  • msDS-PasswordHistoryLength = Kennwortchronik erzwingen
  • msDS-PasswordComplexityEnabled = Kennwort muss Komplexitätsvoraussetzungen entsprechen
  • msDS-MinimumPasswordLength = Minimale Kennwortlänge
  • msDS-MinimumPasswordAge = Minimales Kennwortalter
  • msDS-MaximumPasswordAge = Maximales Kennwortalter
  • msDS-LockoutThreshold = Kontensperrschwelle
  • msDS-LockoutObservationWindow = Zurücksetzungsdauer des Kontosperrungszählers
  • msDS-LockoutDuration = Kontosperrdauer

Bei allen Attributen, die mit Zeitwerten zu tun haben, muss der Administrator etwas Rechenarbeit leisten. Diese Zeitwerte werden als ein Vielfaches von -100 Nanosekunden dargestellt. Dadurch wird zum Beispiel das minimale Kennwortalter von einem Tag folgendermaßen errechnet:

-24*60*60*(10ˆ7) = -864000000000

Ich habe für meine Testrichtlinie folgende Werte festgelegt:

msDS-MinimumPasswordAge = -864000000000  = 1 Tag
msDS-MaximumPasswordAge = -17280000000000 = 20 Tage
msDS-LockoutObservationWindow = -36000000000 = 1 Stunde
msDS-LockoutDuration = -72000000000 = 2 Stunden

Wer sich die ganze Rechnerei sparen möchte, der kann die Werte auch in folgendem Format festlegen:
Tage:Stunden:Minuten:Sekunden

für den Wert  “msDS-MinimumPasswordAge” für das dann so aussehen: 01:00:00:00

Im nächsten Schritt muss diese Richtlinie einem Benutzer oder einer Gruppe zugewiesen werden. Ich habe mich in diesem Beispiel für eine Gruppe entschieden. Dadurch habe ich die Möglichkeit, durch die Mitgliedschaft in dieser Gruppe die Kennwortrichtlinien zu steuern, die sich auf ihre Mitglieder auswirken. Jede definierte Richtlinie besitzt ein Attribut mit dem Namen “msDS-PsoAppliesTo”. Dieses Attribut ist ein multivalued Attribut, das also mehrere Werte aufnehmen kann. Als Wert müssen hier die Distinguished Names der einzelnen globalen Gruppen oder Benutzer hinterlegt werden, auf die sich diese Richtlinie auswirken soll.

In meiner Testumgebung habe ich eine Organisationseinheit mit dem Namen “Password-Policies” unterhalb der Domäne angelegt. In dieser Organisationseinheit befindet sich eine globale Gruppe  “Pass-Test”. Mit dieser Gruppe möchte ich meine Kennwortrichtlinie verknüpfen.

roeder-kennwortrl-05-aduc-oupasstest

Ich fülle also das Attribut “msDS-PsoAppliesTo”  meiner Kennwortrichtlinie mit dem Distinguished Name meiner globalen Gruppe.

roeder-kennwortrl-06-multivalued-string-editor
CN=Pass-Test,OU=Password-Policies,DC=testdom,DC=de

Zusätzlich befindet sich in meiner Organisationseinheit ein Benutzer “Frank Röder”. Diesen Benutzer mache ich zum Mitglied der Gruppe “Pass-Test”. Dadurch wirken sich jetzt die Einstellungen meiner Richtlinie auf diesen Benutzer aus.
Überprüfen kann man die effektive Richtlinie natürlich auch. In der MMC “Active Directory Benutzer und Computer” befindet sich in den Eigenschaften eines Benutzerobjekts eine Registerkarte “Attribute Editor”. Darüber kann man alle Attribute eines Benutzerobjekts einsehen. Für uns ist hier das Attribut “msDS-ResultantPSO” interessant. Dieses Attribut wird mit dem distinguished Name der effektiven Kennwortrichtlinie aufgefüllt.

roeder-kennwortrl-07-prop_user

ACHTUNG! Bei diesem Attribut handelt es sich um ein “constructed Attribute”, das bedeutet, es wird zur Laufzeit erstellt und kann nicht in LDAP-Suchfiltern verwendet werden. Man kann also keine Suche starten à la “Gib mir bitte alle Benutzer zurück, auf die sich Richtlinie “xyz” auswirkt.”

One Comments
sinse August 8th, 2013

gerade ein wenig verzweifelt weil im attribute editor “msDS-ResultantPSO” nicht zu sehen war. bei filter muss der haken vor “Erzeugt” bei “Schreibgeschützte Attribute anzeigen:” gesetzt sein, dann sieht man auch den wert!

Leave a Reply

*