Freigeben über


Verwenden eines Protokollanalysetestszenarios zur Problembehandlung der Kerberos-Authentifizierung

In diesem Artikel wird eine hypothetische Client- und Serverbereitstellung verwendet, um die Problembehandlung bei Kerberos-Authentifizierungsproblemen zu veranschaulichen.

Umgebung und Konfiguration

  • Der Benutzer "John" gehört zur contoso.com Domäne.

  • Alle Dns-Server (Domain Name System) der Domäne sind Domänencontroller.

  • John ist bei einem Clientcomputer angemeldet, der wie folgt konfiguriert ist:

    • Name und Domäne: Client1.contoso.com

    • Betriebssystem: Windows 11

    • Browser: Microsoft Edge

    • Überwachungsanwendung: Netzwerkmonitor (von Microsoft Network Monitor installiert)

    • Konfiguration von Internetoptionen: Alle contoso.com Websites gehören zur lokalen Intranetzone.

      Screenshot der Interneteigenschaften, die zeigen, dass sich alle Websites

  • Auf dem Clientcomputer stellt John eine Verbindung zu einem Zielserver her, der wie folgt konfiguriert ist:

    • Name und Domäne: IISServer.contoso.com

    • Betriebssystem: Windows Server 2019

    • Zieldienst: Eine in den Internet Information Services (IIS) ausgeführte Website.

    • Zieldienstkonto: Das Computerkonto (der Dienst wird im Kontext von IISServer.contoso.com)

    • Zieldienstport: TCP-Port 80

    • Authentifizierungskonfiguration (konfiguriert im Internetinformationsdienste-Manager):

      • Die Windows-Authentifizierung ist aktiviert.

        Screenshot des Fensters

      • Die Liste der aktivierten Authentifizierungsanbieter enthält "Negotiate", wie im folgenden Screenshot gezeigt:

        Screenshot des Fensters

    • Anmeldeüberwachungskonfiguration: Die Anmeldeerfolgsüberwachung und die Anmeldefehlerüberwachung sind beide aktiviert.

      Hinweis

      Standardmäßig ist bei allen Windows Server-Betriebssystemen die Anmeldeüberwachung für Erfolgs- und Fehlanmeldungen aktiviert. Um diese Einstellung zu überprüfen, öffnen Sie ein Fenster mit administrativen Eingabeaufforderungen, und führen Sie dann den folgenden Befehl aus:

      auditpol /get /Subcategory:"logon"
      

      Wenn die Einstellung aktiviert ist, generiert dieser Befehl die folgende Ausgabe:

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

      Wenn dieses Ergebnis nicht angezeigt wird, führen Sie den folgenden Befehl aus, um die Erfolgs- und Fehlerüberwachungsprotokollierung zu aktivieren:

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

Erwarteter Authentifizierungsfluss

Das folgende Diagramm zeigt die Sequenz von Kerberos-Anforderungs- und Antwortnachrichten sowie die Pfade dieser Nachrichten in der Umgebung, die im vorherigen Abschnitt beschrieben werden.

Screenshot eines Authentifizierungsflusses.

Der Prozess wird gestartet, wenn Der Benutzer John, der am Clientcomputer Client1.contoso.comangemeldet ist, einen Microsoft Edge-Browser öffnet und eine Verbindung herstellt IISServer.contoso.com.

Schritt 1 tritt auf dem Clientcomputer auf und enthält die folgenden Schritte:

  1. Der DNS-Resolverdienst speichert IISServer.contoso.com im Cache, um zu überprüfen, ob diese Information bereits zwischengespeichert ist.
  2. Der DNS-Resolverdienst überprüft die HOSTS-Datei (C:\Windows\System32\drivers\etc\Hosts) auf eine beliebige Zuordnung von IISServer.contoso.com.
  3. Der DNS-Clientdienst sendet eine DNS-Abfrage an den bevorzugten DNS-Server (wie in den IP-Konfigurationseinstellungen konfiguriert).

Schritt 2 tritt auf dem DNS-Server (Domänencontroller) auf und umfasst die folgenden Schritte:

  1. Der DNS-Serverdienst überprüft die konfigurierten Zonen, sucht den Host-A-Eintrag und löst IISServer.contoso.com zu der IP-Adresse 192.168.2.104 auf.
  2. Der DNS-Server gibt die IP-Adresse an den Clientcomputer zurück.

