Problema
En entornos mixtos donde controladores de dominio (DC) ejecutan Windows Server 2025 y los clientes son distribuciones Linux (SLES, openSUSE, RHEL, etc.), es frecuente que la autenticación Kerberos falle de forma intermitente. Los logs de sssd o krb5kdc suelen mostrar errores de pre‑autenticación, mientras que tcpdump revela paquetes Kerberos que nunca llegan a completarse. El patrón típico es:
kinitdevuelve KDC_ERR_PREAUTH_FAILED o KRB_AP_ERR_MODIFIED.sssdregistra “PKINIT failed” o “KDC response missing”.- La falla ocurre únicamente cuando el DC es Windows Server 2025; versiones anteriores (2019/2022) funcionan sin problemas.
Este comportamiento se ha asociado a la nueva extensión PKINIT Freshness que Microsoft introdujo en la pila Kerberos de Server 2025. La extensión verifica la frescura del ticket PKINIT contra una marca de tiempo que, en algunas configuraciones Linux, no se genera o no se interpreta correctamente, provocando el rechazo del ticket.
Causa
La raíz del problema radica en la interacción entre tres componentes:
- Implementación PKINIT Freshness (RFC 3961) – Windows Server 2025 envía un campo de frescura adicional en el ticket PKINIT. Si el cliente no incluye el valor esperado, el KDC lo descarta.
- Cliente Kerberos en Linux – La mayoría de los paquetes (
krb5-workstation,sssd,libkrb5) todavía siguen la especificación original y no generan el campo de frescura. Algunas distribuciones lo ignoran por completo. - Política de dominio – La GPO KDC support for PKINIT Freshness Extension está habilitada por defecto en Server 2025. Cuando está activa, el KDC exige la frescura; cuando está desactivada, el comportamiento vuelve al de versiones anteriores.
Factores que aumentan la probabilidad de error:
- Uso de
sssdconkrb5_auth_timeoutbajo. - Clocks desincronizados entre DC y clientes (aunque NTP suele estar configurado, la tolerancia de frescura es más estricta).
- Certificados PKINIT emitidos por una CA externa que no incluye extensiones de marca de tiempo.
Solución
Desactivar la extensión PKINIT Freshness en los controladores de dominio elimina la verificación adicional y permite que los clientes Linux continúen usando el flujo PKINIT estándar. La solución se puede aplicar de tres formas:
1. GPO (recomendado)
Crear o editar una GPO que afecte a los DC y desactivar la política:
- Ruta:
Computer Configuration → Policies → Windows Settings → Security Settings → Account Policies → Kerberos Policy → KDC support for PKINIT Freshness Extension. - Cambiar el valor a Disabled.
- Enlazar la GPO a la OU que contiene los DC y forzar la actualización con
gpupdate /force.
2. Registro directamente en los DC
Si la infraestructura no usa GPO, modificar el registro del KDC:
reg add "HKLM\System\CurrentControlSet\Services\Kdc\Parameters" /v "PKInitFreshnessEnabled" /t REG_DWORD /d 0 /f
Reiniciar el servicio KDC (net stop kdc && net start kdc) o el servidor completo.
3. PowerShell (automatización)
Para despliegues masivos, usar PowerShell con el módulo GroupPolicy:
Import-Module GroupPolicy
Set-GPRegistryValue -Name "Disable PKINIT Freshness" -Key "HKLM\System\CurrentControlSet\Services\Kdc\Parameters" -ValueName "PKInitFreshnessEnabled" -Type DWord -Value 0
Luego, aplicar la GPO a los DC y ejecutar gpupdate /force.
Importante: Verificar que la política no sea requerida por otras aplicaciones (por ejemplo, soluciones de autenticación de terceros que dependan de la frescura). En la mayoría de entornos corporativos que solo usan Kerberos para AD, la desactivación es segura.
Cuándo aplicar esta solución
- Síntomas: errores de pre‑autenticación en Linux, fallos de
kinit, tickets Kerberos que nunca se emiten desde un DC Windows Server 2025. - Entorno: dominios con controladores 2025 y clientes Linux que usan PKINIT (por ejemplo,
sssdconkrb5_auth_type = pkinit). - No aplicar: si la infraestructura depende de la extensión PKINIT Freshness para cumplir requisitos de seguridad específicos (p.ej., políticas de cumplimiento que exigen la marca de tiempo). En esos casos, actualizar los paquetes Kerberos en Linux o usar una versión de Windows Server que aún no requiera la extensión.
Código
# Desactivar PKINIT Freshness vía registro (ejecutar en cada DC)
reg add "HKLM\System\CurrentControlSet\Services\Kdc\Parameters" /v "PKInitFreshnessEnabled" /t REG_DWORD /d 0 /f
# Forzar actualización de políticas
gpupdate /force
# Reiniciar el servicio KDC (opcional)
net stop kdc && net start kdc
Verificación
- En un cliente Linux, limpiar tickets existentes:
kdestroy -A. - Ejecutar
kinit -X X509_user_identity=FILE:/path/to/keytab user@DOMINIO. - Confirmar que el ticket se obtiene sin errores (
klist -fmuestra un ticket válido). - Revisar los logs del DC (
Event Viewer → Windows Logs → Security) y buscar entradas de Kerberos sin menciones a PKINIT Freshness. - Si la autenticación sigue fallando, validar la sincronización de tiempo (
ntpstatochronyc tracking) y revisar que la GPO se haya aplicado (gpresult /r).
Notas adicionales
- La desactivación es reversible; basta con volver a habilitar la política o establecer el registro a
1. - Mantener los relojes sincronizados sigue siendo crítico; la tolerancia de Kerberos sigue siendo de 5 minutos por defecto.
- Algunas versiones de
sssdpermiten habilitar la extensión mediante la opciónkrb5_freshness = trueensssd.conf. Si la política no puede desactivarse, explorar esa vía antes de cambiar la configuración del DC. - Documentar cualquier cambio de GPO en el repositorio de configuraciones de dominio evita sorpresas en auditorías.