Kerberos: Protocollo di autenticazione predefinito in Active Directory
Comprendere Kerberos negli ambienti Active Directory
Quando effettui il login su un computer aggiunto a un dominio Windows, accedi a una cartella condivisa o ti autentichi su un'applicazione web integrata con Active Directory (AD), stai quasi certamente usando Kerberos — il protocollo di autenticazione predefinito per Active Directory dal 2000. Comprendere come funziona è essenziale per amministratori di sistema, professionisti della sicurezza e sviluppatori che creano applicazioni integrate con AD.
Cos'è Kerberos?
Kerberos è un protocollo di autenticazione di rete sviluppato al MIT negli anni '80. Utilizza crittografia a chiave segreta e una terza parte di fiducia per fornire una forte autenticazione reciproca tra client e servizi su reti non sicure. Il nome deriva dalla mitologia greca — Cerbero, il cane a tre teste che custodisce l'aldilà — rappresentando le tre parti coinvolte: client, server e Key Distribution Center (KDC).
Componenti principali
- Client: l'utente o il servizio che richiede accesso
- Key Distribution Center (KDC): l'autorità di fiducia in esecuzione sui Domain Controller, comprendente due servizi:
- Authentication Service (AS): emette Ticket Granting Tickets (TGT)
- Ticket Granting Service (TGS): emette ticket di servizio per risorse specifiche
- Servizio di destinazione: la risorsa a cui si accede (file server, SQL, app web, ecc.)
Il flusso di autenticazione
- Richiesta AS: il client invia il nome utente al KDC (AS)
- Risposta AS: il KDC restituisce un TGT cifrato (cifrato con l'hash della password del client) e una chiave di sessione
- Richiesta TGS: il client presenta il TGT al KDC (TGS) richiedendo accesso a un servizio
- Risposta TGS: il KDC restituisce un ticket di servizio (cifrato con la chiave segreta del servizio) e una chiave di sessione
- Richiesta AP: il client presenta il ticket di servizio al servizio di destinazione
- Risposta AP (opzionale): il servizio si autentica al client per autenticazione reciproca
Perché Kerberos invece di NTLM?
| Caratteristica | Kerberos | NTLM |
|---|---|---|
| Autenticazione | Reciproca (client e server si verificano a vicenda) | Unidirezionale (server verifica il client) |
| Prestazioni | La cache dei ticket riduce il carico sui DC | Ogni autenticazione colpisce il DC |
| Delegazione | Supporta delegazione vincolata/non vincolata | Supporto limitato alla delegazione |
| Smart Card/PKI | Supporto nativo (PKINIT) | Non supportato |
| Cross-platform | Sì (Linux, macOS, Unix) | Centric su Windows |
Concetti chiave per gli amministratori
- Service Principal Names (SPN): identificatori univoci per i servizi (es.
HTTP/webserver.domain.com). Fondamentali per Kerberos per trovare l'account di servizio corretto. - Delegazione: consente ai servizi di impersonare gli utenti per accedere a risorse backend (es. app web → SQL). Configura con attenzione — la delegazione vincolata è più sicura.
- Sincronizzazione oraria: Kerberos fallisce se gli orologi differiscono di >5 minuti (default). Assicurati la sincronizzazione NTP in tutto il dominio.
- Tipi di cifratura: AES256/AES128 preferiti. RC4-HMAC disabilitato per default nelle versioni moderne di Windows per motivi di sicurezza.
- Pre-autenticazione: previene attacchi brute-force offline sulle richieste TGT. Sempre attiva.
Risoluzione di problemi comuni
- KRB_ERR_GENERIC / KRB_AP_ERR_MODIFIED: configurazione SPN errata, SPN duplicati o incompatibilità di password
- KDC_ERR_PREAUTH_FAILED: password errata o account bloccato
- Errori di skew orario: risolvi la sincronizzazione oraria
- Fallback a NTLM: controlla SPN, DNS e che client/server siano aggiunti al dominio
Migliorie moderne
- Kerberos Armoring (FAST): protegge la pre-autenticazione con un tunnel anonimo
- PKINIT: autenticazione basata su certificato per smart card
- Constrained Delegation basato su risorsa: modello di delegazione più sicuro controllato dai proprietari delle risorse
Kerberos rimane la spina dorsale dell'autenticazione dei domini Windows. Mentre protocolli come OAuth/OIDC e SAML dominano il SSO web, Kerberos è insostituibile per l'autenticazione integrata di Windows, la comunicazione servizio-servizio in azienda e gli scenari cloud ibridi con Azure AD Domain Services o AD on-premise.