«

»

KnowHow: Was ist MaxTokenSize?

Die Kerberos MaxTokenSize

Seit Windows Server 2000 ist Kerberos das Standard- und bevorzugte Authentifizierungsprotokoll und wurde über die letzten Jahre mit einigen Erweiterungen versehen. Eine dieser Erweiterungen von Kerberos ist das „Privilege Attribute Certificate“ (PAC), welches in den Serverprotokollspezifikationen definiert ist (MS-PAC).

Was ist die MaxTokenSize?

Microsoft erstellte das PAC um autorisationsbezogene Informationen in einer zu RFC4120 übereinstimmenden Weise zu kapseln. Die Informationen in der PAC enthalten unter anderem SIDs (Security Identifier/Sicherheitskennungen), Benutzerprofilinformationen wie z.B. den vollen Namen, das Home Directory und den Zähler für Passwortfehleingaben. Die SIDs, die in der PAC enthalten sind, repräsentieren die augenblickliche Benutzer-SID und alle Instanzen der SID-History sowie die Sicherheitsgruppenmitgliedschaften, zusätzlich zu den aktuellen Domänengruppen, globalen und universellen Gruppen.

Kerberos benutzt einen Puffer, um Autorisationsinformationen zu speichern und meldet diese Größe an Programme, die Kerberos zur Authentifizierung benutzen. MaxTokenSize definiert dabei die Größe des Puffers, die benutzt wird um die Autorisationsinformationen zu speichern. Diese Puffergröße ist wichtig, da einige Protokolle wie RPC und HTTP sie nutzen, um Speicher für die Autorisierung zuzuweisen. Wenn die Autorisierungsdaten größer sind als die MaxTokenSize, schlägt die Autorisierung für die Verbindung fehl, die dieses Protokoll benutzt. Das erklärt auch, wieso Authentifizierungsfehler entstehen, wenn man sich gegen einen IIS authentifiziert, aber nicht, wenn man sich gegen Ordner auf einem Fileserver authentifiziert. Die Standardpuffergröße für Kerberos auf Windows 7 und Windows Server 2008R2 liegt bei 12k. Dies gilt auch, wenn man eine 2012er Domäne mit älteren Clients (Windows 7 und älter) hat. Daraus resultiert, dass man für die alten Clients das Kerberos Ticket manuell erhöhen muss, wenn man mit der Größe des Tickets Probleme hat. Wie das funktioniert wird weiter unten beschrieben.

Windows 8 und Windows Server 2012

Lassen Sie uns einen Blick auf die Fakten heutiger IT-Umgebungen werfen… Authentifizierung und Autorisierung wird nicht einfacher; es wird immer komplexer. In einer Welt von Single-Sign-On und User-Claims wird das Aufkommen an Autorisierungsdaten immer größer. Ein Ansteigen der Autorisierungsdaten in einer Infrastruktur, die bereits mit Authentifizierungsfehlern Bekanntschaft gemacht hat, weil ein User in zu vielen Gruppen Mitglied war, ruft einige Sorgen für die Zukunft hervor. Glücklicherweise gibt es in Windows 8 und Windows Server 2012 Eigenschaften, die uns helfen, Gegenmaßnahmen zu ergreifen und solche Probleme zu vermeiden.

 


Standard MaxTokenSize

Windows 8 und Windows Server 2012 profitieren von einer erweiterten MaxTokenSize von 48k. Wenn die Tokensize für HTTP genutzt wird, werden also 48k Speicher für den Authentifizierungspuffer zugewiesen, wodurch wesentlich mehr Autorisierungsinformationen enthalten sein können, als in früheren Windowsversionen, die standardmäßig nur eine MaxTokenSize von 12K unterstützten.

Group Policy Einstellungen

Windows 8 und Server 2012 führen zwei neue computerbasierte Policy-Einstellungen ein, die im Kampf gegen große Servicetickets helfen, die durch das MaxTokenSize Dilemma auftreten. Die erste dieser Policy-Einstellungen ist nicht wirklich neu, sie befand sich schon seit Jahren in Windows, allerdings nur als ein Registry-Wert. Um per Gruppenrichtlinie (Group Policy) die MaxTokenSize zu ändern, benutzen Sie „Maximale Puffergröße für Kerberos-SSPI-Kontexttoken festlegen“. Wenn man diese Richtlinieneinstellung etwas näher betrachtet findet man schnell heraus, dass das Icon für diese Einstellung etwas anders aussieht, als die anderen.

