Tags: Active Directory, PowerShell, Passwort
Das 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 herausfinden.
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 kompromittieren.
In diesem Fall wird man einen unternehmensweiten 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öglicherweise gehacktes Kennwort immer noch nicht geändert haben, kann man eine entsprechende Abfrage ausführen. Das Datum für den letzten Passwortwechsel 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.
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 Kennwortwechsels 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.
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
Ähnliche Beiträge
- UserAccountControl: Sicherheitseinstellungen für AD-Konten prüfen und ändern
- AD-Konten mit ChangePasswordAtLogon in PowerShell finden, Wechsel des Passworts erzwingen
- Ablaufdatum von AD-Passwörtern in PowerShell auslesen
- Passwort-Einstellungen mit PowerShell: Kennwort läuft nie ab, Passwort nicht erforderlich
- Benutzer im Active Directory filtern und bearbeiten mit NetKey UMT
Weitere Links