Wann haben Benutzer zuletzt ihr Passwort im Active Directory geändert?


    Tags: , ,

    Authentifizierung über Username und PasswortDas regelmäßige Ändern von Passwörtern wird allgemein nicht mehr empfohlen, auch die Security Baseline für Windows ist davon abgekommen. Trotzdem kann es in bestimmten Situationen wichtig sein, zu wissen, wie alt die Kennwörter der Benutzer sind. Mit PowerShell kann man das einfach heraus­finden.

    Auch wenn Organisationen ihre Mitarbeiter nicht zum periodischen Wechsel der Passwörter zwingen, so kann es manchmal nötig sein, neue Kennwörter zu verlangen. Das gilt besonders dann, wenn es einem Angreifer mutmaßlich gelungen ist, Konten zu hacken und Passwörter zu kom­promittieren.

    In diesem Fall wird man einen unter­nehmens­weiten Reset für alle Passwörter bewirken, indem man das Attribut ChangePasswordAtLogon setzt. Diese Maßnahme läuft jedoch bei Benutzern ins Leere, die sich über einen längeren Zeitraum, etwa wegen Urlaubs oder Krankheit, nicht anmelden.

    Datum im Attribut PwdLastSet enthalten

    Um nach einer gewissen Frist festzustellen, welche Konten ihr möglicher­weise gehacktes Kennwort immer noch nicht geändert haben, kann man eine entsprechende Abfrage ausführen. Das Datum für den letzten Passwort­wechsel speichert Active Directory im Attribut PwdLastSet.

    Für einzelne Konten kann man dieses in AD-Benutzer und -Computer unter den Eigenschaften eines Accounts in der Registerkarte Attribut-Editor einsehen.

    Das Attribut pwdlastSet in AD-Benutzer und -Computer anzeigen

    Für die Untersuchung sämtlicher Konten ist dieses GUI-Tool jedoch untauglich. Stattdessen greift man hier zu PowerShell. Würde man damit den Wert von PwdLastSet auslesen, dann erhielte man für das Datum einen Wert von Long Integer, den man erst in ein lesbares Format konvertieren müsste.

    NoteProperty mit DateTime-Objekt

    Das Cmdlet Get-AdUser liefert stattdessen über die NoteProperty PasswordLastSet direkt ein datetime-Objekt. Dieses ist nicht nur als Datum lesbar, sondern lässt sich auch in zeitbezogenen Operationen verarbeiten.

    Um das Datum des letzten Kennwort­wechsels für alle User in einer OU anzuzeigen, gibt man einen Befehl nach diesem Muster ein:

    Get-ADUser -SearchBase "OU=Sales,DC=contoso,DC=de" `
    -Filter * -properties PasswordLastSet | select Name, PasswordLastSet

    In unserem Beispiel möchte man aber wissen, wer nach einem bestimmten Datum sein Passwort noch nicht gewechselt hat. Diese Abfrage könnte so aussehen:

    Get-ADUser -Properties PasswordLastSet `
    -Filter "PasswordLastSet -gt '10/01/2022'" |
    select name, PasswordLastSet

    Diese Abfrage würde alle Accounts auflisten, die ihr Kennwort seit dem 1. Oktober 2022 noch nicht geändert haben.

    Anzeige der Konten, die nach einem bestimmten Datum ihr Passwort nicht geändert haben.

    Wenn man als Maßnahme die betreffenden Konten sperren möchte, dann könnte man das mit Disable-ADAccount tun.

    Täglich Know-how für IT-Pros mit unserem Newsletter

    Wir ver­wenden Ihre Mail-Adresse nur für den Ver­sand der News­letter.
    Es erfolgt keine per­sonen­be­zogene Auswertung.

    Bild von Wolfgang Sommergut
    Wolfgang Sommergut hat lang­jährige Erfahrung als Fach­autor, Berater und Kon­ferenz­sprecher zu ver­schie­denen Themen der IT. Da­ne­ben war er als System­ad­mi­ni­stra­tor und Con­sultant tätig.
    // Kontakt: E-Mail, XING, LinkedIn //

    Ähnliche Beiträge

    Weitere Links