Schritt 3 tritt auf dem Clientcomputer auf und enthält die folgenden Schritte:

  1. Der Clientcomputer stellt mittels TCP-Port 80 einen TCP-Drei-Wege-Handshake mit IISServer.contoso.com her.
  2. Der Clientcomputer sendet eine anonyme HTTP-Anforderung an IISServer.contoso.com.

Schritt 4 tritt auf dem Zielserver auf und enthält die folgenden Schritte:

  1. Der Webdienst (ausgeführt als IISServer.contoso.com) empfängt die Anforderung von Client1.contoso.com.
  2. Der Webdienst sendet eine Antwortnachricht an Client1.contoso.com, die eine HTTP 401-Herausforderung enthält. die Nachricht gibt "Negotiate" als bevorzugter Authentifizierungsanbieter und NTLM als sekundärer Authentifizierungsanbieter an.

Schritt 5 tritt auf dem Clientcomputer auf und enthält die folgenden Schritte:

  1. Der Clientcomputer empfängt die Herausforderungsantwortnachricht von IISServer.contoso.com.
  2. Der Microsoft Edge-Prozess überprüft, ob IISServer.contoso.com sie zur lokalen Intranetzone gehört. Daher sollte der Authentifizierungsprozess Kerberos anstelle von NTLM verwenden.
  3. Der Microsoft Edge-Prozess ruft LSASS.exe auf, um nach einem Serviceticket für IISServer.contoso.com zu suchen.
  4. In diesem Fall verfügt der Clientcomputer nicht über ein entsprechendes Serviceticket. Der Microsoft Edge-Prozess sendet eine Anforderung an das Kerberos Distribution Center (KDC) für ein Ticket.

Schritt 6 tritt auf dem Domänencontroller auf und enthält die folgenden Schritte:

  1. Der Domänencontroller (KDC-Dienst) empfängt die Anforderung Client1.contoso.com und sucht nach dem Dienst, der den SPN HTTP\IISServer.contoso.com (oder HOST\IISServer.contoso.com) verwendet.
  2. Der Domänencontroller identifiziert den angeforderten Dienst als den Web-Service, der im Kontext von IISServer.contoso.com läuft.
  3. Der Domänencontroller sendet eine Antwort auf den Clientcomputer, der ein Dienstticket für den IISServer.contoso.com Webdienst enthält.

Schritt 7 tritt auf dem Domänencontroller auf und enthält die folgenden Schritte:

  1. Der Microsoft Edge-Prozess erstellt eine AP-Nachricht (Kerberos Application Protocol), die das Dienstticket enthält.
  2. Der Microsoft Edge-Prozess sendet die AP-Nachricht an IISServer.contoso.com als Reaktion auf die Aufforderungsantwortnachricht „HTTP 401“.

Schritt 8 tritt auf dem Webserver auf und enthält die folgenden Schritte:

  1. Der IIS-Prozess fragt den lokalen LSASS.exe Prozess ab.
  2. Der LSASS.exe Prozess entschlüsselt das Ticket und erstellt dann ein Token für den Benutzer, der eine SessionID und Johns Gruppenmitgliedschaften enthält.
  3. Der LSASS.exe Prozess gibt ein Handle für das Token an den IIS-Prozess zurück.
  4. Der IIS-Prozess überprüft die Gruppeninformationen im Token, um sicherzustellen, dass John über die Berechtigung für den Zugriff auf die angeforderte Seite verfügt.
  5. Der IIS-Prozess sendet die angeforderte Seite an den Browser.

Verwenden des Netzwerkmonitors zum Aufzeichnen eines Authentifizierungstests

Führen Sie die folgenden Schritte aus, um Ablaufverfolgungsdaten in einer Umgebung zu sammeln, die dem im Abschnitt "Umgebung und Konfiguration " beschriebenen ähnelt. Während dieses Tests sollten die Systemkomponenten auf die Weise interagieren, die im Abschnitt "Erwarteter Authentifizierungsfluss " beschrieben wird.

Hinweis

