Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule przedstawiono metody rozwiązywania problemów z uwierzytelnianiem kerberos przy użyciu hipotetycznego wdrożenia klienta i serwera.
Środowisko i konfiguracja
Użytkownik "Jan" należy do
contoso.comdomeny.Wszystkie serwery systemu nazw domen (DNS) domeny są kontrolerami domeny.
Jan jest zalogowany na komputerze klienckim skonfigurowanym w następujący sposób:
Nazwa i domena:
Client1.contoso.comSystem operacyjny: Windows 11
Przeglądarka: Microsoft Edge
Aplikacja do monitorowania: Monitor sieci (zainstalowany z usługi Microsoft Network Monitor)
Konfiguracja opcji internetowych: wszystkie
contoso.comwitryny należą do lokalnej strefy intranetu
Na komputerze klienckim Jan nawiązuje połączenie z serwerem docelowym skonfigurowanym w następujący sposób:
Nazwa i domena:
IISServer.contoso.comSystem operacyjny: Windows Server 2019
Usługa docelowa: witryna sieci Web działająca w usługach Internet Information Services (IIS)
Docelowe konto usługi: konto komputera (usługa działa w kontekście
IISServer.contoso.com)Port usługi docelowej: port TCP 80
Konfiguracja uwierzytelniania (skonfigurowana w Programie Internet Information Services Manager):
Uwierzytelnianie systemu Windows jest włączone.
Lista dostawców uwierzytelniania obejmuje Negotiate z włączoną obsługą, jak pokazano na poniższym zrzucie ekranu:
Konfiguracja inspekcji logowania: inspekcja powodzenia logowania i inspekcja niepowodzenia logowania są włączone.
Uwaga / Notatka
Domyślnie wszystkie systemy operacyjne Windows Server mają włączoną inspekcję powodzenia i niepowodzenia logowania. Aby sprawdzić to ustawienie, otwórz okno wiersza polecenia administracyjnego, a następnie uruchom następujące polecenie:
auditpol /get /Subcategory:"logon"Jeśli ustawienie jest włączone, to polecenie generuje następujące dane wyjściowe:
System audit policy Category/Subcategory Setting Logon/Logoff Logon Success and FailureJeśli nie widzisz tego wyniku, wykonaj poniższe polecenie, aby włączyć rejestrowanie wyników powodzenia i niepowodzenia:
auditpol /set /subcategory:"Logon" /Success:enable /Failure:enable
Oczekiwany przepływ uwierzytelniania
Na poniższym diagramie przedstawiono sekwencję komunikatów żądań i odpowiedzi protokołu Kerberos oraz ścieżki tych komunikatów w środowisku opisanym w poprzedniej sekcji.
Proces rozpoczyna się, gdy użytkownik Jan, który jest zalogowany na komputerze Client1.contoso.comklienckim , otwiera przeglądarkę Microsoft Edge i nawiązuje połączenie z IISServer.contoso.comusługą .
Krok 1 występuje na komputerze klienckim i obejmuje następujące kroki:
- Usługa rozpoznawania nazw DNS buforuje
IISServer.contoso.comdane w celu sprawdzenia, czy te informacje są już buforowane. - Usługa rozpoznawania nazw DNS sprawdza plik HOSTS (C:\Windows\System32\drivers\etc\Hosts) w celu wykrycia dowolnego mapowania
IISServer.contoso.com. - Usługa klienta DNS wysyła zapytanie DNS do preferowanego serwera DNS (zgodnie z konfiguracją ustawień konfiguracji adresu IP).
Krok 2 występuje na serwerze DNS (kontrolerze domeny) i obejmuje następujące kroki:
- Usługa serwera DNS sprawdza skonfigurowane strefy, lokalizuje rekord "A" hosta i rozpoznaje
IISServer.contoso.comadres192.168.2.104IP . - Serwer DNS zwraca adres IP na komputer kliencki.
Krok 3 występuje na komputerze klienckim i obejmuje następujące kroki:
- Komputer klienta wykonuje trójfazowe uzgadnianie TCP z
IISServer.contoso.comprzy użyciu portu TCP 80. - Komputer kliencki wysyła anonimowe żądanie HTTP do
IISServer.contoso.com.
Krok 4 występuje na serwerze docelowym i obejmuje następujące kroki:
- Usługa internetowa (uruchomiona jako
IISServer.contoso.com) odbiera żądanie odClient1.contoso.com. - Usługa internetowa wysyła do
Client1.contoso.comkomunikat z odpowiedzią, który zawiera wyzwanie "HTTP 401". komunikat określa Negotiate jako preferowany dostawca uwierzytelniania i NTLM jako dostawcę uwierzytelniania pomocniczego.
Krok 5 występuje na komputerze klienckim i obejmuje następujące kroki:
- Komputer klient otrzymuje komunikat odpowiedzi na żądanie z
IISServer.contoso.com. - Proces przeglądarki Microsoft Edge sprawdza, czy
IISServer.contoso.comnależy do lokalnej strefy intranetu. W związku z tym proces uwierzytelniania powinien używać protokołu Kerberos zamiast NTLM. - Proces przeglądarki Microsoft Edge wywołuje LSASS.exe, aby wyszukać bilet serwisowy dla elementu
IISServer.contoso.com. - W takim przypadku komputer kliencki nie ma odpowiedniego biletu usługi. Proces przeglądarki Microsoft Edge wysyła żądanie do Centrum dystrybucji Protokołu Kerberos (KDC) dla biletu.
Krok 6 występuje na kontrolerze domeny i obejmuje następujące kroki:
- Kontroler domeny (usługa KDC) odbiera żądanie od
Client1.contoso.comi wyszukuje usługę korzystającą z nazwy SPNHTTP\IISServer.contoso.com(lubHOST\IISServer.contoso.com). - Kontroler domeny identyfikuje żądaną usługę jako usługę internetową działającą w kontekście
IISServer.contoso.com. - Kontroler domeny wysyła komputerowi klienta odpowiedź, która zawiera bilet serwisowy dla
IISServer.contoso.comusługi internetowej.
Krok 7 występuje na kontrolerze domeny i obejmuje następujące kroki:
- Proces przeglądarki Microsoft Edge tworzy komunikat protokołu Kerberos Application Protocol (AP), który zawiera bilet usługi.
- Proces przeglądarki Microsoft Edge wysyła komunikat AP do
IISServer.contoso.comw odpowiedzi na wyzwanie "HTTP 401".
Krok 8 występuje na serwerze internetowym i obejmuje następujące kroki:
- Proces usług IIS wykonuje zapytania dotyczące lokalnego procesu LSASS.exe .
- Proces LSASS.exe odszyfrowuje bilet, a następnie tworzy token dla użytkownika, który obejmuje SessionID i członkostwo Johna w grupach.
- Proces LSASS.exe zwraca uchwyt dla tokenu związanego z procesem IIS.
- Proces usług IIS sprawdza informacje o grupie w tokenie, aby upewnić się, że Jan ma uprawnienia dostępu do żądanej strony.
- Proces usług IIS wysyła żądaną stronę do przeglądarki.
Używanie monitora sieciowego do rejestrowania testu uwierzytelniania
Wykonaj poniższe kroki, aby zebrać dane śledzenia w środowisku podobnym do tego, który został opisany w sekcji Środowisko i konfiguracja . Podczas tego testu składniki systemowe powinny wchodzić w interakcje w sposób opisany w sekcji Oczekiwany przepływ uwierzytelniania .
Uwaga / Notatka
Aby użyć procedur w tej sekcji, musisz należeć do lokalnej grupy Administratorzy:
- Na komputerze klienckim otwórz okno wiersza polecenia administracyjnego, a następnie uruchom polecenie
ipconfig /flushdns. - Otwórz monitor sieci i rozpocznij nagrywanie.
- Otwórz przeglądarkę Microsoft Edge. Na pasku adresu wprowadź .
http://iisserver.contoso.com - Po zakończeniu operacji przeglądarki Microsoft Edge zatrzymaj rejestrowanie w monitorze sieciowym.
Przeglądanie danych generowanych przez test uwierzytelniania
Test uwierzytelniania generuje następujące informacje:
- Dane śledzenia monitora sieci
- Dane biletu
- Dane zdarzeń powodzenia i niepowodzenia audytu dla zdarzeń uwierzytelniania
Pozostała część tej sekcji zawiera szczegóły dotyczące danych generowanych przez przepływ uwierzytelniania.
Przeglądanie danych śledzenia pod kątem znaczących zdarzeń
W danych z logów śledzenia poszukaj informacji przypominających następujące fragmenty logów.
Zapytanie DNS do kontrolera domeny dla rekordu "A" hosta dla
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 InternetOdpowiedź DNS z usługi DNS na kontrolerze domeny:
3006 00:59:30.0743438 DCA.contoso.com Client1.contoso.com DNS DNS:QueryId = 0x666A, QUERY (Standard query), Response - Success, 192.168.2.104Żądanie anonimowe z procesu przeglądarki Microsoft Edge na
Client1.contoso.comIISServer.contoso.comserwerze sieci Web usług IIS:3027 00:59:30.1609409 Client1.contoso.com iisserver.contoso.com HTTP HTTP:Request, GET / Host: iisserver.contoso.comKomunikat odpowiedzi wyzwania HTTP 401 z
IISServer.contoso.comdoClient1.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Żądanie biletu usługi z
Client1.contoso.comdo kontrolera domenyDCA.contoso.comdla usługi, która używaHTTP/iisserver.contoso.comjako SPN (znanego również jako komunikat żądania TGS):3034 00:59:30.1834048 Client1.contoso.com DCA.contoso.com KerberosV5 KerberosV5:TGS Request Realm: CONTOSO.COM Sname: HTTP/iisserver.contoso.comOdpowiedź na zgłoszenie serwisowe z
DCA.contoso.com, która zawiera bilet serwisowy dlaIISServer.contoso.com(znany również jako komunikat odpowiedzi 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.comDrugie żądanie z procesu Microsoft Edge na
Client1.contoso.comdoIISServer.contoso.com. Ten komunikat zawiera bilet usługi: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.comKomunikat z serwera IIS do
Client1.contoso.com. Ten komunikat wskazuje, że użytkownik jest uwierzytelniony i autoryzowany: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)
Przejrzyj informacje o biletach na komputerze klienckim
W wierszu polecenia na komputerze klienckim uruchom polecenie klist tickets. Dane wyjściowe powinny przypominać następujący fragment:
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
Przejrzenie zdarzeń audytu na serwerze docelowym
W Podglądzie zdarzeń w systemie IISServer.contoso.com przejdź do dziennika Dzienniki systemu Windows>Bezpieczeństwo, aby przejrzeć zdarzenia logowania. Poszukaj wystąpień zdarzenia o identyfikatorze 4624 lub 4625 i sprawdź następujące pola:
- Słowa kluczowe: Audyt zakończony sukcesem lub Audyt nieudany
- Typ logowania: 3 (logowanie do sieci)
- Identyfikator zabezpieczeń w polu Nowe logowanie : Contoso\John
- Źródłowy adres sieciowy: adres IP komputera klienckiego
- Proces logowania i pakiet uwierzytelniania: Kerberos
Pełny tekst rekordu zdarzenia przypomina następujący fragment:
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
Rozwiąż problemy z przepływem pracy uwierzytelniania
Przejrzyj ślady sieci, aby sprawdzić, który krok kończy się niepowodzeniem, aby można było zawęzić lokalizację w procesie, w którym występuje problem. Skorzystaj z tych informacji, aby określić, które metody rozwiązywania problemów mogą pomóc w rozwiązaniu problemu.
Weryfikowanie łączności sieciowej
Jeśli wydaje się, że problem występuje w komunikacji DNS lub TCP, sprawdź następujące interakcje:
Sprawdź, czy możesz rozpoznać nazwę serwera docelowego (
IISServer.contoso.com) z komputera klienckiego (Client1.contoso.com).Sprawdź, czy serwer DNS prawidłowo rozpoznaje adres IP serwera docelowego. W tym celu otwórz okno programu PowerShell, a następnie uruchom następujące polecenie cmdlet:
Resolve-DnsName -Name IISServer.contoso.comDane wyjściowe tego polecenia cmdlet powinny przypominać następujący fragment:
Name Type TTL Section IPAddress ---- ---- --- ------- --------- IISServer.contoso.com A 1200 Answer 192.168.2.104Sprawdź, czy wymagane porty sieciowe są otwarte między komputerem klienckim a serwerem docelowym. W tym celu uruchom następujące polecenie cmdlet:
Test-NetConnection -Port 80 IISServer.contoso.comDane wyjściowe tego polecenia cmdlet powinny przypominać następujący fragment:
ComputerName : IISServer.contoso.com RemoteAddress : 192.168.2.104 RemotePort : 80 InterfaceAlias : Ethernet 2 SourceAddress : 192.168.2.101 TcpTestSucceeded : True
Weryfikowanie informacji o bilecie na komputerze klienckim
Otwórz standardowe okno wiersza polecenia (zamiast administracyjnego okna wiersza polecenia) w kontekście użytkownika, który próbuje uzyskać dostęp do witryny internetowej.
Uruchom następujące polecenia w podanej kolejności:
klist purge klist get http/iisserver.contoso.comDane wyjściowe tych poleceń powinny przypominać następujący fragment:
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.comTen fragment tekstu wskazuje, że bilet został pomyślnie odzyskany. Szczegóły biletu są oznaczone etykietą "#1>" w sekcji Buforowane bilety .
Sprawdź, czy usługa sieci Web IIS działa na serwerze IIS przy użyciu domyślnych poświadczeń.
Otwórz standardowe okno monitu programu PowerShell (zamiast administracyjnego okna monitu programu PowerShell) w kontekście użytkownika, który próbuje uzyskać dostęp do witryny internetowej:
invoke-webrequest -Uri http://IIsserver.contoso.com -UseDefaultCredentials
Dane wyjściowe tych poleceń powinny przypominać następujący fragment:
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...
Przejrzyj dziennik zdarzeń zabezpieczeń na serwerze docelowym
W Podglądzie zdarzeń na serwerze docelowym przejdź do dziennika Dzienniki systemu Windows>Zabezpieczenia. Poszukaj wystąpień zdarzenia o identyfikatorze 4624 (Powodzenie inspekcji) lub 4625 (Niepowodzenie inspekcji).
Sprawdź, czy inne usługi działają poprawnie
Aby sprawdzić, czy inne usługi na serwerze docelowym mogą przetwarzać uwierzytelnianie Kerberos, wykonaj następujące kroki:
Na serwerze docelowym utwórz udział plików lub zidentyfikuj istniejący udział plików do użycia na potrzeby testowania. Upewnij się, że użytkownik (w roli "John") ma uprawnienie Odczyt w folderze.
Na komputerze klienckim zaloguj się (jako użytkownik "Jan"), a następnie otwórz Eksploratora Windows.
Na pasku adresu wprowadź \\IISServer.contoso.com \Software$.
Na serwerze docelowym otwórz Podgląd zdarzeń, a następnie przejrzyj zdarzenia zabezpieczeń. Sprawdź, czy istnieją nowe zdarzenia o identyfikatorze 4624 lub zdarzenia o identyfikatorze zdarzenia 4625.
Na komputerze klienckim uruchom polecenie
klist ticketsw wierszu polecenia. Dane wyjściowe polecenia powinny zawierać bilet serwisowy dla elementuCIFS/IISServer.contoso.com, jak pokazano na poniższym fragmencie.#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