Kerberos Event 4 mit Fehler Code KRB_AP_ERR_MODIFIED auf Windows Server 2003 SP2 Cluster

Als Cluster Administrator kann es passieren, daß man diesem Fehler öfters begegnet, während dieser Fehler auf normalen Member Servern kaum auftritt. Wie kommt das?
Es gibt ein bekanntes Problem mit SP2 welches auf Cluster Nodes einen Kerberos 4 Fehler mit KRB_AP_ERR_MODIFIED generiert, ohne daß ein Problem vorliegt. Das passiert beim Zugriff des Nodes auf eine virtuelle Server Instanz des MSCS Clusters, die der Node selbst hostet.

Voraussetzungen dazu im Kerberos 4 Event:

Event Type: Error
Event Source: Kerberos
Event Category: None
Event ID: 4
User: N/A
Computer: CLUSTERNODE Description: The kerberos client received a KRB_AP_ERR_MODIFIED error from the server host/CLUSTERNODE.contoso.com. The target name used was VIRTUALSERVERNAME. 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 (CONTOSO.COM) and the client realm. Please contact your system administrator.

CLUSTERNODE ist hier der Cluster Node Namen und VIRTUALSERVERNAME ist ein virtueller Cluster Name/Instanz von Node CLUSTERNODE gehostet. Zugleich stellt man zudem kein Zugriffsproblem auf den VIRTUALSERVERNAME fest, wenn man den Namen \\VIRTUALSERVERNAME im Windows Explorer verwendet, wie auch mit START \\VIRTUALSERVERNAME.

Wer sich schon einmal mit solchen Kerberos Fehler auseinandergesetzt hat, stellt hier vielleicht fest, daß bei "The target name used was VIRTUALSERVERNAME" kein Service Prefix für einen SPN (Server Principal Name), wie HOST/ oder MSSQLSVC/ mit angegeben ist. Aber genau das ist das Problem!
Prüft man zusätzlich noch die Kerberos Tickets auf dem betroffenen Node mit ResKit Tool KLIST TICKETS, so stellt man analog fest, daß es zwei Tickets für VIRTUALSERVERNAME gibt, eines ohne und eines mit dem erwähnten Service Prefix:

Server: VIRTUALSERVERNAME@contoso.com
KerbTicket Encryption Type: RSADSI RC4-HMAC(NT)
End Time: 4/2/2008 21:02:20
Renew Time: 4/2/2008 11:02:20

Server: cifs/VIRTUALSERVERNAME.contoso.com@contoso.com
KerbTicket Encryption Type: RSADSI RC4-HMAC(NT)
End Time: 4/2/2008 21:02:21
Renew Time: 4/2/2008 11:02:21

Das Ticket mit VIRTUALSERVERNAME@contoso.com, also ohne Service Prefix, verursacht das Event. Nur wie ist es nun entstanden?

Der Windows Explorer verbindet sich zunächst auf eine Pipe mit Namen \winreg zu VIRTUALSERVERNAME, bevor er auf die eigentliche Freigabe geht, auch dafür benötigt er ein CIFS Ticket. Allerdings begeht er hier den Fehler, kein Service Prefix mit anzugehen. Der KDC vom Domain Controller hält den Kerberos TGS Request für einen User-to-User Request, bei dem ein fehlendes Prefix normal ist, und stellt das Ticket wie angefordert aus. Nur passen nun das Ticket und der Resourcen Request nicht zusammen. So entsteht zunächst der Kerberos Fehler KRB_AP_ERR_MODIFIED. Der Explorer, bekannt für seine Wiederholungsversuche, probiert es im zweiten Anlauf nun mit dem richtigen SPN, also cifs/VIRTUALSERVERNAME.contoso.com, und damit geht es dann natürlich. Daher sieht man auch beide Tickets im Cache.

Da bei "NET USE * \\VIRTUALSERVERNAME" keine \winreg Pipe Verbindung gemacht wird, hat man den Fehler hier nicht. Häufig generieren jedoch Backup Applikationen, welche auch die Pipe verwenden, das Event, genau wie der Explorer. Die eigentliche Urache liegt in einer der Windows Server 2003 SP2 Änderungen am Redirector, der sich bei einer pseudo-remoten Verbindung vom Cluster Node auf die virtuelle Instanz (welche es auf anderen Servern nicht gibt) dann so verhält. Diese Änderung und der Zusammenhang zum Kerberos 4 Event ist inzwischen in KB-Artikel 913327 dokumentiert, das Event kann mit der Einstellung DontUseSecureNPForRemote=1 aus dem KB-Artikel 913327 vermieden werden:
913327 Error message when you try to make a remote connection to the registry of a Windows-based computer from a Windows Server 2003 SP1-based computer: "Access denied", https://support.microsoft.com/default.aspx?scid=kb;EN-US;913327
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\RemoteRegistry\Parameters,
DWORD: DontUseSecureNPForRemote=1

Gut, das war jetzt alles etwas viel, also nochmals kurz zusammengefaßt:
Kerberos Event 4 mit Fehler Code KRB_AP_ERR_MODIFIED mit W2k3 SP2 kann auf Cluster Nodes ignoriert werden, wenn im Event 4 nach "The target name used was" ein virtueller Cluster Name ohne Service Prefix steht. Das wars schon.

Jetzt kann man sich auch gleich wieder wichtigeren Themen widmen, wie z.B. welche Chancen hat die Deutsche Fußball Elf nun nach dem grandiosen EM Viertelfinale gestern...
In diesem Sinne - Grüße, Rol