Compartir a través de


Uso de un escenario de prueba de análisis de registros para solucionar problemas de autenticación Kerberos

En este artículo se usa una implementación hipotética de cliente y servidor para demostrar los enfoques de solución de problemas de autenticación Kerberos.

Entorno y configuración

  • El usuario "John" pertenece al contoso.com dominio.

  • Todos los servidores del sistema de nombres de dominio (DNS) del dominio son controladores de dominio.

  • John ha iniciado sesión en un equipo cliente que está configurado de la siguiente manera:

    • Nombre y dominio: Client1.contoso.com

    • Sistema operativo: Windows 11

    • Explorador: Microsoft Edge

    • Aplicación de supervisión: Monitor de red (instalado desde Microsoft Network Monitor)

    • Configuración de opciones de Internet: todos los contoso.com sitios pertenecen a la zona de intranet local

      Captura de pantalla de las propiedades de Internet en la que se muestra que todos los sitios web de

  • En el equipo cliente, John se conecta a un servidor de destino que está configurado de la siguiente manera:

    • Nombre y dominio: IISServer.contoso.com

    • Sistema operativo: Windows Server 2019

    • Servicio de destino: sitio web que se ejecuta en Internet Information Services (IIS)

    • Cuenta de servicio de destino: la cuenta de computadora (el servicio funciona en el contexto de IISServer.contoso.com)

    • Puerto de servicio de destino: puerto TCP 80

    • Configuración de autenticación (configurada en Internet Information Services Manager):

      • La autenticación de Windows está habilitada.

        Captura de pantalla de la ventana administrador de Internet Information Services que muestra que la autenticación de Windows está habilitada.

      • La lista de proveedores de autenticación habilitados incluye Negotiate, como se muestra en la captura de pantalla siguiente:

        Captura de pantalla de la ventana Proveedores que muestra los proveedores habilitados incluye Negotiate.

    • Configuración de auditoría de inicio de sesión: la auditoría de éxitos y la auditoría de fallos de inicio de sesión están habilitadas.

      Nota:

      De forma predeterminada, todos los sistemas operativos Windows Server tienen habilitada la auditoría de inicio de sesión de éxito y error. Para comprobar esta configuración, abra una ventana de comandos con privilegios de administrador y, a continuación, ejecute el siguiente comando:

      auditpol /get /Subcategory:"logon"
      

      Si la configuración está habilitada, este comando genera la siguiente salida:

      System audit policy
      Category/Subcategory                    Setting
      Logon/Logoff
        Logon                                 Success and Failure
      

      Si no ve este resultado, ejecute el siguiente comando para habilitar el registro de auditoría de éxito y fallo:

      auditpol /set /subcategory:"Logon" /Success:enable /Failure:enable
      

Flujo de autenticación esperado

En el diagrama siguiente se muestra la secuencia de mensajes de solicitud y respuesta de Kerberos y las rutas de acceso de esos mensajes en el entorno que se describe en la sección anterior.

Captura de pantalla de un flujo de autenticación.

El proceso se inicia cuando el usuario John, que ha iniciado sesión en el equipo Client1.contoso.comcliente, abre un explorador de Microsoft Edge y se conecta a IISServer.contoso.com.

El paso 1 se produce en el equipo cliente e incluye los pasos siguientes:

  1. El servicio de resolución DNS almacena en caché IISServer.contoso.com para comprobar si esta información ya está almacenada en caché.
  2. El servicio de resolución DNS comprueba el archivo HOSTS (C:\Windows\System32\drivers\etc\Hosts) para cualquier mapeo de IISServer.contoso.com.
  3. El servicio de cliente DNS envía una consulta DNS al servidor DNS preferido (tal como se ha configurado en las opciones de configuración de IP).

El paso 2 se produce en el servidor DNS (controlador de dominio) e incluye los pasos siguientes:

  1. El servicio de servidor DNS comprueba sus zonas configuradas, localiza el registro "A" del host y lo resuelve a la dirección IP IISServer.contoso.com192.168.2.104.
  2. El servidor DNS devuelve la dirección IP al equipo cliente.

El paso 3 se produce en el equipo cliente e incluye los pasos siguientes:

  1. El equipo cliente realiza un protocolo de enlace de tres vías TCP con IISServer.contoso.com mediante el puerto TCP 80.
  2. El equipo cliente envía una solicitud HTTP anónima a IISServer.contoso.com.

El paso 4 se produce en el servidor de destino e incluye los pasos siguientes:

  1. El servicio web (que se ejecuta como IISServer.contoso.com) recibe la solicitud de Client1.contoso.com.
  2. El servicio web envía un mensaje de respuesta a Client1.contoso.com que contiene una respuesta de desafío "HTTP 401". el mensaje especifica Negotiate como proveedor de autenticación preferido y NTLM como proveedor de autenticación secundario.