Um die Verfahren in diesem Abschnitt zu verwenden, müssen Sie zur lokalen Gruppe "Administratoren" gehören:

  1. Öffnen Sie auf dem Clientcomputer ein Verwaltungs-Eingabeaufforderungsfenster, und führen Sie dann aus ipconfig /flushdns.
  2. Öffnen Sie den Netzwerkmonitor, und starten Sie die Aufzeichnung.
  3. Öffnen Sie Microsoft Edge. Geben Sie in der Adressleiste http://iisserver.contoso.com ein.
  4. Wenn der Microsoft Edge-Vorgang abgeschlossen ist, beenden Sie die Aufzeichnung im Netzwerkmonitor.

Überprüfen der Daten, die der Authentifizierungstest generiert

Der Authentifizierungstest generiert die folgenden Informationen:

  • Netzwerkmonitor-Überwachungsdaten
  • Ticketdaten
  • Prüfungserfolgs- und Prüfungsfehlschlag-Ereignisdaten für Authentifizierungsereignisse

Der Rest dieses Abschnitts enthält weitere Details dazu, welche Daten der Authentifizierungsfluss erzeugt.

Überprüfen der Ablaufverfolgungsdaten für wichtige Ereignisse

Suchen Sie in den Tracedaten nach Informationen, die wie die folgenden Auszüge aussehen:

  • DNS-Abfrage an den Domänencontroller für den Host-A-Eintrag fürIISServer.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
    
  • DNS-Antwort vom DNS-Dienst auf dem Domänencontroller:

    3006    00:59:30.0743438    DCA.contoso.com    Client1.contoso.com    DNS    DNS:QueryId = 0x666A, QUERY (Standard query), Response - Success, 192.168.2.104
    
  • Anonyme Anforderung vom Microsoft Edge-Prozess an Client1.contoso.com den IISServer.contoso.com IIS-Webserver:

    3027    00:59:30.1609409    Client1.contoso.com    iisserver.contoso.com    HTTP    HTTP:Request, GET /
    Host:  iisserver.contoso.com
    
  • HTTP 401-Rückmeldung auf die Authentifizierungsanforderung von IISServer.contoso.com zu 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
    
  • Serviceticketanforderung von Client1.contoso.com an den Domänencontroller DCA.contoso.com für den Dienst, der HTTP/iisserver.contoso.com als SPN verwendet (auch bekannt als TGS-Anforderungsnachricht):

    3034    00:59:30.1834048    Client1.contoso.com    DCA.contoso.com    KerberosV5    KerberosV5:TGS Request Realm: CONTOSO.COM Sname: HTTP/iisserver.contoso.com
    
  • Antwort auf das Serviceticket von DCA.contoso.com, die das Serviceticket für IISServer.contoso.com enthält (auch als TGS-Antwortnachricht bekannt):

    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
    
  • Zweite Anfrage vom Microsoft Edge-Prozess auf Client1.contoso.com nach IISServer.contoso.com. Diese Nachricht enthält das Serviceticket:

    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
    
  • Nachricht vom IIS-Server zu Client1.contoso.com. Diese Meldung gibt an, dass der Benutzer authentifiziert und autorisiert ist:

    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)
    

Überprüfen Sie die Ticketinformationen auf dem Clientcomputer

Führen Sie an einer Eingabeaufforderung auf dem Clientcomputer den Befehl klist tickets aus. Die Ausgabe sollte dem folgenden Auszug ähneln:

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

Überprüfen Sie die Prüfereignisse auf dem Zielserver

Wechseln Sie in der Ereignisanzeige auf IISServer.contoso.com zu den Windows-Protokollen> und dann zum Sicherheitsprotokoll, um Anmeldeereignisse zu überprüfen. Suchen Sie nach Instanzen der Ereignis-ID 4624 oder 4625, und überprüfen Sie die folgenden Felder:

  • Schlüsselwörter: Audit-Erfolg oder Audit-Fehler
  • Anmeldetyp: 3 (Netzwerkanmeldung)
  • Sicherheits-ID im Feld "Neue Anmeldung ": Contoso\John
  • Quellnetzwerkadresse: IP-Adresse des Clientcomputers
  • Anmeldeprozess und Authentifizierungspaket: Kerberos

Der vollständige Text des Ereignisdatensatzes ähnelt dem folgenden Auszug:

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

Beheben Sie Probleme im Authentifizierungsworkflow

Überprüfen Sie die Netzwerkablaufverfolgungen, um zu beobachten, welcher Schritt fehlschlägt, damit Sie den Ort im Prozess einschränken können, in dem das Problem auftritt. Verwenden Sie diese Informationen, um zu ermitteln, welche Problembehandlungsmethoden Ihnen bei der Behebung des Problems helfen können.

