Linee guida per la risoluzione dei problemi di autenticazione Kerberos
Questa guida fornisce i concetti fondamentali usati per la risoluzione dei problemi di autenticazione Kerberos.
Elenco di controllo per la risoluzione dei problemi
Un errore correlato a Kerberos è sintomo del malfunzionamento di un altro servizio. Il protocollo Kerberos si basa su molti servizi che devono essere disponibili e funzionare correttamente affinché l'autenticazione abbia luogo.
Per determinare se si verifica un problema con l'autenticazione Kerberos, controllare la presenza di errori nel registro eventi di sistema da qualsiasi servizio filtrandolo usando l'"origine" (ad esempio Kerberos, kdc, LsaSrv o Netlogon) nel client, nel server di destinazione o nel controller di dominio che forniscono l'autenticazione. Se esistono errori di questo tipo, potrebbero verificarsi errori associati anche al protocollo Kerberos.
Le verifiche degli errori nel registro degli eventi di sicurezza del server di destinazione potrebbero mostrare che il protocollo Kerberos era in uso quando si è verificato un errore di accesso.
Prima di ispezionare il protocollo Kerberos, accertarsi che i seguenti servizi o condizioni funzionino correttamente:
- L'infrastruttura di rete funziona correttamente e tutti i computer e i servizi possono comunicare.
- Il controller di dominio è accessibile. È possibile eseguire il comando
nltest /dsgetdc:<Domain Name> /force /kdc
(ad esempio,nltest /dsgetdc:contoso.com /force /kdc
) nel client o nel server di destinazione. - Domain Name System (DNS) è configurato correttamente e risolve i nomi host e i servizi in modo appropriato.
- Gli orologi vengono sincronizzati nel dominio.
- Vengono installati tutti gli aggiornamenti critici e gli aggiornamenti della sicurezza per Windows Server.
- Tutto il software, incluso il software non Microsoft, viene aggiornato.
- Il computer viene riavviato se si esegue un sistema operativo server.
- Sono disponibili i servizi e il server necessari. Il protocollo di autenticazione Kerberos necessita di un controller di dominio, di un'infrastruttura DNS e di una rete funzionanti per funzionare correttamente. Verificare di poter accedere a queste risorse prima di iniziare a risolvere i problemi relativi al protocollo Kerberos.
Se sono state esaminate tutte queste condizioni e si verificano ancora problemi di autenticazione o errori Kerberos, è necessario cercare una soluzione. I problemi possono essere causati dalla configurazione del protocollo Kerberos o dal modo in cui vengono configurate altre tecnologie che usano il protocollo Kerberos.
Problemi noti e soluzioni
Problemi di delega Kerberos
In uno scenario tipico, l'account di rappresentazione sarebbe un account del servizio assegnato a un'applicazione Web o all'account computer di un server Web. L'account rappresentato sarebbe un account utente che richiede l'accesso alle risorse tramite un'applicazione Web.
Esistono tre tipi di delega usando Kerberos:
Delega completa (delega senza vincoli)
La delega completa deve essere evitata il più possibile. L'utente (utente front-end e utente back-end) può trovarsi in domini diversi e anche in foreste diverse.
Delega vincolata (solo Kerberos e transizione del protocollo)
L'utente può trovarsi da qualsiasi dominio o foresta, ma il front-end e i servizi back-end devono essere in esecuzione nello stesso dominio.
Delega vincolata basata su risorse (RBCD)
L'utente può trovarsi da qualsiasi dominio e le risorse front-end e back-end possono trovarsi da qualsiasi dominio o foresta.
Risoluzione dei problemi di delega Kerberos più comuni
- Nome dell'entità servizio mancante o duplicato
- Errori di risoluzione dei nomi o risposte non corrette (indirizzi IP errati specificati per un nome server)
- Dimensioni dei ticket Kerberos di grandi dimensioni (MaxTokenSize) e ambiente non configurati correttamente
- Porte bloccate da firewall o router
- All'account del servizio non sono stati concessi i privilegi appropriati (Assegnazione diritti utente)
- Servizi front-end o back-end non nello stesso dominio e configurazione della delega vincolata (non RBCD)
Per altre informazioni, vedi:
- La delega vincolata per CIFS ha esito negativo con errore ACCESS_DENIED
- Configurare la delega vincolata per un account del servizio personalizzato
- Configurare la delega vincolata sull'account NetworkService
Accesso Single Sign-On (SSO) interrotto e richiesta di autenticazione una sola volta
Si considerino gli scenari seguenti:
- Applicazione client e server come il server Microsoft Edge e Internet Information Services (IIS). Il server IIS è configurato con l'autenticazione di Windows (Negotiate).
- Un'applicazione client e server come un client SMB e un server SMB. Per impostazione predefinita, il server SMB è configurato con Negotiate Security Support Provider Interface (SSPI).
Un utente apre Microsoft Edge e esplora un sito Web http://webserver.contoso.com
interno. Il sito Web è configurato con Negotiate e questo sito Web richiede l'autenticazione. Dopo che l'utente immette manualmente il nome utente e la password, l'utente ottiene l'autenticazione e il sito Web funziona come previsto.
Note
Questo scenario è un esempio di client e server. La tecnica di risoluzione dei problemi è la stessa per qualsiasi applicazione client/server configurata con l'autenticazione integrata di Windows.
La autenticazione di Windows integrata viene interrotta a livello di utente o di computer.
Metodi di risoluzione dei problemi
Esaminare la configurazione client per un'impostazione di autenticazione integrata, che può essere abilitata a livello di applicazione o computer. Ad esempio, tutte le applicazioni basate su HTTP cercherebbero che il sito si trovasse in un'area attendibile quando si tenta di eseguire l'autenticazione integrata.
Aprire inetcpl.cpl (Opzioni Internet), che tutte le applicazioni basate su HTTP usano per le configurazioni di Internet Explorer e verificare se il sito Web è configurato come Intranet locale.
Le applicazioni hanno anche una configurazione per eseguire autenticazione di Windows integrati.
Microsoft Edge o Internet Explorer ha un'impostazione Abilita autenticazione integrata di Windows da abilitare.
Esaminare la configurazione dell'applicazione e il computer client può ottenere un ticket Kerberos per un determinato nome dell'entità servizio (SPN). In questo esempio il nome SPN è
http/webserver.contoso.com
.Messaggio di operazione riuscita quando è possibile trovare il nome SPN:
C:>klist get http/webserver.contoso.com Current LogonId is 0:0x9bd1f A ticket to http/webserver.contoso.com has been retrieved successfully.
Messaggio di errore quando non è possibile trovare il nome 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.
Identificare e aggiungere i rispettivi NOMI SPN agli account utente, del servizio o del computer appropriati.
Se è stato rilevato che è possibile recuperare i nomi SPN, è possibile verificare se sono registrati nell'account corretto usando il comando seguente:
setspn -F -Q */webserver.contoso.com
Problemi di individuazione del controller di dominio di autenticazione
I server applicazioni configurati con integrated autenticazione di Windows necessitano di controller di dominio per autenticare l'utente/computer e il servizio.
L'impossibilità di contattare un controller di dominio durante il processo di autenticazione comporta l'errore 1355:
Il dominio specificato non esiste o non è stato possibile contattare
Impossibile accedere a una risorsa configurata con il autenticazione di Windows integrato con un errore 1355
Note
I messaggi di errore possono essere diversi dal punto di vista dell'applicazione, ma il significato dell'errore è che il client o il server non è in grado di individuare un controller di dominio.
Ecco alcuni esempi di tali messaggi di errore:
-
Si è verificato l'errore seguente durante il tentativo di aggiunta al dominio "Contoso":
il dominio specificato non esiste o non è stato possibile contattarlo. -
Non è possibile trovare il controller di dominio per il dominio contoso.com
-
Non è possibile contattare il controller di dominio 1355
Principali cause del problema
Configurazione errata del DNS nel client
È possibile eseguire il
ipconfig /all
comando ed esaminare l'elenco dei server DNS.Configurazione errata del DNS nei controller di dominio in un dominio o una foresta attendibile
Porte di rete bloccate tra il client e i controller di dominio
Porte di individuazione controller di dominio: UDP 389 (LDAP UDP) e UDP 53 (DNS)
Passaggi per la risoluzione dei problemi
- Eseguire il
nslookup
comando per identificare eventuali configurazioni errate del DNS. - Aprire le porte necessarie tra il client e il controller di dominio. Per ulteriori informazioni, vedere Come configurare un firewall per domini e trust di Active Directory.
Scenario di test di analisi dei log
Ambiente e configurazione
Computer client
Client1.contoso.com
(un computer Windows 11) aggiunge il dominioContoso.com
.Utente
John
L'utente appartiene a
Contoso.com
e accede al computer client.Opzioni Internet nel computer client
Tutti i siti Web fanno parte dell'area Intranet locale.
Server
IISServer.contoso.com
(Windows Server 2019) aggiunge il dominioContoso.com
.Configurazione dell'autenticazione
L'autenticazione di Windows è abilitata.
Provider di autenticazione: Negotiate
I provider abilitati sono impostati come segue:
Flusso di autenticazione
- L'utente
John
accede aClient1.contoso.com
, apre un browser Microsoft Edge e si connette aIISServer.contoso.com
. - Il computer client eseguirà i passaggi seguenti (passaggio 1 nel diagramma precedente):
- Il resolver DNS memorizza nella
IISServer.contoso.com
cache per verificare se queste informazioni sono già memorizzate nella cache. - Il sistema di risoluzione DNS controlla il file HOSTS per individuare eventuali mapping presenti
IISServer.contoso.com
in C:\Windows\System32\drivers\etc\Hosts. - Inviare una query DNS al server DNS preferito (configurato nelle impostazioni di configurazione IP), che è anche un controller di dominio nell'ambiente.
- Il resolver DNS memorizza nella
- Il servizio DNS in esecuzione nel controller di dominio esaminerà le zone configurate, risolverà il record A host e risponderà con un indirizzo IP di
IISServer.contoso.com
(passaggio 2 nel diagramma precedente). - Il computer client eseguirà un handshake TCP a tre vie sulla porta TCP 80 a
IISServer.contoso.com
. - Il computer client invierà una richiesta HTTP anonima a
IISServer.contoso.com
. - Il server IIS in ascolto sulla porta 80 riceverà la richiesta da
Client1.contoso.com
, esaminerà la configurazione di autenticazione dei server IIS e invierà una risposta di verifica HTTP 401 al computer client con Negotiate come configurazione di autenticazione (passaggio 3 nel diagramma precedente). - Il processo di Microsoft Edge in esecuzione su
Client1.contoso.com
saprà che il server IIS è configurato con Negotiate e verificherà se il sito Web fa parte dell'area Intranet locale. Se il sito Web si trova nell'area Intranet locale, il processo di Microsoft Edge chiamerà in LSASS.exe per ottenere un ticket Kerberos con un NOME SPNHTTP\IISServer.contoso.com
(passaggio 5 nel diagramma precedente). - Il controller di dominio (servizio KDC) riceve la richiesta da
Client1.contoso.com
, cerca il nome SPNHTTP\IISServer.contoso.com
nel database e trovaIISServer.contoso.com
che è configurato con questo NOME SPN. - Il controller di dominio risponderà con una risposta TGS con il ticket per il server IIS (passaggio 6 nel diagramma precedente).
- Il processo di Microsoft Edge nel computer client invierà una richiesta KERBEROS Application Protocol (AP) al server Web IIS con il ticket TGS Kerberos rilasciato dal controller di dominio.
- Il processo IIS chiamerà LSASS.exe sul server Web per decrittografare il ticket e creare un token con l'appartenenza al gruppo SessionID e Users per l'autorizzazione.
- Il processo IIS otterrà un handle da LSASS.exe al token per prendere decisioni di autorizzazione e consentire all'utente di connettersi con una risposta AP.
Analisi di Monitoraggio di rete del flusso di lavoro
Note
Per eseguire le attività seguenti, è necessario essere un utente del gruppo Administrators locale.
Installare Microsoft Network Monitor nel computer client (
Client1.contoso.com
).Eseguire il comando seguente in una finestra del prompt dei comandi con privilegi elevati (cmd.exe):
ipconfig /flushdns
Avviare Monitoraggio rete.
Aprire il browser Microsoft Edge e digitare
http://iisserver.contoso.com
.Analisi di traccia di rete:
Query DNS al controller di dominio per un record 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
Risposta DNS dal servizio DNS nel controller di 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
Il processo di Microsoft Edge in
Client1.contoso.com
si connette al serverIISServer.contoso.com
Web IIS (connessione anonima).3027 00:59:30.1609409 Client1.contoso.com iisserver.contoso.com HTTP HTTP:Request, GET / Host: iisserver.contoso.com
Il server IIS risponde con la risposta HTTP 401: Negotiate e NTLM (configurazione eseguita nel server 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 richiesta Kerberos da
Client1.contoso.com
passa al controllerDCA.contoso.com
di dominio con un nome 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
Il controller
DCA.contoso.com
di dominio risponde con la richiesta Kerberos, che ha una risposta TGS con un ticket 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
Il processo di Microsoft Edge in ora
Client1.contoso.com
passa al server IIS con una richiesta AP 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
Il server IIS risponde con una risposta che l'autenticazione è stata completata.
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)
Eseguire il
klist tickets
comando per esaminare il ticket Kerberos nell'output del comando inClient1.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
Esaminare l'ID evento 4624 nel server IIS che mostra il
Success
controllo:
Per impostazione predefinita, i
Success
controlli oFailure
sono abilitati in tutti i sistemi operativi server di Windows. È possibile verificare se il controllo è abilitato dal comando seguente.Se il controllo non è abilitato, abilitare il controllo. Esaminare la categoria di accesso nell'elenco seguente. Come si può osservare, la sottocategoria di accesso è abilitata con
Success and Failure
.C:\>auditpol /get /Subcategory:"logon" System audit policy Category/Subcategory Setting Logon/Logoff Logon Success and Failure
Se non si osserva l'accesso con
Success and Failure
, eseguire il comando per abilitarlo:C:\>auditpol /set /subcategory:"Logon" /Success:enable /Failure:enable The command was successfully executed.
Esaminare l'ID evento di sicurezza riuscito 4624 in IISServer.contoso.com
Osservare i campi seguenti:
Logon type
: 3 (accesso alla rete)Security ID
nelNew Logon
campo:Contoso\John
Source Network Address
: indirizzo IP del computer clientLogon Process
eAuthentication 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
Risoluzione dei problemi del flusso di lavoro di autenticazione
Usare uno dei metodi seguenti per risolvere il problema.
Verificare se è possibile risolvere il nome del server Web IIS (
IISServer.contoso.com
) daClient1.contoso.com
.Verificare se il server DNS risponde all'indirizzo IP del server IIS corretto usando il cmdlet seguente:
PS C:\> Resolve-DnsName -Name IISServer.contoso.com Name Type TTL Section IPAddress ---- ---- --- ------- --------- IISServer.contoso.com A 1200 Answer 192.168.2.104
Verificare se le porte di rete vengono aperte tra il computer client e il server Web IIS (
IISServer.contoso.com
) usando il cmdlet seguente: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
Verificare se si riceve un ticket Kerberos dal controller di dominio.
Aprire un normale prompt dei comandi (non un prompt dei comandi dell'amministratore) nel contesto dell'utente che tenta di accedere al sito Web.
Eseguire il comando
klist purge
.Eseguire il comando
klist get http/iisserver.contoso.com
come indicato di seguito: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
Si otterrà un ticket Kerberos per il nome SPN
http/IISServer.contoso.com
nellaCached Ticket (2)
colonna .
Verificare se il servizio Web IIS è in esecuzione nel server IIS usando le credenziali predefinite.
Aprire un normale prompt di PowerShell (non un prompt di PowerShell amministratore) nel contesto dell'utente che tenta di accedere al sito 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...
Esaminare il registro eventi di sicurezza nel server IIS:
- Registro eventi di operazione riuscita 4624
- Registro eventi di errore 4625
Processo di isolamento: è possibile usare la procedura di risoluzione dei problemi seguente per verificare se altri servizi nel server IIS possono elaborare l'autenticazione Kerberos.
Prerequisiti:
Il server IIS deve eseguire una versione server di Windows.
Il server IIS deve avere una porta aperta per servizi come SMB (porta 445).
Creare una nuova condivisione o fornire all'utente
John
le autorizzazioni di lettura su una delle cartelle (ad esempio Software $) già condivise nel computer.Accedere a
Client1.contoso.com
.Aprire Esplora risorse.
Digitare \IISServer.contoso.com \Software$.
Aprire Eventi di sicurezza in
IISServer.contoso.com
e verificare se si osserva l'ID evento 4624.Aprire un normale prompt dei comandi su
Client1.contoso.com
come utenteJohn
. Eseguire ilklist tickets
comando ed esaminare il ticketCIFS/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
Raccogliere tracce di rete in
Client1.contoso.com
. Esaminare le tracce di rete per osservare quale passaggio ha esito negativo in modo da limitare ulteriormente i passaggi e risolvere il problema.