Guía de solución de problemas de autenticación Kerberos
En esta guía se proporcionan los conceptos fundamentales que se usan al solucionar problemas de autenticación Kerberos.
Lista de comprobación de solución de problemas
Un error relacionado con Kerberos es un síntoma de otro error de servicio. El protocolo Kerberos se basa en muchos servicios que deben estar disponibles y funcionar correctamente para que se produzca cualquier autenticación.
Para determinar si se produce un problema con la autenticación Kerberos, compruebe el registro de eventos del sistema para ver si hay errores de cualquier servicio filtrelo mediante el filtrado mediante el "origen" (por ejemplo, Kerberos, kdc, LsaSrv o Netlogon) en el cliente, el servidor de destino o el controlador de dominio que proporcionan autenticación. Si existe algún error de este tipo, también podría haber errores asociados al protocolo Kerberos.
Las auditorías de errores en el registro de eventos de seguridad del servidor de destino podrían mostrar que se usaba el protocolo Kerberos cuando se produjo un error de inicio de sesión.
Antes de inspeccionar el protocolo Kerberos, asegúrese de que los siguientes servicios o condiciones funcionan correctamente:
- La infraestructura de red funciona correctamente y todos los equipos y servicios pueden comunicarse.
- Se puede acceder al controlador de dominio. Puede ejecutar el comando
nltest /dsgetdc:<Domain Name> /force /kdc
(por ejemplo,nltest /dsgetdc:contoso.com /force /kdc
) en el cliente o en el servidor de destino. - El sistema de nombres de dominio (DNS) está configurado correctamente y resuelve correctamente los nombres de host y los servicios.
- Los relojes se sincronizan entre el dominio.
- Se instalan todas las actualizaciones críticas y las actualizaciones de seguridad de Windows Server.
- Todo el software, incluido el software que no es de Microsoft, se actualiza.
- El equipo se reinicia si ejecuta un sistema operativo de servidor.
- Los servicios y el servidor necesarios están disponibles. El protocolo de autenticación Kerberos requiere que un controlador de dominio, una infraestructura DNS y una red funcionen correctamente. Compruebe que puede acceder a estos recursos antes de empezar a solucionar problemas del protocolo Kerberos.
Si ha examinado todas estas condiciones y sigue teniendo problemas de autenticación o errores de Kerberos, debe buscar más información sobre una solución. Los problemas pueden deberse a la configuración del protocolo Kerberos o a la configuración de otras tecnologías que funcionan con el protocolo Kerberos.
Problemas comunes y soluciones
Problemas de delegación de Kerberos
En un escenario típico, la cuenta de suplantación sería una cuenta de servicio asignada a una aplicación web o a la cuenta de equipo de un servidor web. La cuenta suplantada sería una cuenta de usuario que requiere acceso a los recursos a través de una aplicación web.
Hay tres tipos de delegación mediante Kerberos:
Delegación completa (delegación sin restricciones)
La delegación completa debe evitarse tanto como sea posible. El usuario (usuario front-end y usuario back-end) se puede ubicar en dominios diferentes y también en bosques diferentes.
Delegación restringida (solo Kerberos y transición de protocolo)
El usuario puede ser de cualquier dominio o bosque, pero los servicios front-end y back-end deben ejecutarse en el mismo dominio.
Delegación restringida basada en recursos (RBCD)
El usuario puede ser de cualquier dominio y los recursos front-end y back-end pueden ser de cualquier dominio o bosque.
Solución de problemas más comunes de delegación de Kerberos
- El nombre de entidad de seguridad de servicio falta o está duplicado
- Errores de resolución de nombres o respuestas incorrectas (direcciones IP incorrectas dadas para un nombre de servidor)
- El tamaño de vales kerberos grande (MaxTokenSize) y el entorno no se configuran correctamente
- Puertos bloqueados por firewalls o enrutadores
- La cuenta de servicio no tiene los privilegios adecuados (Asignación de permisos del usuario)
- Servicios front-end o back-end que no están en el mismo dominio y configuración de delegación restringida (no RBCD)
Para más información, vea:
- Error de delegación restringida para CIFS con error de ACCESS_DENIED
- Configuración de la delegación restringida para una cuenta de servicio personalizada
- Configuración de la delegación restringida en la cuenta de NetworkService
Se ha interrumpido el inicio de sesión único (SSO) y se solicita la autenticación una vez.
Considere los casos siguientes:
- Una aplicación cliente y servidor como Microsoft Edge e Internet Information Services (IIS). El servidor IIS está configurado con autenticación de Windows (Negotiate).
- Una aplicación cliente y servidor como un cliente SMB y un servidor SMB. De forma predeterminada, el servidor SMB se configura con Negotiate Security Support Provider Interface (SSPI).
Un usuario abre Microsoft Edge y examina un sitio web http://webserver.contoso.com
interno. El sitio web está configurado con Negotiate y este sitio web solicita autenticación. Después de que el usuario escriba manualmente el nombre de usuario y la contraseña, el usuario obtiene la autenticación y el sitio web funciona según lo previsto.
Nota:
Este escenario es un ejemplo de un cliente y un servidor. La técnica de solución de problemas es la misma para cualquier cliente y servidor configurado con la autenticación integrada de Windows.
La autenticación de Windows integrada se interrumpe en el nivel de usuario o en el nivel de máquina.
Métodos de solución de problemas
Revise la configuración del cliente para obtener una configuración de autenticación integrada, que se puede habilitar en un nivel de aplicación o máquina. Por ejemplo, todas las aplicaciones basadas en HTTP buscarían que el sitio se encuentra en una zona de confianza al intentar realizar la autenticación integrada.
Abra inetcpl.cpl (Opciones de Internet), que todas las aplicaciones basadas en HTTP usan para las configuraciones de Internet Explorer y revise si el sitio web está configurado como intranet local.
Las aplicaciones también tienen una configuración para realizar autenticación de Windows integrados.
Microsoft Edge o Internet Explorer tiene una configuración Habilitar la autenticación integrada de Windows para habilitarse.
Revise la configuración de la aplicación y el equipo cliente puede obtener un vale kerberos para un nombre de entidad de seguridad de servicio determinado (SPN). En este ejemplo, el SPN es
http/webserver.contoso.com
.Mensaje de operación correcta cuando pueda encontrar el SPN:
C:>klist get http/webserver.contoso.com Current LogonId is 0:0x9bd1f A ticket to http/webserver.contoso.com has been retrieved successfully.
Mensaje de error cuando no encuentra el SPN:
C:>klist get http/webserver.contoso.com klist failed with 0xc000018b/-1073741429: The SAM database on the Windows Server does not have a computer account for this workstation trust relationship.
Identifique y agregue los SPN correspondientes a las cuentas de usuario, servicio o máquina adecuadas.
Si ha identificado que los SPN se pueden recuperar, puede comprobar si están registrados en la cuenta correcta mediante el comando siguiente:
setspn -F -Q */webserver.contoso.com
Problemas de detección del controlador de dominio de autenticación
Los servidores de aplicaciones configurados con integrated autenticación de Windows necesitan controladores de dominio (CONTROLADORES) para autenticar el usuario o el equipo y el servicio.
La incapacidad de ponerse en contacto con un controlador de dominio durante el proceso de autenticación produce el error 1355:
El dominio especificado no existe o no se pudo establecer contacto con él
No se puede acceder a un recurso configurado con integrated autenticación de Windows con un error 1355
Nota:
Los mensajes de error pueden diferir de un punto de vista de la aplicación, pero el significado del error es que el cliente o servidor no puede detectar un controlador de dominio.
Estos son ejemplos de estos mensajes de error:
-
Se produjo el siguiente error al intentar unirse al dominio "Contoso":
El dominio especificado no existe o no se pudo establecer contacto con él. -
No se encontró el controlador de dominio para el dominio contoso.com
-
No se pudo ponerse en contacto con el controlador de dominio 1355
Principales causas del problema
Configuración incorrecta de DNS en el cliente
Puede ejecutar el
ipconfig /all
comando y revisar la lista de servidores DNS.Configuración incorrecta de DNS en los controladores de dominio de un dominio o bosque de confianza
Puertos de red bloqueados entre el cliente y los controladores de dominio
Puertos de detección de DC: UDP 389 (UDP LDAP) y UDP 53 (DNS)
Pasos para solucionar problemas
- Ejecute el
nslookup
comando para identificar cualquier configuración incorrecta de DNS. - Abra los puertos necesarios entre el cliente y el controlador de dominio. Para obtener más información, vea Cómo configurar un firewall para dominios de Active Directory y confianza.
Escenario de prueba de análisis de registros
Entorno y configuración
Máquina cliente
Client1.contoso.com
(una máquina Windows 11) se une al dominioContoso.com
.Usuario
John
El usuario pertenece a
Contoso.com
e inicia sesión en el equipo cliente.Opciones de Internet en el equipo cliente
Todos los sitios web forman parte de la zona de intranet local.
Server
IISServer.contoso.com
(Windows Server 2019) se une al dominioContoso.com
.Configuración de autenticación
La autenticación de Windows está habilitada.
Proveedores de autenticación: Negociar
Los proveedores habilitados se establecen de la manera siguiente:
Flujo de autenticación
- El usuario
John
inicia sesión enClient1.contoso.com
, abre un explorador de Microsoft Edge y se conecta aIISServer.contoso.com
. - La máquina cliente realizará los pasos siguientes (paso 1 en el diagrama anterior):
- La resolución DNS almacena en
IISServer.contoso.com
caché para comprobar si esta información ya está almacenada en caché. - La resolución DNS comprueba el archivo HOSTS para cualquier asignación de
IISServer.contoso.com
ubicada en C:\Windows\System32\drivers\etc\Hosts. - Envíe una consulta DNS al servidor DNS preferido (configurado en las opciones de configuración de IP), que también es un controlador de dominio en el entorno.
- La resolución DNS almacena en
- El servicio DNS que se ejecuta en el controlador de dominio examinará sus zonas configuradas, resolverá el registro A del host y responderá con una dirección IP de
IISServer.contoso.com
(paso 2 en el diagrama anterior). - La máquina cliente realizará un protocolo de enlace de tres vías TCP en el puerto TCP 80 a
IISServer.contoso.com
. - El equipo cliente enviará una solicitud HTTP anónima a
IISServer.contoso.com
. - El servidor IIS que escucha en el puerto 80 recibirá la solicitud de , examine la configuración de
Client1.contoso.com
autenticación de los servidores IIS y envíe una respuesta de desafío HTTP 401 al equipo cliente con Negotiate como configuración de autenticación (paso 3 en el diagrama anterior). - El proceso de Microsoft Edge que se ejecuta en
Client1.contoso.com
sabrá que el servidor IIS está configurado con Negotiate y comprobará si el sitio web forma parte de la zona de intranet local. Si el sitio web está en la zona de intranet local, el proceso de Microsoft Edge llamará a LSASS.exe para obtener un vale kerberos con un SPNHTTP\IISServer.contoso.com
(paso 5 en el diagrama anterior). - El controlador de dominio (servicio KDC) recibirá la solicitud de
Client1.contoso.com
, busque su base de datos para el SPNHTTP\IISServer.contoso.com
y la búsquedaIISServer.contoso.com
esté configurada con este SPN. - El controlador de dominio responderá con una respuesta TGS con el vale para el servidor IIS (paso 6 del diagrama anterior).
- El proceso de Microsoft Edge en el equipo cliente enviará una solicitud de Protocolo de aplicación Kerberos (AP) al servidor web IIS con el vale de TGS de Kerberos emitido por el controlador de dominio.
- El proceso de IIS llamará a LSASS.exe en el servidor web para descifrar el vale y crear un token con la pertenencia a grupos SessionID y Users para la autorización.
- El proceso de IIS obtendrá un identificador de LSASS.exe al token para tomar decisiones de autorización y permitir que el usuario se conecte con una respuesta ap.
Análisis de Network Monitor del flujo de trabajo
Nota:
Debe ser un usuario del grupo administradores local para realizar las actividades siguientes.
Instale Microsoft Network Monitor en el equipo cliente (
Client1.contoso.com
).Ejecute el siguiente comando en una ventana del símbolo del sistema con privilegios elevados (cmd.exe):
ipconfig /flushdns
Inicie el Monitor de red.
Abra el explorador Microsoft Edge y escriba
http://iisserver.contoso.com
.Análisis de seguimiento de red:
Consulta DNS al controlador de dominio para un registro host A:
IISServer.contoso.com
.3005 00:59:30.0738430 Client1.contoso.com DCA.contoso.com DNS DNS:QueryId = 0x666A, QUERY (Standard query), Query for iisserver.contoso.com of type Host Addr on class Internet
Respuesta DNS del servicio DNS en el controlador de dominio.
3006 00:59:30.0743438 DCA.contoso.com Client1.contoso.com DNS DNS:QueryId = 0x666A, QUERY (Standard query), Response - Success, 192.168.2.104
El proceso de Microsoft Edge en
Client1.contoso.com
se conecta al servidorIISServer.contoso.com
web de IIS (conexión anónima).3027 00:59:30.1609409 Client1.contoso.com iisserver.contoso.com HTTP HTTP:Request, GET / Host: iisserver.contoso.com
El servidor IIS responde con la respuesta HTTP 401: Negotiate y NTLM (configuración realizada en el servidor IIS).
3028 00:59:30.1633647 iisserver.contoso.com Client1.contoso.com HTTP HTTP:Response, HTTP/1.1, Status: Unauthorized, URL: /favicon.ico Using Multiple Authetication Methods, see frame details WWWAuthenticate: Negotiate WWWAuthenticate: NTLM
La solicitud kerberos de va al controlador
DCA.contoso.com
deClient1.contoso.com
dominio con un SPN:HTTP/iisserver.contoso.com
.3034 00:59:30.1834048 Client1.contoso.com DCA.contoso.com KerberosV5 KerberosV5:TGS Request Realm: CONTOSO.COM Sname: HTTP/iisserver.contoso.com
El controlador
DCA.contoso.com
de dominio responde de nuevo con la solicitud Kerberos, que tiene una respuesta de TGS con un vale kerberos.3036 00:59:30.1848687 DCA.contoso.com Client1.contoso.com KerberosV5 KerberosV5:TGS Response Cname: John Ticket: Realm: CONTOSO.COM, Sname: HTTP/iisserver.contoso.com Sname: HTTP/iisserver.contoso.com
El proceso
Client1.contoso.com
de Microsoft Edge ahora va al servidor IIS con una solicitud de AP de Kerberos.3040 00:59:30.1853262 Client1.contoso.com iisserver.contoso.com HTTP HTTP:Request, GET /favicon.ico , Using GSS-API Authorization Authorization: Negotiate Authorization: Negotiate YIIHGwYGKwYBBQUCoIIHDzCCBwugMDAuBgkqhkiC9xIBAgIGCSqGSIb3EgECAgYKKwYBBAGCNwICHgYKKwYBBAGCNwICCqKCBtUEggbRYIIGzQYJKoZIhvcSAQICAQBugga8MIIGuKADAgEFoQMCAQ6iBwMFACAAAACjggTvYYIE6zCCBOegAwIBBaENGwtDT05UT1NPLkNPTaIoMCagAwIBAqEfMB0bBEhUVFAbF SpnegoToken: 0x1 NegTokenInit: ApReq: KRB_AP_REQ (14) Ticket: Realm: CONTOSO.COM, Sname: HTTP/iisserver.contoso.com
El servidor IIS responde de nuevo con una respuesta que la autenticación se ha completado.
3044 00:59:30.1875763 iisserver.contoso.com Client1.contoso.com HTTP HTTP:Response, HTTP/1.1, Status: Not found, URL: / , Using GSS-API Authentication WWWAuthenticate: Negotiate oYG2MIGzoAMKAQChCwYJKoZIgvcSAQICooGeBIGbYIGYBgkqhkiG9xIBAgICAG+BiDCBhaADAgEFoQMCAQ+ieTB3oAMCARKicARuIF62dHj2/qKDRV5XjGKmyFl2/z6b9OHTCTKigAatXS1vZTVC1dMvtNniSN8GpXJspqNvEfbETSinF0ee7KLaprxNgTYwTrMVMnd95SoqBkm/FuY7WbTAuPvyRmUuBY3EKZEy NegotiateAuthorization: GssAPI: 0x1 NegTokenResp: ApRep: KRB_AP_REP (15)
Ejecute el
klist tickets
comando para revisar el vale kerberos en la salida del comando enClient1.contoso.com
.Client: John @ CONTOSO.COM Server: HTTP/iisserver.contoso.com @ CONTOSO.COM KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96 Ticket Flags 0x40a10000 -> forwardable renewable pre_authent name_canonicalize Start Time: 11/28/2022 0:59:30 (local) End Time: 11/28/2022 10:58:56 (local) Renew Time: 12/5/2022 0:58:56 (local) Session Key Type: AES-256-CTS-HMAC-SHA1-96 Cache Flags: 0 Kdc Called: DCA.contoso.com
Revise el identificador de evento 4624 en el servidor IIS que muestra la
Success
auditoría:
De forma predeterminada, las
Success
auditorías oFailure
están habilitadas en todo el sistema operativo servidor de Windows. Puede comprobar si la auditoría está habilitada mediante el siguiente comando.Si encuentra que la auditoría no está habilitada, habilite la auditoría. Revise la categoría de inicio de sesión en la lista siguiente. Como puede observar, la subcategoría de inicio de sesión está habilitada con
Success and Failure
.C:\>auditpol /get /Subcategory:"logon" System audit policy Category/Subcategory Setting Logon/Logoff Logon Success and Failure
Si no observa el inicio de sesión con
Success and Failure
, ejecute el comando para habilitarlo:C:\>auditpol /set /subcategory:"Logon" /Success:enable /Failure:enable The command was successfully executed.
Revise el identificador de evento de seguridad correcto 4624 en IISServer.contoso.com
Observe los siguientes campos:
Logon type
: 3 (inicio de sesión de red)Security ID
enNew Logon
el campo:Contoso\John
Source Network Address
: dirección IP de la máquina clienteLogon Process
yAuthentication Package
:Kerberos
Log Name: Security
Source: Microsoft-Windows-Security-Auditing
Date: 11/28/2022 12:59:30 AM
Event ID: 4624
Task Category: Logon
Level: Information
Keywords: Audit Success
User: N/A
Computer: IISServer.contoso.com
Description:
An account was successfully logged on.
Subject:
Security ID: NULL SID
Account Name: -
Account Domain: -
Logon ID: 0x0
Logon Information:
Logon Type: 3
Restricted Admin Mode: -
Virtual Account: No
Elevated Token: No
Impersonation Level: Impersonation
New Logon:
Security ID: CONTOSO\John
Account Name: John
Account Domain: CONTOSO.COM
Logon ID: 0x1B64449
Linked Logon ID: 0x0
Network Account Name: -
Network Account Domain: -
Logon GUID: {<GUID>}
Process Information:
Process ID: 0x0
Process Name: -
Network Information:
Workstation Name: -
Source Network Address: 192.168.2.101
Source Port: 52655
Detailed Authentication Information:
Logon Process: Kerberos
Authentication Package: Kerberos
Solución de problemas de flujo de trabajo de autenticación
Use uno de los métodos siguientes para solucionar el problema.
Compruebe si puede resolver el nombre del servidor web de IIS (
IISServer.contoso.com
) desdeClient1.contoso.com
.Compruebe si el servidor DNS responde de nuevo a la dirección IP correcta del servidor IIS mediante el siguiente cmdlet:
PS C:\> Resolve-DnsName -Name IISServer.contoso.com Name Type TTL Section IPAddress ---- ---- --- ------- --------- IISServer.contoso.com A 1200 Answer 192.168.2.104
Compruebe si los puertos de red se abren entre el equipo cliente y el servidor web de IIS (
IISServer.contoso.com
) mediante el siguiente cmdlet:PS C:\> Test-NetConnection -Port 80 IISServer.contoso.com ComputerName : IISServer.contoso.com RemoteAddress : 192.168.2.104 RemotePort : 80 InterfaceAlias : Ethernet 2 SourceAddress : 192.168.2.101 TcpTestSucceeded : True
Compruebe si recibe un vale kerberos del controlador de dominio.
Abra un símbolo del sistema normal (no un símbolo del sistema del administrador) en el contexto del usuario que intenta acceder al sitio web.
Ejecute el comando
klist purge
.Ejecute el comando
klist get http/iisserver.contoso.com
de la siguiente manera:PS C:\> klist get http/iisserver.contoso.com Current LogonId is 0:0xa8a98b A ticket to http/iisserver.contoso.com has been retrieved successfully. Cached Tickets: (2) #0> Client: John @ CONTOSO.COM Server: krbtgt/CONTOSO.COM @ CONTOSO.COM KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96 Ticket Flags 0x40e10000 -> forwardable renewable initial pre_authent name_canonicalize Start Time: 11/28/2022 1:28:11 (local) End Time: 11/28/2022 11:28:11 (local) Renew Time: 12/5/2022 1:28:11 (local) Session Key Type: AES-256-CTS-HMAC-SHA1-96 Cache Flags: 0x1 -> PRIMARY Kdc Called: DCA.contoso.com #1> Client: John @ CONTOSO.COM Server: http/iisserver.contoso.com @ CONTOSO.COM KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96 Ticket Flags 0x40a10000 -> forwardable renewable pre_authent name_canonicalize Start Time: 11/28/2022 1:28:11 (local) End Time: 11/28/2022 11:28:11 (local) Renew Time: 12/5/2022 1:28:11 (local) Session Key Type: AES-256-CTS-HMAC-SHA1-96 Cache Flags: 0 Kdc Called: DCA.contoso.com
Encontrará que obtiene un vale kerberos para el SPN
http/IISServer.contoso.com
en laCached Ticket (2)
columna.
Compruebe si el servicio web IIS se ejecuta en el servidor IIS con las credenciales predeterminadas.
Abra un símbolo del sistema de PowerShell normal (no un símbolo del sistema de PowerShell de administrador) en el contexto del usuario que intenta acceder al sitio web.
PS C:\> invoke-webrequest -Uri http://IIsserver.contoso.com -UseDefaultCredentials PS C:\> invoke-webrequest -Uri http://IIsserver.contoso.com -UseDefaultCredentials StatusCode : 200 StatusDescription : OK Content : <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" cont... RawContent : HTTP/1.1 200 OK Persistent-Auth: true Accept-Ranges: bytes Content-Length: 703 Content-Type: text/html Date: Mon, 28 Nov 2022 09:31:40 GMT ETag: "3275ea8a1d91:0" Last-Modified: Fri, 25 Nov 2022...
Revise el registro de eventos de seguridad en el servidor IIS:
- Registro de eventos correcto 4624
- Registro de eventos de error 4625
Proceso de aislamiento: puede usar los pasos de solución de problemas siguientes para comprobar si otros servicios del servidor IIS pueden procesar la autenticación Kerberos.
Requisitos previos:
El servidor IIS debe ejecutar una versión de servidor de Windows.
El servidor IIS debe tener abierto un puerto para servicios como SMB (puerto 445).
Cree un recurso compartido o proporcione al usuario
John
permisos para leer en una de las carpetas (por ejemplo, Software$) que ya se ha compartido en la máquina.Inicie sesión en
Client1.contoso.com
.Abra el Explorador de Windows.
Escriba \IISServer.contoso.com \Software$.
Abra Eventos de seguridad y
IISServer.contoso.com
compruebe si observa el identificador de evento 4624.Abra un símbolo del sistema normal en
Client1.contoso.com
como el usuarioJohn
. Ejecute elklist tickets
comando y revise el valeCIFS/IISServer.contoso.com
.#1> Client: John @ CONTOSO.COM Server: cifs/iisserver.contoso.com @ CONTOSO.COM KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96 Ticket Flags 0x40a10000 -> forwardable renewable pre_authent name_canonicalize Start Time: 11/28/2022 1:40:22 (local) End Time: 11/28/2022 11:28:11 (local) Renew Time: 12/5/2022 1:28:11 (local) Session Key Type: AES-256-CTS-HMAC-SHA1-96 Cache Flags: 0 Kdc Called: DCA.contoso.com
Recopile seguimientos de red en
Client1.contoso.com
. Revise los seguimientos de red para observar qué paso produce un error para que pueda restringir aún más los pasos y solucionar el problema.