El paso 5 se produce en el equipo cliente e incluye los pasos siguientes:

  1. El ordenador cliente recibe el mensaje de respuesta al desafío de IISServer.contoso.com.
  2. El proceso de Microsoft Edge comprueba que IISServer.contoso.com pertenece a la zona de intranet local. Por lo tanto, el proceso de autenticación debe usar Kerberos en lugar de NTLM.
  3. El proceso de Microsoft Edge llama a LSASS.exe para buscar un ticket de servicio para IISServer.contoso.com.
  4. En este caso, el equipo cliente no tiene un ticket de servicio apropiado. El proceso de Microsoft Edge envía una solicitud al Centro de distribución de Kerberos (KDC) para un vale.

El paso 6 se produce en el controlador de dominio e incluye los pasos siguientes:

  1. El controlador de dominio (servicio KDC) recibe la solicitud de Client1.contoso.com y busca el servicio que usa el SPN HTTP\IISServer.contoso.com (o HOST\IISServer.contoso.com).
  2. El controlador de dominio identifica el servicio solicitado como el servicio web que se ejecuta en el contexto de IISServer.contoso.com.
  3. El controlador de dominio envía una respuesta al equipo cliente que incluye una incidencia de servicio para el IISServer.contoso.com servicio web.

El paso 7 se produce en el controlador de dominio e incluye los pasos siguientes:

  1. El proceso de Microsoft Edge crea un mensaje de Protocolo de aplicación Kerberos (AP) que incluye el vale de servicio.
  2. El proceso de Microsoft Edge envía el mensaje AP a IISServer.contoso.com en respuesta al mensaje de respuesta de desafío "HTTP 401".

El paso 8 se produce en el servidor web e incluye los pasos siguientes:

  1. El proceso de IIS consulta el proceso de LSASS.exe local.
  2. El LSASS.exe proceso descifra el vale y, a continuación, crea un token para el usuario que incluye un ID de sesión y las membresías de grupo de John.
  3. El proceso LSASS.exe devuelve al proceso de IIS un identificador para el token.
  4. El proceso de IIS comprueba la información del grupo en el token para asegurarse de que John tiene permiso para acceder a la página solicitada.
  5. El proceso de IIS envía la página solicitada al explorador.

Uso de Network Monitor para registrar una prueba de autenticación

Siga estos pasos para recopilar datos de seguimiento en un entorno similar al descrito en la sección Entorno y configuración . Durante esta prueba, los componentes del sistema deben interactuar de la manera que se describe en la sección Flujo de autenticación esperado .

Nota:

Para usar los procedimientos de esta sección, debe pertenecer al grupo administradores local:

  1. En el equipo cliente, abra una ventana de comandos con privilegios administrativos y, a continuación, ejecute ipconfig /flushdns.
  2. Abra Network Monitor e inicie la grabación.
  3. Abra Microsoft Edge. En la barra de direcciones, escriba http://iisserver.contoso.com.
  4. Cuando finalice la operación de Microsoft Edge, detenga la grabación en el Monitor de red.

Revise los datos que genera la prueba de autenticación.

La prueba de autenticación genera la siguiente información:

  • Datos de seguimiento de Network Monitor
  • Datos de tickets
  • Datos de eventos de éxito de auditoría y fallo de auditoría para eventos de autenticación

El resto de esta sección proporciona más detalles sobre los datos que genera el flujo de autenticación.

Revisión de los datos de seguimiento para eventos significativos

En los datos de seguimiento, busque información similar a los siguientes extractos de seguimiento:

  • Consulta DNS al controlador de dominio para el registro "A" del hostIISServer.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
    
  • Solicitud anónima del proceso de Microsoft Edge en Client1.contoso.com al servidor web IIS IISServer.contoso.com:

    3027    00:59:30.1609409    Client1.contoso.com    iisserver.contoso.com    HTTP    HTTP:Request, GET /
    Host:  iisserver.contoso.com
    
  • Mensaje de respuesta de desafío HTTP 401 de IISServer.contoso.com a Client1.contoso.com:

    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
    
  • Solicitud de vale de servicio desde Client1.contoso.com al controlador DCA.contoso.com de dominio para el servicio que usa HTTP/iisserver.contoso.com como SPN (también conocido como mensaje de solicitud de TGS):

    3034    00:59:30.1834048    Client1.contoso.com    DCA.contoso.com    KerberosV5    KerberosV5:TGS Request Realm: CONTOSO.COM Sname: HTTP/iisserver.contoso.com
    
  • Respuesta de vale de servicio de DCA.contoso.com que incluye el vale de servicio para IISServer.contoso.com (también conocido como mensaje de respuesta de TGS):

    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
    
  • Segunda solicitud del proceso de Microsoft Edge desde Client1.contoso.com hacia IISServer.contoso.com. Este mensaje incluye el vale de servicio:

    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
    
  • Mensaje del servidor IIS a Client1.contoso.com. Este mensaje indica que el usuario está autenticado y autorizado:

    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)
    