Überprüfen der Netzwerkkonnektivität

Wenn es in der DNS- oder TCP-Kommunikation ein Problem gibt, überprüfen Sie die folgenden Interaktionen:

  • Stellen Sie sicher, dass Sie den Namen des Zielservers (IISServer.contoso.com) vom Clientcomputer (Client1.contoso.com) auflösen können.

  • Überprüfen Sie, ob der DNS-Server die IP-Adresse des Zielservers korrekt ermittelt. Öffnen Sie dazu ein PowerShell-Fenster, und führen Sie dann das folgende Cmdlet aus:

    Resolve-DnsName -Name IISServer.contoso.com
    

    Die Ausgabe dieses Cmdlets sollte dem folgenden Auszug ähneln:

    Name                                       Type   TTL   Section    IPAddress
    ----                                       ----   ---   -------    ---------
    IISServer.contoso.com                      A      1200  Answer     192.168.2.104
    
  • Stellen Sie sicher, dass die erforderlichen Netzwerkports zwischen dem Clientcomputer und dem Zielserver geöffnet sind. Führen Sie dazu das folgenden Cmdlet aus:

    Test-NetConnection -Port 80 IISServer.contoso.com 
    

    Die Ausgabe dieses Cmdlets sollte dem folgenden Auszug ähneln:

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

Überprüfen der Ticketinformationen auf dem Clientcomputer

  1. Öffnen Sie ein standardmäßiges Eingabeaufforderungsfenster (anstelle eines Administrator-Eingabeaufforderungsfensters) im Kontext des Benutzers, der versucht, auf die Website zuzugreifen.

  2. Führen Sie die folgenden Befehle in der angegebenen Reihenfolge aus:

    klist purge
    klist get http/iisserver.contoso.com
    

    Die Ausgabe dieser Befehle sollte dem folgenden Auszug ähneln:

    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
    

    Dieser Auszug gibt an, dass das Ticket erfolgreich abgerufen wurde. Die Details des Tickets werden im Abschnitt "Zwischengespeicherte Tickets" als "#1>" bezeichnet.

Überprüfen Sie, ob der IIS-Webdienst auf dem IIS-Server ausgeführt wird, indem Sie die Standardanmeldeinformationen verwenden.

Öffnen Sie ein standardmäßiges PowerShell-Eingabeaufforderungsfenster (anstelle eines administrativen PowerShell-Eingabeaufforderungsfensters) im Kontext des Benutzers, der versucht, auf die Website zuzugreifen:

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

Die Ausgabe dieser Befehle sollte dem folgenden Auszug ähneln:

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

Überprüfen des Sicherheitsereignisprotokolls auf dem Zielserver

Wechseln Sie in der Ereignisanzeige auf dem Zielserver zu den Windows-Protokollen> und öffnen Sie das Sicherheitsprotokoll. Suchen Sie nach Instanzen der Ereignis-ID 4624 (Überwachungserfolg) oder 4625 (Überwachungsfehler).

Überprüfen, ob andere Dienste ordnungsgemäß funktionieren

Führen Sie die folgenden Schritte aus, um zu überprüfen, ob andere Dienste auf dem Zielserver die Kerberos-Authentifizierung verarbeiten können:

  1. Erstellen Sie auf dem Zielserver eine Dateifreigabe, oder identifizieren Sie eine vorhandene Dateifreigabe, die zum Testen verwendet werden soll. Stellen Sie sicher, dass Sie (in der Rolle von "John") die Leseberechtigung für den Ordner haben.

  2. Melden Sie sich auf dem Clientcomputer an (als Benutzer "John"), und öffnen Sie dann Den Windows-Explorer.

  3. Geben Sie in der Adressleiste \\IISServer.contoso.com \Software$ ein.

  4. Öffnen Sie auf dem Zielserver die Ereignisanzeige, und überprüfen Sie dann die Sicherheitsereignisse. Überprüfen Sie, ob es neue Ereignis-ID 4624-Ereignisse oder Ereignis-ID 4625-Ereignisse gibt.

  5. Führen Sie auf dem Clientcomputer den klist tickets Befehl an der Eingabeaufforderung aus. Die Befehlsausgabe sollte ein Serviceticket für CIFS/IISServer.contoso.com enthalten, wie im folgenden Auszug dargestellt:

    #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