Cómo configurar el tamaño del token Kerberos con la opción MaxTokenSize

Cómo solucionar el tamaño del ticket Kerberos y los problemas de autenticación relacionados

Gestionar errores de autenticación relacionados con Kerberos puede ser frustrante, especialmente cuando los usuarios empiezan a recibir errores de «Acceso denegado» o mensajes extraños de «Encabezado de solicitud demasiado largo».A veces se debe a que el ticket de Kerberos es demasiado grande debido a la cantidad de miembros de grupos, problemas con el historial SIDH o tokens demasiado grandes. Esta guía se centra en cómo determinar el tamaño del token para un usuario y en los pasos para ajustar el sistema para gestionar tickets más grandes si es necesario. Porque, claro, Windows tiene que complicarlo un poco.

Cómo solucionar el tamaño del ticket Kerberos y los problemas de autenticación relacionados

Método 1: comprobar el tamaño del token Kerberos de un usuario

Esto ayuda a comprender si el tamaño de su ticket Kerberos excede la capacidad de su sistema y es especialmente útil si detecta errores en el Visor de eventos, como los ID de evento 40960 o errores de seguridad de Kerberos. Windows no ofrece una forma sencilla e integrada de ver esta información, pero un script de PowerShell desde un repositorio de GitHub puede ser la solución. Básicamente, estima el tamaño total de sus grupos de seguridad, SIDHistory y el tamaño total del token.

Primero, descarga el script de este enlace de GitHub. Guárdalo como [nombre CheckMaxTokenSize.ps1].Luego, permite que los scripts se ejecuten, algo como esto:

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

Navega hasta donde guardaste el script, por ejemplo, cd C:\scripts\y ejecútalo con el nombre de usuario, como:

.\CheckMaxTokenSize.ps1 -Principals 'yourusername' -Details $true

El script mostrará el tamaño estimado del token, la cantidad de grupos, información de SIDHistory y si el tamaño está cerca o supera el máximo predeterminado en Windows (que generalmente es 12 KB en Windows 7 y 48 KB en Windows 8/Server 2012+).

Tras la ejecución, verás si el tamaño de tu token es lo suficientemente grande como para causar problemas, especialmente si se acerca o supera los límites predeterminados. Una gran cantidad de grupos anidados o SIDHistory puede aumentar el tamaño rápidamente. Esta información ayuda a decidir si reducir los grupos o aumentar el MaxTokenSize es la mejor opción.

Método 2: Reducir las membresías de grupos de usuarios

Esta suele ser la solución más sencilla, aunque no siempre factible. Si un usuario pertenece a cientos de grupos, especialmente a los anidados, se produce un aumento repentino del tamaño del ticket. No sé por qué funciona, pero reducir la membresía en los grupos (o eliminar SIDHistory, si es posible) puede evitar que el token Kerberos se sobrecargue. Incluso deshabilitar las opciones de delegación especiales puede ser útil en ocasiones, ya que reduce el contenido del ticket.

Consejo profesional: Verifique las membresías de los grupos de usuarios con:

Get-ADUser -Identity 'username' -Properties MemberOf, SIDHistory | Select-Object MemberOf, SIDHistory

Si detecta una cantidad descontrolada de grupos, hable con su administrador sobre la posibilidad de reducir las membresías o limpiar SIDHistory para reducir el tamaño de los tickets.

Método 3: Aumentar el valor de registro MaxTokenSize

Este es el punto clave si reducir los grupos no es suficiente o no es una opción. Puedes aumentar el valor de MaxTokenSize (por ejemplo, hasta 64 KB), pero ten cuidado: ajustarlo demasiado puede tener consecuencias para el rendimiento o la seguridad. El valor predeterminado es de 12 KB en versiones anteriores de Windows y se extiende a 48 KB en las versiones más recientes. Para aumentarlo, debes editar el registro:

  1. Abra el Editor del Registro ( regedit )
  2. Vaya a HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters
  3. Cree un nuevo valor DWORD (32 bits) llamado MaxTokenSize
  4. Establezca su valor (decimal) en algo así como 48000 (para 48 KB).Ajústelo según sus necesidades.
  5. Reinicie para que los cambios surtan efecto.

Para confirmar el cambio de registro, ejecute:

Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters | Select-Object MaxTokenSize

Esto ayuda a Windows a asignar un búfer más grande para la autenticación Kerberos, lo que reduce los errores, especialmente para usuarios con membresías de grupos masivos.

Y sí, puede configurarlo mediante la directiva de grupo en Configuración del equipo > Directivas > Plantillas administrativas > Sistema > Kerberos. Busque la opción «Tamaño máximo del búfer del token de contexto SSPI de Kerberos».

No te excedas: Microsoft recomienda no superar los 64 KB. Porque, claro, un búfer más grande implica un mayor uso de memoria y, quizás, algunas consideraciones de seguridad.

Método 4: Solucionar errores HTTP 400 de IIS al usar Kerberos

Si su sitio web muestra errores HTTP 400 como «Encabezado de solicitud demasiado largo», probablemente se deba a que los grupos de seguridad están provocando que los tokens Kerberos superen los límites de IIS. Esto ocurre cuando IIS intenta introducir una gran cantidad de información de grupo en el WWW-Authenticateencabezado.

Para solucionar esto, modifique el registro en HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters :

  • MaxFieldLength : el valor predeterminado es 16 KB. Aumente gradualmente, por ejemplo, hasta 32 000 (32 KB).
  • MaxRequestBytes : el valor predeterminado es 16 MB, pero puede aumentarlo para manejar encabezados más grandes si es necesario, por ejemplo, 48000 bytes.

Recuerde que aumentar estos valores puede afectar el rendimiento y la seguridad del servidor. Realice los cambios de forma incremental y luego reinicie IIS:

iisreset

Generalmente esto resuelve el problema, pero cuando los grupos son grandes, es mejor reducir la cantidad o el alcance de las membresías del grupo en lugar de simplemente aumentar los tamaños de los encabezados.

Resumen

  • Verifique el tamaño del token Kerberos de su usuario para ver si esa es la causa raíz.
  • Reducir las membresías excesivas de grupos o SIDHistory si es posible.
  • Aumente la configuración de registro MaxTokenSize para permitir tickets más grandes (hasta 64 KB), con cuidado.
  • Ajuste los límites del encabezado IIS si recibe errores HTTP 400 al usar la autenticación Kerberos.

Resumen

Gestionar el tamaño de los tickets Kerberos es una combinación de diagnóstico y ajustes. No siempre es sencillo, pero con estos pasos, puede identificar si el tamaño es el responsable y solucionarlo. Normalmente, reducir el volumen del grupo o aumentar el búfer en los endpoints afectados es la solución. Pero no espere milagros si su usuario está en cientos de grupos; a veces, la única solución real es limpiar las membresías de los grupos o el historial SIDH.

Ojalá esto le ahorre algunas horas a alguien. Mucha suerte y estén atentos a los registros del Visor de Eventos para ver si los errores disminuyen después de los ajustes.