
Configurazione del Protocollo di Autenticazione Kerberos
Chiamato così dal cane a tre teste che custodiva le porte degli inferi nei miti dell’Antica Grecia, il protocollo Kerberos fornisce un servizio di autenticazione sicura per reti informatiche. Esegue l’autenticazione reciproca tra l’utente e il server con l’aiuto di un Centro di Distribuzione delle Chiavi (KDC) terzo e fidato che fornisce il servizio di autenticazione e concessione dei ticket. Tutti i principali sistemi operativi, tra cui Microsoft Windows, Linux, Apple OS X e FreeBSD, supportano il protocollo Kerberos.
I messaggi del protocollo Kerberos sono protetti contro gli attacchi di riproduzione e l’intercettazione mediante crittografia con chiavi segrete condivise. Lo scopo principale di Kerberos è evitare la trasmissione di password criptate attraverso la rete. Elimina la minaccia dei packet sniffer e migliora la sicurezza complessiva della rete.
Sebbene il provider di supporto alla sicurezza di Kerberos affronti efficacemente le gravi minacce alla sicurezza, potrebbe essere difficile da implementare a causa di una varietà di limitazioni:
- Se il server Kerberos è inattivo, gli utenti non possono accedere. Il problema può essere risolto utilizzando meccanismi di autenticazione di riserva e server Kerberos multipli.
- Gli orologi degli host coinvolti devono essere sincronizzati. In caso contrario, l’autenticazione fallirà, poiché i ticket di Kerberos hanno un certo periodo di validità.
- Kerberos non può essere utilizzato quando gli utenti vogliono connettersi a servizi da sistemi non affidabili.
- Nel caso venga utilizzata la crittografia simmetrica, il compromissione dell’infrastruttura di autenticazione permetterà a unattaccante di impersonare qualsiasi utente.
- Ogni servizio di rete che richiede un nome di host diverso avrà bisogno del proprio set di chiavi di Kerberos.
Come Funziona l’Autenticazione Kerberos