Der Unterschied wird dem Ort in der Registry zugeschrieben den die Policy ändert, wenn sie aktiviert/deaktiviert ist. Diese Registry-Einstellung ist die gleiche, die auch in früheren Windowsversionen benutzt wurde.

Group Policy Einstellungen

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters\MaxTokenSize

Deshalb kann man diese Computerbasierte Policy-Einstellung nutzen, um Windows 8, Windows Server 2012 und frühere Windowsversionen zu verwalten. Der Haken an der Sache ist, dass diese Registry Location eine nicht verwaltete Policy Location ist. Verwaltete Policy Locations werden während Policy-Aktualisierungen entfernt und überschrieben, um andauernde Einstellungen zu vermeiden, wenn eine Einstellung in einem Group-Policy-Objekt obsolet wird. Dieses Verhalten trifft nicht auf diesen Key zu; wenn die Einstellung einmal per Policy gesetzt wurde, wird sie nicht während einer erneuten Anwendung entfernt. Deshalb bleibt diese Policy-Einstellung bestehen, auch wenn das Group-Policy-Objekt abläuft, das diese Einstellung enthält.

Die zweite Policy-Einstellung ist sehr interessant und beantwortet die Frage, die Kunden immer stellen, wenn ein Problem mit MaxTokenSize auftritt: “Wie groß ist das Token?” Sie könnten einer dieser Leute sein, die sich auf den Spießrutenlauf begeben haben um mit TOKENSZ.EXE und unzähligen Stunden die optimale MaxTokenSize für Ihre Umgebung herauszufinden. Diese Zeiten sind vorbei. Eine neue “KDC-Policy-Einstellung” “Warnung für große Kerberos-Tickets” stattet Sie mit einer neuen Lösung aus, um die Größe der Kerberos Tickets zu beobachten, die vom Kerberos-Server (KDC = Key-Distribution-Center) ausgestellt wurden.

Wenn Sie diese Einstellung aktivieren, müssen Sie den Schwellenwert Größe konfigurieren. Der KDC nutzt diesen Schwellenwert, um eine Warnung in das System-Eventlog zu schreiben. Wenn der KDC ein Ticket ausstellt, welches den Schwellenwert überschreitet, schreibt er eine Warnung. Aktiviert man diese Einstellung, wird der Standardwert auf 12k gesetzt, was der Standard MaxTokenSize der älteren Windowsversionen entspricht.

Warnung Kerberos Tokensize

Idealerweise sollten Sie, wenn Sie diese Einstellung benutzen, den Schwellenwert ca. 1k unter dem aktuellen MaxTokenSize setzen, damit die Warnung vor einer zu großen Tokensize rechtzeitig erfolgt, bevor Authentifizierungsfehler zu vermeiden. (Der Schwellenwert beträgt minimal 12K und kann daher leider bei einer MaxTokenSize von 12K nicht mehr als „Frühwarnsystem“ genutzt werden.)
Vorsicht: Wenn man die Schwelle zu niedrig setzt, treten die Event-31 Warnungen häufiger auf und man beginnt schnell sie zu ignorieren. Setzt man den Wert zu hoch an, werden dagegen eher die Authentifizierungsfehler als die Warnungen bemerkt.

Tokensize Event

 


Werbung:
NTFS Verzeichnis- und Berechtigungsstrukturen
optimieren, aufräumen, migrieren: 
mit migRaven

migRaven für das Überarbeiten ganzer Verzeichnis- und Rechtestrukturen


Wie hoch ist die MaxTokenSize?

Hier die Erklärung wie man nun die Probleme mit der fummeligen Arbeit mit TOKENSZ und anderen Tools lösen kann, um die MaxTokenSize herauszufinden. Wenn man nun die Details der Kerberos-Key-Distribution-Center Warnung mit der Event-ID 31 untersucht, findet man heraus, dass es einem alle Informationen liefert, um die optimale MaxTokenSize in der eigenen Umgebung zu bestimmen. Im folgenden Beispiel ist der User „Ned“ Mitglied von mehr als 1000 Gruppen. Wenn man nun versucht, sich als User Ned mittels RUNAS Kommando einzuloggen, generiert man ein Event ID 31. Die Event Beschreibung versorgt Sie mit dem service pricipal name, dem user pricipal name, der Größe des angefragten Tickets und der Größe des Schwellwertes. Das befähigt Sie, alle Events mit der ID 31 zu sammeln und die maximale angefragte Ticketgröße zu ermitteln. Mit diesen Informationen bewaffnet, können Sie nun die optimale MaxTokenSize für Ihre Umgebung einstellen.

