Logo faq-o-matic.net
Logo faq-o-matic.net

Standardkennwort bei Benutzern prüfen

von veröffentlicht am23. Januar 2007, 19:14 Uhr Kurzlink und Zitatlink einblenden
Kategorie Kategorie: Active Directory, Administration, Scripting, Sicherheit, Windows   Translate with Google Translate Translate EN   Die angezeigte Seite drucken
Zuletzt aktualisiert: 1. Januar 2008

Manchmal werden Benutzer durch eine Migration, beim Neuanlegen oder auch beim Zurücksetzen des Kennwortes mit einem Standardkennwort versehen. Ab und zu wird dann vergessen, bei der erstmaligen Anmeldung von einem Benutzer an der Domäne einen Kennwortwechsel zu erzwingen. Leider ist es nicht möglich, die Kennwörter der Benutzer aus dem Active Directory direkt auszulesen, da diese nur als Hashwert in der Active-Directory-Datenbank abgelegt sind. Mit einem kleinen Trick kann man aber mehrere Benutzerobjekte prüfen, ob diese ein bekanntes Standardkennwort noch verwenden.

Um dieses Ziel zu erreichen, haben Nils Kaczenski und ich ein kleines VB-Script geschrieben, das diesen Job übernimmt. Das Skript liest in einer bestimmten OU alle Benutzerkonten aus und verwendet von diesen den SamAccountName (Prä-Windows-2000-Anmeldename) plus das Standardkennwort, um ein Netzlaufwerk auf einem Fileserver zu mappen. Wenn dieses Netzlaufwerkmapping gelingt, dann kann man davon ausgehen, dass dieses Benutzerkonto noch das Standardkennwort verwendet. Sollte ein Fehler dabei auftreten, dann verwendet dieses Konto kein Standardkennwort mehr.

Alle Benutzerkonten, unter denen das Netzlaufwerkmapping funktioniert, werden in einer Textdatei protokolliert. Wichtig ist noch, dass der Fileserver, auf dem die Testfreigabe erstellt wurde, um das Netzlaufwerk zu mappen, kein DC ist (dieser würde nicht mehrere Verbindungen unter verschiedenen Benutzerkontexten gleichzeitig vom selben Rechner zulassen), sondern ein Memberserver oder im einfachsten Falle eine Workstation.

Das Skript wird folgendermaßen in der CMD aufgerufen:
cscript check_standard_password.vbs

Das Skript hier einfach per Copy&Paste in eine Textdatei einfügen und als „check_standard_password.vbs“ abspeichern.

   1: '=================================================================
   2: '
   3: '
   4: ' NAME: check_standard_password 
   5: '
   6: ' AUTHOR: Nils Kaczenski, Frank Röder
   7: ' DATE  : 17.01.2007
   8: '
   9: ' COMMENT: Teamarbeit;-)
  10: '
  11: '=================================================================
  12: 'Hier die einzelnen Variablen definieren
  13: 'DN der OU, die durchsucht werden soll
  14: strDN = "" 'Beispiel "OU=TestOU,OU=oberOU,DC=test,DC=de"
  15: 'Pfad zum Logfile, in dem die User mit Standardkennwort eingetragen werden
  16: sollen
  17: strLogPath = "" 'Beispiel "c:\logfile.txt"
  18: 'UNC-Pfad, der zum Test gemappt werden soll
  19: strTestUNC = "" 'Beipiel "\\testserver\testshare"
  20: 'Wie sieht das Standardkennwort aus?
  21: strPass = "" 'Beispiel "Standardkennw0rt"
  22: 'AB HIER NICHTS MEHR VERÄNDERN!
  23: '===========================================================================
  24:
  25: Set objOU = GetObject ("LDAP://" & strDN)
  26: objOU.Filter = Array("User")
  27: Set objNet = CreateObject ("WScript.Network")
  28: Set objFso = CreateObject("Scripting.FileSystemObject")
  29: Set objTs = objFso.OpenTextFile(strLogPath, 2, True)
  30: objTs.WriteLine Now
  31: objTs.writeline("Folgende Benutzer verwenden noch " _
  32:     & "das initiale Kennwort:")
  33: Set WshShell = WScript.CreateObject("WScript.Shell")
  34: On Error Resume Next
  35: For Each user In objOU
  36:     ' Usernamen ausgeben
  37:     WScript.Echo user.Name
  38:     ' Test: Laufwerk verbinden
  39:     objNet.MapNetworkDrive "X:", strTestUNC, _
  40:         , user.SamAccountName, strPass
  41:     ' Fehler aufgetreten?
  42:     If Err.Number = 0 Then
  43:         ' Nein, User protokollieren
  44:         objTs.writeline(user.Samaccountname)
  45:     Else
  46:         ' Ja, Fehler anzeigen
  47:         WScript.Echo "Fehler " & Err.number _
  48:             & " (" & Err.Description & ") " _
  49:             & "bei User: " & user.Name
  50:         Err.Clear
  51:     End If
  52:     objNet.RemoveNetworkDrive "X:"
  53: Next

© 2005-2023 bei faq-o-matic.net. Alle Rechte an den Texten liegen bei deren Autorinnen und Autoren.

Jede Wiederveröffentlichung der Texte oder von Auszügen daraus - egal ob kommerziell oder nicht - bedarf der ausdrücklichen Genehmigung durch die jeweiligen Urheberinnen oder Urheber.

Das Impressum findet sich unter: http://www.faq-o-matic.net/impressum/

Danke, dass du faq-o-matic.net nutzt. Du hast ein einfaches Blog sehr glücklich gemacht!