2. Una vista di insieme dell'infrastruttura di Kerberos

2.1. Introduzione a Kerberos

Kerberos è un sistema di autenticazione sviluppato dal MIT nell'ambito del progetto Athena. Kerberos usa la crittografia e una terza parte fidata, un arbitro, per eseguire l'autenticazione in maniera sicura attraverso una rete non sicura. In particolare Kerberos usa dei ticket cifrati per evitare di trasmettere le password come testo in chiaro attraverso la rete; Kerberos si basa sul protocollo di Needham e Schroeder.

Adesso sono in uso due versioni di kerberos: la 4 e la 5. Le versioni dalla 1 alla 3 erano versioni interne di sviluppo e non sono mai state pubblicate; la versione 4 ha alcune lacune di sicurezza a non dovrebbe più essere usata. Questo documento tratta soltanto di Kerberos 5, definito nel RFC1510.

La locuzione Infrastruttura Kerberos si riferisce alla configurazione del software, del server e del client che permettono a un amministratore di usare il protocollo Kerberos per realizzare l'autenticazione sulla rete. Precisamente, l'infrastruttura kerberos consiste nel software Kerberos stesso, in alcuni server di autenticazione ridondanti posti in sicurezza, in un deposito centralizzato di account e password e nei sistemi configurati per usare Kerberos come protocollo di autenticazione. Questo documento permetterà di apprendere i passi necessari per installare, configurare e distribuire una tale infrastruttura.

2.2. I benefici di Kerberos

Chi non ha confidenza col protocollo kerberos potrebbe non aver chiaro quali siano i benefici che comporta distribuirlo sulla rete; comunque tutti gli amministratori hanno confidenza con i problemi che Kerberos dovrebbe mitigare. Alcuni di questi problemi sono l'intercettazione della password in transito sulla rete (sniffing), la lettura abusiva del file o del database delle password (stealing), e gli sforzi che si devono sostenere per mantenere un vasto numero di database degli account.

Un' infrastruttura kerberos distribuita in modo appropriato costituisce un buon punto di partenza per la soluzione dei problemi cui si è accennato e aumenta la sicurezza dell'organizzazione. L'uso di Kerberos evita che le password siano trasmesse in chiaro sulla rete; inoltre il sistema centralizza le informazioni sulle credenziali semplificandone la gestione e la manutenzione. Infine l'utilizzo di Kerberos evita di dover conservare le password localmente sulla macchina, riducendo la probabilità che la compromissione di una singola macchina comporti ulteriori violazioni.

Riassumendo, in una grande impresa i benefici di Kerberos si traduranno in minori costi amministrativi attraverso una gestione più semplice di account e password e attraverso il miglioramento nella sicurezza della rete. In un ambiente più piccolo i benefici più evidenti sono costituiti dalla scalabilità dell'infrastruttura di autenticazione e dal miglioramento della sicurezza della rete.

2.3. Come funziona Kerberos

Il protocollo di autenticazione Kerberos usa un segreto condiviso e una terza parte fidata, con ruolo di arbitro, per convalidare l'identità dei client, che possono essere utenti, server o programmi. La terza parte fidata è un server chiamato Key Distribution Center (KDC) che esegue i dèmoni Kerberos. Il segreto condiviso è la password dell'utente trasformata in chiave crittografica; per i server e i sistemi software è generata una chiave casuale.

In Kerberos gli utenti sono detti "principal"; il KDC conserva un database dei principal e delle chiavi segrete che essi usano per autenticarsi. In Kerberos la conoscenza della chiave segreta è considerata una valida dimostrazione di identità, perciò il server Kerberos è affidabile per autenticare ogni client nei confronti di ogni altro client. Con Kerberos l'autenticazione è ottentuta senza trasmettere alcuna password in chiaro attraverso la rete. Nel seguito sarà spiegata la corrispondenza fra il protocollo Kerberos e il software Kerberos in GNU Linux.

Il KDC esegue i due importanti dèmoni Kerberos kadmind e krb5kdc. Una convenzione di denominazione in GNU Linux prevede che i processi il cui nome inizia per "k" siano attinenti al kernel o eseguiti nello spazio del kernel; invece krb5kdc e kadmind sono eseguiti in spazio utente.