Un Centro di Distribuzione delle Chiavi è composto da un Server di Autenticazione (AS) e un Server di Concessione dei Ticket (TGS). TGT è un Ticket di Concessione dei Ticket.
- L’utente inserisce il login e la password. L’ID utente in testo chiaro va al Server di Autenticazione (AS) con una richiesta di servizi per conto dell’utente.
- AS controlla se l’accesso dell’utente è presente nel database. Se ci sono informazioni su quell’utente, AS può generare una chiave segreta del cliente in base all’ID e alla password dell’utente. AS invia all’utente:
- La chiave di sessione client/TSG (crittografata con la chiave segreta del cliente);
- TGT che include l’ID utente, l’indirizzo di rete e il periodo di validità del ticket + chiave di sessione Client/TGS (crittografata con la chiave segreta del TGS).
- L’utente decodifica il primo messaggio ma non può decodificare il secondo, poiché non possiede la chiave segreta del TGS. Il cliente invia un messaggio al TGS:
- Il TGT ricevuto da AS + ID del server + chiave segreta TGS/Client (crittografata con la chiave segreta del TGS);
- L’autenticatore che include l’ID del cliente e il timestamp (crittografato con la chiave di sessione Client/TSG).
- Il TGS decripta il primo messaggio, ottiene il TGT + chiave di sessione TGS/Client, con cui decripta il secondo messaggio. Il TGS verifica se l’ID utente del primo messaggio corrisponde all’ID del secondo messaggio e se il timestamp non supera il periodo di validità del ticket. In caso positivo, il TGS invia all’utente:
- L’ID utilizzato, l’indirizzo di rete, il periodo di validità del ticket + chiave di sessione Client/Server (crittografata con la chiave segreta del server);
- La chiave di sessione client/server (crittografata con la chiave segreta Client/TGS).
- Il cliente invia al server a cui tenta di accedere:
- L’ID utilizzato, l’indirizzo di rete, il periodo di validità del ticket + chiave di sessione Client/Server (crittografata con la chiave segreta del server);
- L’autenticatore che include l’ID e il timestamp (crittografato con la chiave di sessione Client/Server).
- Il server di destinazione decripta i messaggi dell’utente, verifica se l’ID utente nei due messaggi ha lo stesso valore e se il periodo di validità non è superato, quindi invia al cliente il seguente parametro per confermare la sua identità:
- Timestamp + 1 (crittografato con la chiave di sessione client/server).
Il cliente verifica se il valore del timestamp è timestamp + 1, il che mostra la vera identità del server. Se è così, il cliente può fidarsi del server e iniziare a lavorare con esso.
Applicazioni Moderne di Kerberos
Kerberos rimane vitale negli ambienti aziendali odierni. I fornitori di cloud integrano Kerberos con i loro servizi di identità. L’autenticazione multifattoriale migliora la postura di sicurezza di Kerberos. Le soluzioni di single sign-on sfruttano Kerberos per un accesso senza interruzioni. Molte applicazioni containerizzate supportano l’autenticazione Kerberos. I pipeline DevOps usano Kerberos per flussi di lavoro CI/CD sicuri. I sistemi di gestione dei dispositivi mobili incorporano i principi di Kerberos. Le architetture Zero Trust spesso si basano sulle fondamenta di Kerberos. Soluzioni di identità federata estendono Kerberos oltre i confini organizzativi. La gestione automatizzata dei certificati semplifica la manutenzione di Kerberos. Le implementazioni moderne affrontano molte delle limitazioni tradizionali di Kerberos.
Configurare il Protocollo di Autenticazione Kerberos
Per configurare il protocollo Kerberos, è necessario fare quanto segue:
- Creare un utente Active Directory (può essere utilizzato uno già esistente).
- Accedere al server del controller di dominio, fare clic su Start → Strumenti di Amministrazione e avviare Utenti e Computer di Active Directory.
- Se non è già selezionato, fare clic sul nodo del proprio dominio (domain.com).
- Fare clic con il tasto destro su Utenti, puntare su Nuovo, e quindi fare clic su Utente.
- Nella finestra di dialogo Nuovo Oggetto → Utente specificare i parametri del nuovo utente. Può essere un utente normale, non è necessario fornire all’utente ulteriori privilegi. L’account utente deve essere attivo (con la casella di controllo Account disabilitato non selezionata) e la password dell’account deve essere perpetua (con la casella di controllo Password mai scade selezionata).
- Assegnare i nomi principali con le chiavi crittografate sul controller di dominio. Per le macchine su Linux, creare un file keytab contenente coppie di principali Kerberos e chiavi crittografate. Un file keytab viene utilizzato per autenticarsi a vari sistemi remoti utilizzando Kerberos senza inserire una password.
- Creare un keytab con la prima voce utilizzando lo strumento ktpass:
ktpass /princ user1_backend@DOMAIN.COM /mapuser user1_backend /pass /crypto all /ptype KRB5_NT_PRINCIPAL /out C:\Users\user1\Desktop\datasunrise.keytab -setupn
/princ Il nome principale del servizio (SPN) nel seguente formato: @ /mapuser Mappa il nome del principale Kerberos, che è specificato dal parametro princ, al dominio dell’utente specificato. /pass Specifica la password per il nome principale dell’utente. /ptype Specifica il tipo di principale. Utilizzare KRB5_NT_PRINCIPAL. /crypto Specifica le chiavi generate nel file keytab. /out Assegna una directory e un nome per il file *.keytab di output. -setupn Non imposta il nome principale dell’utente insieme al nome principale del servizio. - Creare una seconda voce nel file keytab per connettersi al database utilizzando l’utente AD. L’esempio è dato per creare voci keytab per connettersi al database Vertica utilizzando l’utente AD. Per altri database o autenticazioni GUI, eseguire lo stesso comando con il nome del servizio corrispondente nel parametro /princ.
ktpass /out ./datasunrise.keytab /princ vertica/user1.domain.com@DOMAIN.COM /mapuser user1 /mapop set /pass /ptype KRB5_NT_PRINCIPAL /crypto RC4-HMAC-NT
- Sarà necessario trasferire il file keytab sulla macchina Linux.
- Creare un keytab con la prima voce utilizzando lo strumento ktpass:
- Configurare la delega di Active Directory.
- Sul controller di dominio, accedere a Utenti e Computer di Active Directory, individuare l’account della macchina che si desidera configurare per Kerberos.
- Nella sezione Proprietà, andare alla scheda Delega e selezionare Fida questo computer per delega solo ai servizi specificati e fare clic su Aggiungi.
- Nella finestra Utenti e Computer, specificare l’account utente che è stato utilizzato per avviare il database o il nome del server in cui è installato l’RDBMS.
- Facoltativamente, è possibile utilizzare Controlla nomi per vedere se un utente o un computer specificato esiste e fare clic su OK, quindi selezionare il servizio richiesto e fare clic su OK.
- Installare e configurare il client Kerberos sulla propria macchina.
sudo apt-get install krb5-user libpam-krb5 libpam-ccreds auth-client-config
Modificare il file /etc/krb5.conf per aggiungere il nome completo del dominio, il nome del controller di dominio e il parametro realm
Importante: Non lasciare alcun commento taggato con il segno “#” nel file di configurazione.[libdefaults] default_realm = DOMAIN.COM # parametro specifico del dominio (nome completo del dominio) clockskew = 300 ticket_lifetime = 1d forwardable = true proxiable = true dns_lookup_realm = true dns_lookup_kdc = true [realms] DOMAIN.COM = { kdc = hostname.domain.com # parametro specifico del dominio (nome del controller di dominio) admin_server = hostname.domain.com # parametro specifico del dominio (nome del controller di dominio) default_domain = DOMAIN.COM # parametro specifico del dominio (nome completo del dominio) } [domain_realm] .domain.com = DOMAIN.COM # parametro specifico del dominio (nome di dominio per i nomi DNS) domain.com = DOMAIN.COM # parametro specifico del dominio (nome di dominio per i nomi DNS) [appdefaults] pam = { ticket_lifetime = 1d renew_lifetime = 1d forwardable = true proxiable = false retain_after_close = false minimum_uid = 0 debug = false }
Per le macchine con sistema operativo Windows, non è necessario installare e configurare il protocollo Kerberos ma deve essere nel dominio Active Directory. Inoltre, per impostare i nomi principali dei servizi viene utilizzato il comando setspn. Di seguito un esempio di configurazione di una macchina Windows per connettersi al database MS SQL Server utilizzando le credenziali utente AD.
L’indirizzo del proxy deve corrispondere all’SPN registrato del servizio MSSQLSvc. Utilizzare lo strumento SetSPN per registrare i due SPN richiesti per l’account del computer per il quale è stata consentita la delega:
setspn -A MSSQLSvc/proxy-host:proxy-port proxy-host
setspn -A MSSQLSvc/full-fqdn-proxy-host:proxy-port proxy-host
È possibile ottenere l’elenco di tutti gli SPN registrati con il seguente comando:
setspn -L proxy-host
Per eliminare il proxy SPN, eseguire le seguenti operazioni:
setspn -D MSSQLSvc/proxy-host:proxy-port proxy-host
Per testare lo schema di autorizzazione eseguire il seguente comando dopo essersi connessi al server:
select auth_scheme from sys.dm_exec_connections where session_id=@@spid
Il risultato corrisponderà allo schema di autenticazione utilizzato dal server: SQL, NTLM o KERBEROS.
Nel caso si riceva l’errore “Cannot generate SSPI context”, fare riferimento alle istruzioni di supporto Microsoft su come risolvere il problema con l’interfaccia del provider di supporto alla sicurezza.
DataSunrise può funzionare come un proxy di autenticazione per database cloud e on-premises per minimizzare i rischi di accessi utente non autorizzati mantenendo le politiche di autenticazione di Microsoft Active Directory e del protocollo Kerberos.
Il suo database o archiviazione basata su cloud contiene informazioni sensibili che richiedono protezione? Ha bisogno di essere conforme ai regolamenti GDPR, SOX o HIPAA? Scopra le soluzioni all’avanguardia di DataSunrise per l’auditing del database, la sicurezza e il mascheramento dei dati. Provi il nostro software gratuitamente o programmi una demo online oggi stesso.