Momentan wird ja fleissig migriert von Windows Server 2003 auf Windows Server 2012R2, da ja der Support in einem Jahr ausläuft. Leider gibt es in Server 2012R2 einen Bug, der sich in einem Mixed Environment nach dem Hochstufen eines 2012R2 zum Domänencontroller oder in einem reinem 2012R2 Environment der vorher 2003er Domänencontroller enthielt, zeigt.
Dabei wird das Event 4 auf dem Domänencontroller geloggt:
Event ID: 4
Source: Kerberos
Type: Error
„The Kerberos client received a KRB_AP_ERR_MODIFIED error from the server servername/domänenname. This indicates that the password used to encrypt the Kerberos service ticket is different than that on the target server. Commonly, this is due to identically named machine accounts in the target realm (domänenname), and the client realm. Please contact your system administrator.“
Das Ganze passiert sowohl mit Clientmaschinen als auch mit Servern. Meist findet sich im Eventlog des betroffenen Computers eine enstprechende Meldung dass das Passwort für das Computerkonto geändert wurde. Das ist auch gleichzeitig die Ursache warum die Logons failen.
Die Ursache dafür liegt in den verwendeten Verschlüsselungsalgorithmen. Wenn man ein Passwort im AD setzt, dann wird dieses verschlüsselt und der dabei entstehende Hash im AD gespeichert. Da Windows Server verschiedene Algorithmen unterstützt wird dabei für jeden Algorithmus der entsprechende Hash gespeichert. Windows Server 2003 unterstützt DES und RC4. Also wird in einem reinen 2003er Environment für ein Computerkontopasswort zwei Hashs gespeichert. Wenn sich der Computer nun authentifizieren will, dann verhandeln Computer und DC einen Verschlüsselungsalgorithmus aus und vergleichen dann den Hash gegen die im AD gespeicherte Version. Stimmen beide überein, ist die Authentifizierung erfolgreich. Das ist jetzt natürlich ein bisschen vereinfacht dargestellt. Es passiert schon noch ein bisschen mehr drum herum, aber die vereinfachte Darstellung reicht um das Problem zu verstehen.
Mit Windows Server 2008 wurde zusätzlich AES als Algorithmus eingeführt. Ab diesem Zeitpunkt konnte dann – sofern ein 2008er DC natürlich im Environment steht – für jedes Passwort 3 Hashs gespeichert werden: DES, RC4 & AES. So konnte gegen einen 2008er DC mit einem „besseren“ Algorithmus authentifiziert werden als gegen einen 2003er. Der 2008er erkannte auch automatisch wenn noch kein AES Hash gespeichert war, dass er dann DES benutzen musste.
Und genau das ist das Problem im 2012R2. Aus irgendeinem Grund erkennt der 2012R2 DC sporadisch nicht wenn für einen Account kein AES Hash gespeichert ist und versucht trotzdem die Authentifizierung damit. Dabei wird dann ein generierter AES Hash gegen einen nicht im AD vorhandenen verglichen und natürlich schlägt die Authentifizierung fehl.
Glücklicherweise hat Microsoft einen Hotfix dafür bereit gestellt und Ende August auch für die Öffentlichkeit bereitgestellt:
http://support.microsoft.com/kb/2989971/en-us
KB2919355 wird wie so oft in letzter Zeit als installiert vorausgesetzt bevor man den Hotfix installieren kann.