Share via


Höhere Zuverlässigkeit und bessere Performance von Diensten durch Abstellen der Kerberos PAC Verification

Hallo, hier mal wieder Rol mit einem Kerberos Thema.

Mit dem Windows Server 2003 Service Pack 2 gibt es die Möglichkeit, die Kerberos Privilege Attribute Certificate (PAC) Verification abzustellen. Das Vorgehen ist beschrieben im Artikel
906736 You experience a delay in the user-authentication process when you run a high-volume server program on a domain member in Windows 2000 or Windows Server 2003
https://support.microsoft.com/default.aspx?scid=kb;EN-US;906736

Die Vorteile, die dadurch entstehen, sind aber scheinbar nicht klar genug herausgestellt, was ich an dieser Stelle nun nachholen möchte. Denn gerade auf Dienste, welche mit Kerberos Tickets arbeiten, hat die Einstellung

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters\
ValidateKdcPacSignature=0
(DWord)

zum Abstellen der Verification entscheidenden Einfluß. Bei der PAC Verification liegt zu Grunde, daß das Windows Betriebssystem einem Dienst nicht unbedingt vertraut und daher Tickets, welche vom Dienst verwendet werden (via Trusted for Delegation), vor Bilden des Tokens für den Zugriff über den Secure Channel (Netlogon RPC) an den Domain Controller zur Überprüfung gesendet werden. Die PAC Verification prüft also nicht das eigentliche User Ticket, sondern ob das Ticket durch den Dienst modifiziert sein könnte (Ticket Spoofing/Tampering). Das bedeutet aber gleichzeitig, daß jeder Zugriff auf diesem Weg gegen den DC validiert wird. Sollte der DC temporär ein Problem haben (z.B. Netzwerk- oder Last bedingt), so wird dem Dienst ein Fehler reflektiert. Das ist meist dann der generische Fehler Code 0xc000005e STATUS_NO_LOGON_SERVERS. Das Abstellen der PAC Verifications bedeutet also nicht, daß kein Kerberos mehr gemacht wird, sondern nur, daß dem Dienst vertraut wird mit den User Tickets zu arbeiten. Erst dann kommt auch wirklich das Kerberos Ticket Caching zum Tragen, bei dem kein DC bzw. KDC benötigt wird, solange Client Tickets noch Gültigkeit haben. Da zudem die Round-Trip Zeiten zum DC wegfallen, können Zugriffe vom Dienst schneller bearbeitet werden, was die Performance erhöht. Temporäre Störungen des DCs werden nicht mehr reflektiert, damit steigt die Zuverlässigkeit und Stabilität im Servicebetrieb. Die Belastung des Secure Channels zum DC, sowie die DC Last wird ebenfalls reduziert, vom Netzwerkverkehr ganz zu schweigen. Die PAC Verification macht daher nur auf Systemen Sinn, auf denen Dienste laufen, deren Ursprung zweifelhaft ist. Für gewartete Enterprise Server wird deshalb dringend empfohlen diese PAC Verifications abzustellen. Aus diesem Grund ist der neue Default Wert für Windows Server 2008 auch mit ValidateKdcPacSignature=0 vorgegeben. Daher von mir hier nochmals der Appell, dieses SP2 Feature auch zu nutzen. Als Einzel-Hotfix ist es nicht erhältlich, also ein weiterer Grund einen geplanten SP2 Rollout voranzutreiben. Weitere Informationen und Einschränkungen, wie z.B. für den IIS Worker Process, der nicht als Dienst arbeitet, werden sehr schön im Blog von Tim dargestellt:
"Why! Won't! PAC! Validation! Turn! Off! - Active Directory Blog ..."
https://blogs.technet.com/b/ad/archive/2008/09/29/why-won-t-pac-validation-turn-off.aspx
sowie PAC Hintergrundinformationen in
https://blogs.msdn.com/b/openspecification/archive/2009/04/24/understanding-microsoft-kerberos-pac-validation.aspx

Damit gutes Gelingen und bis zum nächsten mal,
Euer Rol