kadmind è il demone amministrativo di Kerberos; kadmind si usa attraverso il programma kadmin per la manutenzione del database dei principal e la configurazione dei criteri. Se si sceglie di non permettere il login remoto tramite ssh sulla macchina Kerberos, kadmin consente l'amministrazione remota dei componenti Kerberos del server.

krb5kdc è la bestia da soma del server Kerberos, vestendo il ruolo di terza parte fidata nel processo di autenticazione. Quando un utente vuole autenticarsi presso un sistema o un servizio, chiede un ticket al KDC. Un ticket è un datagramma che contiene l'identità del client, una chiave di sessione, una marcatura oraria e altre indicazioni; il datagramma è cifrato con la chiave segreta del server.

Descrivendo il processo più in dettaglio, esso inizia con la richiesta di autenticazione che è trasmessa al demone krb5kdc. Quest'ultimo, ricevuta la richiesta, cerca il client, cioè il principal, nel database dei principal per autenticarlo; legge la chiave segreta del client nel database e cifra un ticket speciale detto Ticket Granting Ticket (TGT), che invia al client. Il client riceve il TGT cifrato che contiene una chiave di sessione; se il client conosce la password (la chiave segreta che è conservata nel database dei principal) può decifrare il TGT, quindi lo cifra con la chiave di sessione, che è contenuta nel TGT stesso, per presentarlo a un Ticket Granting Service (TGS). Il TGS rilascia un ulteriore Ticket che consentirà al client di ottenere l'autenticazione presso uno specifico sistema o servizio.

L'autenticazione sicura si realizza tramite l'uso di ticket cifrati che possono essere decifrati soltanto se il client conosce la chiave segreta. Il ticket contiene informazioni sull'orario per prevenire attacchi di replica, che consistono in rappresentazioni fraudolente di un ticket rilasciato precedentemente, per ottenere un accesso illecito.

2.4. Compromissione dell'infrastruttura Kerberos

Il primo modo in cui un aggressore può tentare di compromettere un'infrastruttura Kerberos è attaccando il server Kerberos; se l'aggressore riuscisse a ottenere un accesso di root al KDC egli avrebbe accesso al database delle password cifrate dei principal. In questo modo l'aggressore potrebbe accedere anche al software Kerberos e ai file di configurazione e modificarli per fare in modo che il sistema consenta delle autenticazioni che non dovrebbero avere successo.

Tra gli altri metodi per attaccare l'infrastruttura di Kerberos vanno citati gli attacchi di replica (replay attack) e i tentativi di indovinare la password (password guessing attack). Un attacco di replica si esplica intercettando o acquisendo altrimenti un ticket Kerberos e utilizzandolo fraudolentemente per tentare di ottenere l'autenticazione. Per provare a indovinare la password si possono intercettare dei ticket Kerberos sulla rete per decifrarli mediante un attacco di forza bruta.

Un aggressore può sfruttare le vulnerabilità del software vetusto ancora presente nell'infrastruttura; per esempio sono noti parecchi problemi con la versione 4 di Kerberos il più importante dei quali è una fondamentale debolezza nel protocollo usato per la crittografia. Il progetto di Kerberos versione 4 contempla l'uso di DES in modalità normale che permette a un aggressore di intercettare e modificare il testo cifrato del ticket senza lasciare tracce. Per prevenire questi attacchi Kerberos è stato modificato nella versione 5 che usa triple DES in modalità Cipher Block Chaining (CBC).

Trattando della robustezza della versione 4 di Kerberos è importante notare anche che parecchie implementazioni soffrono di vulnerabilità di superamento del buffer (buffer overflow). Le implementazioni di riferimento di Kerberos versione 5 hanno riparato le vulnerabilità di superamento del buffer presenti nella versione 4 ma le distribuzioni della versione 5 generalmente forniscono programmi che consentono la compatibilità all'indietro e supportano le applicazioni preesistenti progettate per Kerberos 4; si ritiene che il codice compatibile presente nella versione 5 sia ancora vulnerabile agli attacchi di buffer overflow.

Quindi, visti i problemi del protocollo della versione 4 e le potenziali vulnerabilità di superamento del buffer, è meglio non supportare né usare Kerberos versione 4.

Riassumendo, da questa descrizione su come sia possibile compromettere un'infrastruttura Kerberos, si comprende che la sicurezza dello stesso server Kerberos è un'esigenza prioritaria; bisogna poi eseguire software Kerberos aggiornato e restare vigili scegliendo buone password e predisponendo buoni criteri per le password.