Wie man Probleme mit der Kerberos-Ticketgröße und damit verbundenen Authentifizierungsproblemen behebt
Der Umgang mit Kerberos-Authentifizierungsfehlern kann frustrierend sein – insbesondere, wenn Benutzer Fehlermeldungen wie „Zugriff verweigert“ oder ungewöhnliche Meldungen wie „Anforderungsheader zu lang“ erhalten. Manchmal liegt es daran, dass das Kerberos-Ticket selbst zu groß ist, beispielsweise aufgrund zahlreicher Gruppenmitgliedschaften, Problemen mit der SIDHistory oder übergroßer Token. Dieser Leitfaden erklärt, wie Sie die Tokengröße für einen Benutzer ermitteln und Ihr System gegebenenfalls für die Verarbeitung größerer Tickets anpassen. Denn Windows macht es einem natürlich nicht gerade leicht.
Wie man Probleme mit der Kerberos-Ticketgröße und damit verbundenen Authentifizierungsproblemen behebt
Methode 1: Überprüfen der Kerberos-Token-Größe für einen Benutzer
Dies hilft Ihnen zu verstehen, ob die Größe Ihres Kerberos-Tickets die Kapazität Ihres Systems übersteigt, und ist besonders nützlich, wenn in der Ereignisanzeige Fehler wie die Ereignis-ID 40960 oder Sicherheitsfehler im Zusammenhang mit Kerberos angezeigt werden. Windows bietet keine direkte Möglichkeit, diese Informationen anzuzeigen, aber ein PowerShell-Skript aus einem GitHub-Repository kann diese Aufgabe übernehmen. Es schätzt im Wesentlichen die Gesamtgröße Ihrer Sicherheitsgruppen, den SID-Verlauf und die Gesamtgröße des Tokens.
Laden Sie zunächst das Skript von diesem GitHub-Link herunter. Speichern Sie es unter einem bestimmten Namen CheckMaxTokenSize.ps1. Erlauben Sie anschließend die Ausführung von Skripten – etwa so:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Navigieren Sie zu dem Ort, an dem Sie das Skript gespeichert haben, z. B., cd C:\scripts\und führen Sie es mit dem Benutzernamen aus, etwa so:
.\CheckMaxTokenSize.ps1 -Principals 'yourusername' -Details $true
Das Skript gibt die geschätzte Tokengröße, die Anzahl der Gruppen, SIDHistory-Informationen und die Information aus, ob die Größe nahe an Ihrem Standardmaximum in Windows liegt oder dieses überschreitet (das beträgt normalerweise 12 KB in Windows 7 und 48 KB in Windows 8/Server 2012+).
Nach dem Ausführen des Tests sehen Sie, ob Ihre Tokengröße groß genug ist, um Probleme zu verursachen, insbesondere wenn sie sich den Standardgrenzen nähert oder diese überschreitet. Eine große Anzahl verschachtelter Gruppen oder SIDHistory kann die Größe schnell stark ansteigen lassen. Diese Information hilft Ihnen zu entscheiden, ob es sinnvoll ist, die Gruppen zu reduzieren oder die maximale Tokengröße (MaxTokenSize) zu erhöhen.
Methode 2: Reduzierung der Benutzergruppenmitgliedschaften
Dies ist oft die einfachste Lösung, wenn auch nicht immer umsetzbar. Gehört ein Benutzer Hunderten von Gruppen an, insbesondere verschachtelten, führt dies zu einer enormen Ticketgröße. Warum es funktioniert, ist unklar, aber das Reduzieren der Gruppenmitgliedschaften – oder, falls möglich, das Entfernen von SIDHistory – kann verhindern, dass das Kerberos-Token zu groß wird. Selbst das Deaktivieren spezieller Delegierungsoptionen kann manchmal helfen, da dadurch die Ticketgröße reduziert wird.
Profi-Tipp: Überprüfen Sie die Mitgliedschaften der Benutzergruppen mit:
Get-ADUser -Identity 'username' -Properties MemberOf, SIDHistory | Select-Object MemberOf, SIDHistory
Sollten Sie eine unkontrollierbare Anzahl von Gruppen feststellen, sprechen Sie mit Ihrem Administrator über eine Reduzierung der Mitgliedschaften oder eine Bereinigung der SIDHistory, um die Ticketgröße zu verringern.
Methode 3: Erhöhen Sie den Registrierungswert MaxTokenSize.
Dies ist der letzte Ausweg, wenn die Reduzierung von Gruppen nicht ausreicht oder keine Option ist. Sie können den Wert für MaxTokenSize erhöhen – beispielsweise auf bis zu 64 KB – aber Vorsicht: Ein zu hoher Wert kann die Leistung oder Sicherheit beeinträchtigen. Der Standardwert beträgt in älteren Windows-Versionen 12 KB und in neueren 48 KB. Um den Wert zu erhöhen, müssen Sie die Registrierung bearbeiten.
- Öffnen Sie den Registrierungseditor ( regedit ).
- Navigieren Sie zu HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters
- Erstellen Sie einen neuen DWORD-Wert (32 Bit) namens MaxTokenSize.
- Stellen Sie den Wert (dezimal) auf etwa 48000 (für 48 KB) ein. Passen Sie ihn Ihren Bedürfnissen entsprechend an.
- Bitte starten Sie den Computer neu, damit die Änderungen wirksam werden.
Um die Änderung in der Registrierung zu bestätigen, führen Sie Folgendes aus:
Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters | Select-Object MaxTokenSize
Dies hilft Windows, einen größeren Puffer für die Kerberos-Authentifizierung bereitzustellen, wodurch Fehler insbesondere für Benutzer mit sehr vielen Gruppenmitgliedschaften reduziert werden.
Ja, Sie können dies über Gruppenrichtlinien unter Computerkonfiguration > Richtlinien > Administrative Vorlagen > System > Kerberos festlegen. Suchen Sie nach der Einstellung „Maximale Größe des Kerberos-SSPI-Kontexttokenpuffers“.
Übertreiben Sie es aber nicht – Microsoft empfiehlt, 64 KB nicht zu überschreiten. Denn ein größerer Puffer bedeutet natürlich mehr Speicherverbrauch und möglicherweise auch Sicherheitsrisiken.
Methode 4: Beheben von IIS HTTP 400-Fehlern bei Verwendung von Kerberos
Wenn Ihre Website HTTP-400-Fehler wie „Anforderungsheader zu lang“ ausgibt, liegt das wahrscheinlich daran, dass die Sicherheitsgruppen die Kerberos-Token so stark vergrößern, dass die Grenzen von IIS überschritten werden. Dies geschieht, wenn IIS versucht, umfangreiche Gruppeninformationen in den WWW-AuthenticateHeader einzufügen.
Um dies zu beheben, passen Sie die Registrierung unter HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters an :
- MaxFieldLength – Standardwert ist 16 KB. Erhöhen Sie den Wert schrittweise, z. B.auf 32000 (32 KB).
- MaxRequestBytes – der Standardwert beträgt 16 MB, kann aber bei Bedarf erhöht werden, um größere Header zu verarbeiten, z. B.auf 48000 Bytes.
Beachten Sie, dass eine Erhöhung dieser Werte die Serverleistung und -sicherheit beeinträchtigen kann. Nehmen Sie die Änderungen schrittweise vor und starten Sie IIS anschließend neu.
iisreset
Dies löst das Problem in der Regel, aber wenn die Gruppen riesig sind, ist es besser, die Anzahl oder den Umfang der Gruppenmitgliedschaften zu reduzieren, anstatt einfach die Header-Größen zu erhöhen.
Zusammenfassung
- Überprüfen Sie die Größe des Kerberos-Tokens Ihres Benutzers, um festzustellen, ob dies die Ursache ist.
- Reduzieren Sie nach Möglichkeit übermäßige Gruppenmitgliedschaften oder SIDHistory.
- Erhöhen Sie die Registry-Einstellung MaxTokenSize, um größere Tickets zu ermöglichen – bis zu 64 KB, aber mit Vorsicht.
- Passen Sie die IIS-Header-Limits an, wenn Sie beim Verwenden der Kerberos-Authentifizierung HTTP-400-Fehler erhalten.
Zusammenfassung
Der Umgang mit der Größe von Kerberos-Tickets erfordert eine Kombination aus Diagnose und Optimierung – nicht immer einfach, aber mit diesen Schritten können Sie feststellen, ob die Größe die Ursache ist und das Problem beheben. In der Regel hilft es, die Anzahl der Gruppen zu reduzieren oder den Puffer auf den betroffenen Endpunkten zu erhöhen. Erwarten Sie jedoch keine Wunder, wenn Ihr Benutzer Hunderten von Gruppen angehört – manchmal ist die einzige Lösung, die Gruppenmitgliedschaften oder den SID-Verlauf zu bereinigen.
Hoffentlich spart das jemandem ein paar Stunden. Viel Erfolg! Behaltet die Ereignisanzeige im Auge, um zu sehen, ob die Fehler nach den Anpassungen abnehmen.