Hallo, hier wieder einmal Rol mit einem Vorgehen zur Überprüfung, wann ein Computer Passwort lokal und im Active Directory zuletzt geändert würde. Auslöser für eine solche Untersuchung ist häufig der Umstand, daß Clients aus der Domäne gefallen sind, und kein gültiges Passwort mehr haben, mit dem sie sich erfolgreich im AD authentifizieren können. Mit dem folgenden Vorgehen können wir vergleichen, wann der Netlogon Dienst zuletzt das lokale Passwort geändert hat, und wann es im AD zuletzt geändert wurde.
1) Lokale Computer-Passwort Änderung
Den lokalen Computer Passwort Hash ändert Netlogon in der Registry unter HKEY_LOCAL_MACHINE\SECURITY\Policy\Secrets\$MACHINE.ACC. Die angegraute KB Referenz hierzu ist 199071 “Recovering from Minor LSA Corruption”; http://support.microsoft.com/default.aspx?scid=kb;EN-US;199071Der Registry Hive SECURITY ist jedoch per Default selbst den lokalen Administrator nicht zugänglich. Die Permissions sollten auch nicht geändert werden, hier behelfen wir uns mit dem Sysinternals Tool PSEXEC.EXE und führen REGEDIT.EXE im Systemkontext interaktiv aus (Parameter -s und -i):
psexec.exe -s -i regedit.exe
Im Registry Editor gehen wir dann zum Key HKEY_LOCAL_MACHINE\SECURITY\Policy\Secrets\$MACHINE.ACC\CurrVal
Über das rechte Kontext Menü Exportieren wir nun diesen Key über “Export Registry File” als TXT Datei:
Beim Export als TXT Datei bekommen wir nun den Zeitpunkt der letzten Änderung, in der Ausgabedatei sec_currval.txt:
Key Name: HKEY_LOCAL_MACHINE\SECURITY\Policy\Secrets\$MACHINE.ACC\CurrVal Class Name: <NO CLASS> Last Write Time: 9/12/2011 - 8:47 AM Value 0 Name: <NO NAME> Type: REG_NONE
Netlogon hat also am 12.09.2011 um 8:47 Uhr das lokale Computer Passwort zuletzt gesetzt.
2) Computer-Passwortänderung im Active Directory
Im zweiten Schritt sehen wir uns nun die Änderung des Computer Passwortes im Active Directory an. Dazu zwei kleine Tricks, die uns das Leben vereinfachen und mit denen wir den DC Namen und den Computer DN im AD einfach erhalten. Die brauchen wir dann im Anschluß für die REPADMIN Syntax.
Den DC Namen erhalten wir z.B. mit “NLTEST /SC_QUERY:<Domain>”
nltest /sc_query:Contoso Flags: 30 HAS_IP HAS_TIMESERV Trusted DC Name \\MyDC01.contoso.com Trusted DC Connection Status Status = 0 0x0 NERR_Success The command completed successfully
Den Computer DN bekommen wir ganz einfach über “SETSPN /L <Computername>”
setspn -l MyClient01 Registered ServicePrincipalNames for CN=MyClient01,OU=Workstations,OU=Machines,DC=contoso,DC=com: RestrictedKrbHost/MyClient01.contoso.com HOST/MyClient01.contoso.com RestrictedKrbHost/MyClient01 HOST/MyClient01
oder mittels Powershell und “get-adcomputer <Computername>”, wenn das Active Directory-Modul für Powershell installiert ist.
Im Anschluß verwenden wir dann die gewonnenen Parameter für “REPADMIN /SHOWOBJMETA <DC Name> <Computer DN>”:
repadmin /showobjmeta MyDC01 “CN=MyClient01,OU=Workstations,OU=Machines,DC=contoso,DC=com” 34 entries. Loc.USN Originating DSA Org.USN Org.Time/Date Ver Attribute ======= =============== ========= ============= === ========= 89284568 MySite\MyDC01 89284568 2009-12-17 16:35:05 1 objectClass 89327088 MySite\MyDC01 89327088 2009-12-17 17:26:42 2 cn 89284568 MySite\MyDC01 89284568 2009-12-17 16:35:05 1 instanceType 89284568 MySite\MyDC01 89284568 2009-12-17 16:35:05 1 whenCreated 89327091 MySite\MyDC01 89327091 2009-12-17 17:26:43 1 displayName 89284568 MySite\MyDC01 89284568 2009-12-17 16:35:05 1 nTSecurityDescriptor 89327088 MySite\MyDC01 89327088 2009-12-17 17:26:42 2 name 89284568 MySite\MyDC01 89284568 2009-12-17 16:35:05 1 userAccountControl 89284569 MySite\MyDC01 89284569 2009-12-17 16:35:05 1 codePage 89284569 MySite\MyDC01 89284569 2009-12-17 16:35:05 1 countryCode 833501409 MySite\MyDC02 841590822 2011-09-12 08:47:51 25 dBCSPwd 89284568 MySite\MyDC01 89284568 2009-12-17 16:35:05 1 localPolicyFlags 89284569 MySite\MyDC01 89284569 2009-12-17 16:35:05 1 logonHours 833501409 MySite\MyDC02 841590822 2011-09-12 08:47:51 25 unicodePwd 833501409 MySite\MyDC02 841590822 2011-09-12 08:47:51 25 ntPwdHistory 833501409 MySite\MyDC02 841590822 2011-09-12 08:47:51 25 pwdLastSet …
Der Eintrag “2011-09-12 08:47:51 25 pwdLastSet” zeigt nun, daß auch im Active Directory am 12.09.2011 um 8:47 Uhr das Computer Passwort im AD zuletzt gesetzt worden ist, und zwar am DC MyDC02. Das paßt also zur Ausgabe aus der Registry.
Bei Fehlersituationen habe wir hier zwei Fehlerbilder mit den entsprechenden möglichen Ursachen:
a) Das lokale Computer Passwort ist neuer als das im AD
b) Das lokale Computer Passwort ist älter als das im AD
Log Name: System Source: Microsoft-Windows-Kernel-Power Event ID: 41 Level: Critical User: SYSTEM Computer: MyCrashedWin7Client.contoso.com Description: The system has rebooted without cleanly shutting down first. This error could be caused if the system stopped responding, crashed, or lost power unexpectedly.
Das Folge-Event ist dann entsprechend:
Log Name: System Source: NETLOGON Event ID: 3210 Level: Error User: N/A Computer: MyCrashedWin7Client.contoso.com Description: This computer could not authenticate with \\MyDC01.contoso.com a Windows domain controller for domain CONTOSO, and therefore this computer might deny logon requests. This inability to authenticate might be caused by another computer on the same network using the same name or the password for this computer account is not recognized. If this message appears again, contact your system administrator.
In der Situation muß man den Computer dann in die Domäne Re-Joinen.
Weitere nützliche Informationen zum Computerpasswort und dessen Änderungsprozess finden sich im Blog unserer US Kollegen: ”Machine Account Password Process - Ask the Directory Services Team ...”; http://blogs.technet.com/b/askds/archive/2009/02/15/test2.aspx
Ich hoffe dies hilft etwas, um solche Probleme besser eingrenzen zu können. Damit gutes Gelingen und viele Grüße aus dem herbstlich sonnigen Wiesn-Zentrum München. Euer Rol