PWExpire - Wann laufen die Kennworte ab ?
Alle Skripte sind Muster ohne jede Gewährleistung oder Funktionsgarantie. für Schäden bin ich nicht verantwortlich. Achten Sie auf Zeilenumbrüche bei der Übernahme.
VBScript und 64Bit !
Viele 32bit COM-Objekte lassen sich auf einem 64bit System nur
instanziieren, wenn die 32bit Version von CSCRIPT/WSCRIPT genutzt wird,
welcher unter C:\Windows\SysWOW64\cscript.exe liegt.
Sicherheit ist immer wichtiger und seit dem Exchange auch immer häufiger mobil genutzt wird, ist eine der wesentlichen Funktionen die regelmäßige Änderung des Kennworts. Leider bedeutet dies auch, dass die Anwender regelmäßig ihr Kennwort ändern müssen und vor allem sich nach dem Ablauf nicht mehr ohne Änderung anmelden können.
Dies ist aber besonders dann ungeeignet, wenn die Anwender sich gar nicht an der Domäne aktiv anmelden und den Hinweis zur Änderung des Kennworts erhalten, sondern z.B. per POP3 oder Exchange ActiveSync Server ihre Mails einfach nur abholen. Daher ist eine Funktion hilfreich, um ein demnächst ablaufendes Kennwort dem Anwender anderweitig zu signalisieren. Was liegt näher, als dem Anwender einfach eine Mail zu senden, dass sein Kennwort demnächst abläuft und der Benutzer das Kennwort bitteschön ändern soll, z.B. über einen Webbrowser und der Funktion IISADMPWD.
Option 1
Der sicherlich beste Weg ist die Festlegung einer Kennwortrichtlinie in der "Default Domain Policy". Hier die Standardeinstellungen einer Windows 2003 Server.
Nach 42 Tagen läuft das Kennwort ab. Ausnahmen gibt es nur für die Konten, bei denen die Option "verfallt nie" aktiviert ist.
Diese Einstellung ist natürlich für Dienstkonten erforderlich. Aber normale Anwender sollten hiervon ausgeschlossen bleiben. Also fehlt das Skript, welches auf ein ablaufendes Kennwort abläuft.
Option 2: Sanfte Information
Nun ist das Kennwortalter natürlich eine absolute Zahl und nicht pro Anwender individuell einstellbar. Vielleicht ist genau das für viele Administratoren ein Problem, eine solche Richtlinie durchzusetzen. Daher könnte es auch eine Alternative darstellen, die Kennwortrichtlinie nicht zu aktivieren, aber die Anwender trotzdem auf den umstand eines sehr alten Kennworts hinzuweisen und einen Bericht für Entscheidungsträger zu erstellen.
Das tut das Script
Das VB-Script nutzt eine ADSI-Abfrage gegen den globalen Katalog, um eine Liste der Benutzer zu erhalten und prüft dann pro Benutzer ab, wann dieser Anwender das letzte Mal das Kennwort geändert hat. Anhand zweier Warnschwellen werden zwei Aktionen ausgelöst. Zudem wird das Ergebnis als XML-Datei ausgegeben. Der interessante Teil des Skripts ist:
Set objUser = GetObject("LDAP://CN=fcarius,DC=msxfaq,DC=de") dtmWert = objUser.PasswordLastChanged WScript.Echo "Password last changed: " & dtmWert
Als Aktion sind natürlich viele Dinge denkbar, z.B. neben dem Bericht kann auch eine eine Mail an den Anwender folgen. Aber auch ein Alert für MOM ist denkbar. Sie werden Teile des Skripte bei CheckExObjects wieder finden.
Aufruf
Rufen Sie das Programm am besten in einer DOS-Box mit CSCRIPT auf.
C:\>cscript pwexpire.vbs
Zur Sicherheit ist eine Abfrage eingebaut, die bei einem Doppelklick nur eine Infonachricht ausgibt.
Ausgabe
Die Ausgabe von PWExpire erfolgt zur Kurzinformation auf dem Bildschirm. Damit wird der Fortschritt ersichtlich. Im Script selbst kann das Debugging noch höher geschraubt werden:
Die eigentliche Ausgabe erfolgt im aktuellen Verzeichnis.
- PWExpire-datum zeit.log
Debugausgabe zur Fehlersuche, wenn etwas nicht funktioniert. - PWExpire-datum zeit.XML
enthält das Ergebnis der Analyse als XML-Datei - PWExpire.xsl
Stylesheet für die Anzeige mit dem Explorer. Wird immer wieder neu angelegt !. Sie können die Zeile aber im VBS entfernen
Ich bin Natürlich nicht sicher, ob mein Skript entsprechend fehlerfrei ist. Allerdings finden bis auf die Ausgabe in Dateien keine Schreibzugriffe statt. für die Funktion ist ein Benutzer erforderlich, der im Active Directory "lesen" kann. Das kann eigentlich jeder Domänenbenutzer ohne weitere Berechtigungen.
ACHTUNG
Diese umfangreiche Analyse belastet den angesprochenen globalen Katalog.
Download
PWExpire mit Computerkonten
Auch die Workstations in ihrem Netzwerk haben "Benutzerkonten". Die Computerkonten sind nichts anderes als Anmeldekonten, die aber von den PCs genutzt werden. Jeder PC ist auch hier angehalten, sein Kennwort regelmäßig zu ändern. Hierbei gilt
- Windows NT4
Änderung alle 7 Tage
175468 Effects of machine account replication on a domain - Windows 2000, XP, 2003
Änderung alle 30 Tage
http://www.Microsoft.com/technet/prodtechnol/windowsserver2003/de/library/ServerHelp/8af78a8c-6e66-4420-9ee7-d82dd1c9e0c6.mspx
Entsprechend kann man das Kennwortalter natürlich auch mit PWExpire auswerten und so Computer finden, die ihre Kennwort schon lange nicht mehr geändert haben. Das ist dann ein Hinweis darauf, dass dieser Computer schon länger nicht mehr eingeschaltet war oder die Betriebssysteminstallation in der Form gar nicht mehr gibt. Der Computer könnte verschrottet, verkauft, aber auch geklaut oder einfach nur mit einem neuen Namen neu installiert worden sein. Es kann sich aber auch um einen Computer handeln, der einfach nur lange ausgeschaltet ist (z.B. Demosysteme) oder ein Notebook der lange auf Reisen ist oder jemand hat diesen Änderungsmechanismus deaktiviert.
Geplante Weiterentwicklung und BUGS
Eine direkte Weiterentwicklung dieses Skripts ist nicht geplant. Interessant könnte eine Neuentwicklung auf Basis von PowerShell sein. Hier mal ein Schnipsel, welcher ebenfalls Konten sucht, die länger als 90 Tagen kein Kennwort mehr geändert haben.
$d = [DateTime]::Today.AddDays(-90); Get-ADComputer -Filter 'PasswordLastSet -ge $d' -Properties PasswordLastSet | FT Name,PasswordLastSet
Es ist immer wieder erstaunlich, wie elegant und schnell PowerShell dinge löst, die vorher viele Zeilen VBScript erfordert haben.
Weitere Links
- List When a Password was Last Changed
http://www.Microsoft.com/technet/scriptcenter/scripts/ad/Users/pwds/uspwvb09.mspx
http://www.Microsoft.com/technet/scriptcenter/scripts/ad/Users/pwds/default.mspx - Windows 2003 Hilfe zur Änderung von Computerkonten http://www.Microsoft.com/technet/prodtechnol/windowsserver2003/de/library/ServerHelp/8af78a8c-6e66-4420-9ee7-d82dd1c9e0c6.mspx
- Freeware NETPWAGE
Kommandozeile um Listet das "letzte Password changed date"
http://optimumx.com/download/netpwage_1.30.zip
http://www.jsifaq.com/subH/tip3900/rh3988.htm - Sending an e-mail to Users whose password is about to expire
http://blogs.brnets.com/michael/archive/2005/09/13/1474.aspx
ähnliches Script - Script: New-ADPasswordReminder.ps1 - Email Users When Their Password
Will Soon Expire
http://www.ehloworld.com/318 - Windows DSQuery
Auf der Seite http://www.faq-o-matic.net/content/view/154/45/ gibt es auch einen Hinweis, wie Sie auch mit Windows 2003 Bordmitteln mittlerweile solche Abfragen ausf�hren können und sogar alte Computerkonten automatisch löschen lassen können:
dsquery computer -stalepwd 50 dsquery computer -stalepwd 50|dsrm -noprompt -c
- ADTidy
http://www.cjwdev.co.uk/Software/ADTidy/Info.html
Ein kleines Tool um Konten zu suchen, die sich eine gewisse Zeit nicht mehr angemeldet haben und diese z:B: aus Gruppen entfernt, deaktiviert, in eine OU verschiebt oder gleich löscht. - AD-Verwaltung delegieren: Passwort zurücksetzen,
Gruppen und Mitglieder managen
http://www.windowspro.de/wolfgang-sommergut/ad-verwaltung-delegieren-passwort-zuruecksetzen-gruppen-mitglieder-managen - AD Account Reset Tool
http://www.cjwdev.co.uk/Software/AccountReset/Info.html - Active Directory: Mail wenn Passwort abläuft
https://www.frankysweb.de/active-directory-mail-wenn-passwort-abluft/ - Account Expiry Email Alert
http://msexchange.me/2014/05/11/account-expiry-email-alert/