Event 31

KDC Resource SID Compression

Die Kerberos Authentifizierung beinhaltet die SID des Security Principal, die SID-History und alle Gruppen in denen der User Mitglied ist. Security Principals mit zu vielen Gruppenmitgliedschaften beeinflussen stark die Größe der Authentifizierungsinformationen. Manchmal sind die Informationen größer als die zugewiesene Größe die Kerberos den Anwendungen meldet. Das kann in manchen Anwendungen Authentifizierungsfehler hervorrufen. SIDs aus der Ressource Domäne haben den gleichen Domänenabschnitt der SID. Diese SIDs können komprimiert werden, wenn man die Ressource Domänen SID einmal für alle SIDs in der Ressource Domäne zur Verfügung stellt.

Windows Server 2012 KDCs reduzieren die Größe der PAC durch diesen Vorteil der Ressource SID Komprimierung. Ein Windows Server 2012 KDC komprimiert standardmäßig die Ressource SIDs. Um die Ressource SIDs zu komprimieren, speichert der KDC die SID der Ressource Domäne in denen die Ziel Ressource Mitglied ist. Dann wird nur der Abschnitt der relativen ID (RID) von jeder Ressource SID in den ResourceGroupIds-Abschnitt der Authentifizierungsinformationen eingefügt.

 

Play Knopf für Video Jetzt ansehen! – Unsere aktuelle Webinaraufzeichnung
zu den Best Practices der NTFS Berechtigungsvergabe!

 

Die Ressource-SID-Komprimierung reduziert die Größe jeder gespeicherten Instanz einer Ressource SID, weil die Domänen SID nur einmal anstatt für jede Instanz gespeichert wird. Ohne Ressource-SID-Komprimierung, fügt der KDC alle hinzugefügten SIDs aus der Ressource Domäne in einen Extra-SID-Abschnitt der PAC Struktur (die eine Liste von SIDs ist) ein. [MS-KILE]

Interoperabilität

Andere Kerberos Implementationen können unter Umständen die Ressource-Gruppen-Komprimierung nicht verstehen und damit inkompatibel sein. In solchen Szenarios ist es notwendig, die Ressource-Gruppen-Komprimierung zu deaktivieren um dem Windows Server 2012 KDC zu erlauben, mit diesen Third-Party-Implementationen zu interagieren.
Ressource-SID-Komprimierung ist standardmäßig eingeschaltet, man kann es aber auch deaktivieren. Dies geschieht auf einem 2012er KDC indem man den Registry-Wert „DisableResourceGroupsFields“ unter dem „HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\Kdc\Parameters“-Registry-Schlüssel benutzt. Dieser Registry-Wert hat den Typ DWORD. Wenn man diesen Wert auf 1 setzt deaktiviert man die Ressource-SID-Komprimierung komplett. Der KDC liest diese Konfiguration wenn ein Service Ticket erstellt wird. Mit diesem aktivierten Bit, wird der KDC die Ressource-SID-Komprimierung nicht verwenden, wenn er ein Service-Ticket ausstellt.

Fazit

Das sind die kleinen Erweiterungen die mit Windows 8 und Windows Server 2012 kommen, die speziell auf große Service-Ticket- und MaxTokenSize-Szenarios abzielen.
Zusammenfassung:

  • Erweiterung der Standard MaxTokenSize von 12k auf 48k
  • Neue Group Policy Einstellung um MaxTokenSize zentral zu verwalten
  • Neue Group-Policy-Einstellung um Warnungen in das System-Eventlog zu schreiben wenn ein Service-Ticket einen angegebenen Schwellwert überschreitet
  • Neue Resource-SID-Komprimierung um die Speichergröße der SIDs der Ressource-Domäne zu reduzieren

der aikux Berechtigungsworkshop  Ι  KnowHow-Videos  Ι  Das Migrationstool migRaven

1 Ping

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*
= 3 + 1

Wordpress SEO Plugin by SEOPressor