Verifique la información del ticket en el equipo cliente.

En un símbolo del sistema de comandos del ordenador cliente, ejecute klist tickets. La salida debe ser similar al fragmento siguiente:

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

Revisión de eventos de auditoría en el servidor de destino

En el Visor de eventos de IISServer.contoso.com, vaya al registro Registros de Windows>Seguridad para revisar los eventos de inicio de sesión. Busque instancias del identificador de evento 4624 o 4625 y compruebe los campos siguientes:

  • Palabras clave: Auditoría correcta o Error de auditoría
  • Tipo de inicio de sesión: 3 (inicio de sesión de red)
  • Identificador de seguridad en el campo Nuevo inicio de sesión : Contoso\John
  • Dirección de red de origen: dirección IP del equipo cliente
  • Proceso de inicio de sesión y paquete de autenticación: Kerberos

El texto completo del registro de eventos es similar al siguiente extracto:

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 del flujo de trabajo de autenticación

Revise los seguimientos de red para observar qué paso produce un error para que pueda restringir la ubicación en el proceso en el que se produce el problema. Use esta información para determinar qué métodos de solución de problemas pueden ayudarle a solucionar el problema.

Comprobación de la conectividad de red

Si parece haber un problema en las comunicaciones DNS o TCP, compruebe las siguientes interacciones:

  • Compruebe que puede resolver el nombre del servidor de destino (IISServer.contoso.com) desde el equipo cliente (Client1.contoso.com).

  • Compruebe que el servidor DNS resuelve correctamente la dirección IP del servidor de destino. Para ello, abra una ventana de PowerShell y ejecute el siguiente cmdlet:

    Resolve-DnsName -Name IISServer.contoso.com
    

    La salida de este cmdlet debe ser similar al fragmento siguiente:

    Name                                       Type   TTL   Section    IPAddress
    ----                                       ----   ---   -------    ---------
    IISServer.contoso.com                      A      1200  Answer     192.168.2.104
    
  • Compruebe que los puertos de red necesarios están abiertos entre el equipo cliente y el servidor de destino. Para ello, ejecute el siguiente cmdlet:

    Test-NetConnection -Port 80 IISServer.contoso.com 
    

    La salida de este cmdlet debe ser similar al fragmento siguiente:

    ComputerName     : IISServer.contoso.com
    RemoteAddress    : 192.168.2.104
    RemotePort       : 80
    InterfaceAlias   : Ethernet 2
    SourceAddress    : 192.168.2.101
    TcpTestSucceeded : True
    

Verifique la información del ticket en el ordenador del cliente

  1. Abra una ventana estándar del símbolo del sistema (en lugar de una ventana del símbolo del sistema administrativa) en el contexto del usuario que intenta acceder al sitio web.

  2. Ejecute los siguientes comandos, en el orden especificado:

    klist purge
    klist get http/iisserver.contoso.com
    

    La salida de estos comandos debe ser similar al fragmento siguiente:

    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
    

    Este extracto indica que el boleto se recuperó correctamente. Los detalles del ticket se etiquetan como "#1>" en la sección Tickets en caché.

Compruebe que el servicio web IIS se ejecuta en el servidor IIS mediante las credenciales predeterminadas.

Abra una ventana estándar de PowerShell (en lugar de una ventana administrativa de PowerShell) en el contexto del usuario que intenta acceder al sitio web:

invoke-webrequest -Uri http://IIsserver.contoso.com -UseDefaultCredentials

La salida de estos comandos debe ser similar al fragmento siguiente:

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 de destino.

En el Visor de eventos del servidor de destino, vaya al registro de Windows>de seguridad. Busque instancias del identificador de evento 4624 (auditoría correcta) o 4625 (error de auditoría).

Comprobación de que otros servicios funcionan correctamente

Para comprobar que otros servicios del servidor de destino pueden procesar la autenticación Kerberos, siga estos pasos:

  1. En el servidor de destino, cree un recurso compartido de archivos o identifique un recurso compartido de archivos existente que se usará para realizar pruebas. Asegúrese de que, en calidad de "John", tiene permiso de lectura en la carpeta.

  2. En el equipo cliente, inicie sesión (como el usuario "John") y, a continuación, abra el Explorador de Windows.

  3. En la barra de direcciones, escriba \\IISServer.contoso.com \Software$.

  4. En el servidor de destino, abra el Visor de eventos y, a continuación, revise los eventos de seguridad. Verifique si hay nuevos eventos de ID de evento 4624 o ID de evento 4625.

  5. En el equipo cliente, ejecute el klist tickets comando en el símbolo del sistema. La salida del comando debe incluir un vale de servicio para CIFS/IISServer.contoso.com, como se muestra en el fragmento siguiente:

    #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