Autenticazione Utente Kerberos 5

26
Autenticazione Autenticazione Utente Utente Kerberos 5 Kerberos 5 Tesina di Sicurezza su Reti Tesina di Sicurezza su Reti Studenti: Studenti: Domenico Di Giorgio 556/000405 Domenico Di Giorgio 556/000405 Cris Malinconico 556/000145 Cris Malinconico 556/000145 Armando Pagliara 556/000195 Armando Pagliara 556/000195 Marco Rossi 556/000875 Marco Rossi 556/000875 Anno Accademico 2003/2004 Anno Accademico 2003/2004 X X www.kerberos5.cjb.net

description

X. Autenticazione Utente Kerberos 5. Tesina di Sicurezza su Reti Studenti: Domenico Di Giorgio 556/000405 Cris Malinconico 556/000145 Armando Pagliara 556/000195 Marco Rossi 556/000875 Anno Accademico 2003/2004. - PowerPoint PPT Presentation

Transcript of Autenticazione Utente Kerberos 5

Autenticazione Autenticazione Utente Utente

Kerberos 5Kerberos 5Tesina di Sicurezza su RetiTesina di Sicurezza su Reti

Studenti:Studenti: Domenico Di Giorgio 556/000405 Cris Domenico Di Giorgio 556/000405 Cris Malinconico 556/000145 Malinconico 556/000145 Armando Pagliara 556/000195 Marco Rossi Armando Pagliara 556/000195 Marco Rossi 556/000875 556/000875

Anno Accademico 2003/2004Anno Accademico 2003/2004

XX

www.kerberos5.cjb.net

Tesina Tesina di Sicurezza Su di Sicurezza Su RetiReti

Progettazione di un’applicazione Progettazione di un’applicazione Client/Server per la gestione di un Data-Client/Server per la gestione di un Data-Base Remoto con autenticazione tramite Base Remoto con autenticazione tramite Kerberos 5Kerberos 5

TRACCIA

XX

www.kerberos5.cjb.net

Cos’è KerberosCos’è KerberosKerberos è un sistema di autenticazione sviluppato al M.I.T. tra Kerberos è un sistema di autenticazione sviluppato al M.I.T. tra

il 1980 e il 1983 in concomitanza col progetto ATHENA e in il 1980 e il 1983 in concomitanza col progetto ATHENA e in collaborazione con IBM e la Digital Equipment Corporation.collaborazione con IBM e la Digital Equipment Corporation.

Il sistema di autenticazione è stato paragonato al famoso Il sistema di autenticazione è stato paragonato al famoso Cerbero (Kerberos) poiché si basa su tre procedure:Cerbero (Kerberos) poiché si basa su tre procedure:

autenticazioneautenticazioneautorizzazione autorizzazione cifratura cifratura

Kerberos è stato progettato per eliminare la necessità di dimostrare il Kerberos è stato progettato per eliminare la necessità di dimostrare il possesso di informazioni segrete (come la password) per divulgare possesso di informazioni segrete (come la password) per divulgare la propria identità. Basato sul modello di distribuzione delle chiavi la propria identità. Basato sul modello di distribuzione delle chiavi sviluppato da Needham e Schroeder, usa la crittografia a chiave sviluppato da Needham e Schroeder, usa la crittografia a chiave simmetrica (con una chiave per cifrare e decifrare) per le simmetrica (con una chiave per cifrare e decifrare) per le comunicazioni tra client e server.comunicazioni tra client e server.

XX

www.kerberos5.cjb.net

Come funziona KerberosCome funziona KerberosKerberos è un protocollo per autenticare utenti e servizi. Esso consta di tre Kerberos è un protocollo per autenticare utenti e servizi. Esso consta di tre

figure fondamentali:figure fondamentali:1)1) PrincipalsPrincipals2)2) KDCKDC3)3) TicketTicket

Consideriamo principals gli utenti che Kerberos deve Consideriamo principals gli utenti che Kerberos deve autenticareautenticare

KDC è il Key Distribution Center il quale pubblica le KDC è il Key Distribution Center il quale pubblica le prove dell’identità attraverso i tickets.prove dell’identità attraverso i tickets.

I tickets contenitori di chiavi di sessione con una breve durata di vita.I tickets contenitori di chiavi di sessione con una breve durata di vita.

L'identità è controllata scambiando messaggi (request-response) in cui si usa una chiave di L'identità è controllata scambiando messaggi (request-response) in cui si usa una chiave di sessione di vita breve, ciò permette di non inviare sulla rete alcuna sessione di vita breve, ciò permette di non inviare sulla rete alcuna password . password .

Vengono generate casualmente chiavi di sessione utilizzate per criptare/decriptare i Vengono generate casualmente chiavi di sessione utilizzate per criptare/decriptare i messaggi.messaggi.

XX

www.kerberos5.cjb.net

Caratteristiche dei Caratteristiche dei TicketsTickets

1.1. Valido per un periodo di tempo limitato (e.g. 25h) Valido per un periodo di tempo limitato (e.g. 25h) 2.2. Può essere rinnovato se valido e nel periodo di tempo permesso Può essere rinnovato se valido e nel periodo di tempo permesso

per il rinnovamento (e.g. 14d) per il rinnovamento (e.g. 14d) 3.3. Può essere inizialmente nullo Può essere inizialmente nullo 4.4. Può essere inoltrabile agli altri hosts Può essere inoltrabile agli altri hosts 5.5. (TGT) può essere usato per ottenere ulteriori ticket (TGT) può essere usato per ottenere ulteriori ticket 6.6. Può essere distrutto se non se ne ha bisognoPuò essere distrutto se non se ne ha bisogno7.7. È immagazzinato in un archivio, di solito /tmp/…È immagazzinato in un archivio, di solito /tmp/…

Tipi di ticket:Tipi di ticket:- Tickets inizialiTickets iniziali- Tickets Pre-Autenticati Tickets Pre-Autenticati - Ticket Invalidi Ticket Invalidi - Ticket Postdatati Ticket Postdatati - Ticket rinnovabili Ticket rinnovabili - Proxy Ticket Proxy Ticket - Forwarded Ticket Forwarded Ticket

XX

www.kerberos5.cjb.net

Installazione di KerberosInstallazione di Kerberos

kerberos_1.3.3.tarkerberos_1.3.3.tar

XX

kerberos_1.3.3kerberos_1.3.3

srcsrcdocdoc

linux:> ./configurelinux:> ./configurelinux:> makelinux:> makelinux:> make install  linux:> make install  linux:> make checklinux:> make check

www.kerberos5.cjb.net

Configurazione di Configurazione di KerberosKerberos

krb5.confkrb5.conf e e kdc.confkdc.conf sono i due file di configurazione che devono essere modificati per un corretto sono i due file di configurazione che devono essere modificati per un corretto

funzionamento di KerberosVfunzionamento di KerberosV

Per la configurazione di Kerberos vedremo anche:Per la configurazione di Kerberos vedremo anche:Creazione Data-BaseCreazione Data-Base

Access Control ListAccess Control ListAdministrator Principals Administrator Principals KeytabKeytab

Kerberos Server Kerberos Server

XX

krb5.confkrb5.conf

[logging][logging]

[appdefaults][appdefaults]

[realms][realms]

[domain_realm][domain_realm]

[libdefaults][libdefaults]

Struttura dei fileStruttura dei file

kdc.confkdc.conf

[kdcdefaults][kdcdefaults] [realms][realms]

www.kerberos5.cjb.net

krb5.confkrb5.conf

[logging][logging]

[appdefaults][appdefaults]

[realms][realms]

[domain_realm][domain_realm]

[libdefaults][libdefaults]

[libdefaults][libdefaults]Contiene le librerie di default utilizzate da Contiene le librerie di default utilizzate da Kerberos 5.Kerberos 5.[realms][realms]Contiene informazioni relative Contiene informazioni relative ad ogni realm, ossia le macchine ad ogni realm, ossia le macchine su cui si trovano i server Kerberos.su cui si trovano i server Kerberos. [domain_realm][domain_realm]Questo tag è utilizzato dai programmi Questo tag è utilizzato dai programmi per determinare il realm di appartenenza di un host.per determinare il realm di appartenenza di un host.[logging][logging]Contiene i path dei file di log Contiene i path dei file di log [appdefaults][appdefaults]Contiene i valori di default che possono essere Contiene i valori di default che possono essere utilizzati dagli applicativi di Kerberos 5utilizzati dagli applicativi di Kerberos 5

krb5.confkrb5.confXX

www.kerberos5.cjb.net

kdc.confkdc.conf[kdcdefaults][kdcdefaults]Contiene informazioni relative alle porte su cui può girare Contiene informazioni relative alle porte su cui può girare il KDC.il KDC.[realms][realms]Contiene una sottosezione per ogni realm definito nel Contiene una sottosezione per ogni realm definito nel krb5.conf ed ogni sottosezione contiene informazioni krb5.conf ed ogni sottosezione contiene informazioni specifiche per ogni realm, incluse quelle che stabiliscono specifiche per ogni realm, incluse quelle che stabiliscono dove trovare i sever Kerberos (per quel realm).dove trovare i sever Kerberos (per quel realm).

XX

kdc.confkdc.conf

[kdcdefaults][kdcdefaults] [realms][realms]

www.kerberos5.cjb.net

Creazione database di Creazione database di KerberosKerberos

Il comando da eseguire per poter creare il database di Kerberos Il comando da eseguire per poter creare il database di Kerberos per il realm definito nei file di configurazione.per il realm definito nei file di configurazione.

XX

linux:> /usr/local/sbin/kdb5_util create -r MY.REALM -s Initializing database '/usr/local/var/krb5kdc/principal' for realm 'MY.REALM'. master key name 'K/[email protected]'You will be prompted for the database Master Password.It is important that you NOT FORGET this password.

Enter KDC database master key: <= digita la master passwordRe-enter KDC database master key to verify: <= ridigita la password

www.kerberos5.cjb.net

Access Control ListAccess Control ListL'Access Control List è un file con estensione .acl e contiene L'Access Control List è un file con estensione .acl e contiene

la lista dei principal che sono amministratori del database la lista dei principal che sono amministratori del database di Kerberos. Il nome del file .acl deve essere lo stesso del di Kerberos. Il nome del file .acl deve essere lo stesso del nome specificato nel file kdc.conf (di default nome specificato nel file kdc.conf (di default kadm5.aclkadm5.acl).).

XX

Kerberos principal permission optional target principal

*/[email protected] * *

Pricipali permessi:a permette l'aggiunta di nuovi principal d permette la cancellazione di principal esistenti m permette la modifica di principal esistenti c permette il cambio di password di un principal i permette le interrogazioni sul database l permette la visualizzazione del principal

* Carattere jolly

www.kerberos5.cjb.net

Administrator PrincipalsAdministrator PrincipalsL'aggiunta di un principal amministratore del database prevede L'aggiunta di un principal amministratore del database prevede

l'utilizzo del seguente comando: l'utilizzo del seguente comando:

XX

linux:> /usr/local/sbin/kadmin.localkadmin.local: addprinc admin/[email protected]: no policy specified for "admin/[email protected]";defaulting to no policy.

Enter password for principal admin/[email protected]: <= digita la master passwordRe-enter password for principal admin/[email protected]: <= ridigita la password Principal "admin/[email protected]" created.kadmin.local:

www.kerberos5.cjb.net

KeytabKeytabIl keytab Il keytab kadmindkadmind rappresenta la chiave che i vecchi demoni di rappresenta la chiave che i vecchi demoni di

amministrazione come amministrazione come kadmind4kadmind4 e e v5passwddv5passwdd useranno per decifrare i useranno per decifrare i ticket di kerberos provenienti dai client o dagli amministratori e ticket di kerberos provenienti dai client o dagli amministratori e determinare se essi hanno accesso oppure no al database. È necessario determinare se essi hanno accesso oppure no al database. È necessario creare il keytab kadmind aventi come principal kadmin/admin e creare il keytab kadmind aventi come principal kadmin/admin e kadmin/changepw. kadmin/changepw.

XX

linux:> /usr/local/sbin/kadmin.localkadmin.local: ktadd –k /usr/loca/var/krb5kdc/kadm5.keytab kadmin/admin kadmin/changepwEntry for principal kadmin/admin with kvno 5, encryption    type Triple DES cbc mode wih HMAC/sha1 added to keytab   WRFILE: /usr/loca/var/krb5kdc/kadm5.keytab.Entry for principal kadmin/admin with kvno 5, encryption    type DES cbc mode wih CRC-32 added to keytab   WRFILE: /usr/loca/var/krb5kdc/kadm5.keytab.Entry for principal kadmin/changepw with kvno 5, encryption    type Triple DES cbc mode wih HMAC/sha1 added to keytab   WRFILE: /usr/loca/var/krb5kdc/kadm5.keytab.Entry for principal kadmin/changepw with kvno 5, encryption    type DES cbc mode wih CRC-32 added to keytab   WRFILE: /usr/loca/var/krb5kdc/kadm5.keytab.Kadmin.local: quitlinux:>

www.kerberos5.cjb.net

StartUp Kerberos-ServerStartUp Kerberos-ServerÈ possibile avviare i demoni di kerberos sulla macchina in cui è stato installato il KDC. È possibile avviare i demoni di kerberos sulla macchina in cui è stato installato il KDC. I due comandi da eseguire sono i seguenti: I due comandi da eseguire sono i seguenti:

XX

linux:> /usr/local/sbin/krb5kdc

linux:> /usr/local/sbin/kadmind

Se tutto è andato a buon fine eseguendo il comando tail sui due file di log avremo il seguente risultato

linux:> tail /var/log/krb5kdc.log

Jul 27 12 :35 :47 beeblerox krb5kdc[3187] (info) : commencing operation

linux:> tail /var/log/kadmin.log

Jul 27 12 :35 :47 beeblerox kadmind[3189] (info) : starting

www.kerberos5.cjb.net

Applicazione Applicazione Client/Server Client/Server (1)(1)

L’accesso ai servizi offerti dal Server è controllato L’accesso ai servizi offerti dal Server è controllato tramite autenticazione con Kerberos5.tramite autenticazione con Kerberos5.

XX

L’Application Server offre le funzionalità di gestione di un Data-Base remoto inerente ad una anagrafe.

L’intera applicazione si basa sui socket di Berkley per la gestione della comunicazione tra client e server.

www.kerberos5.cjb.net

Applicazione Applicazione Client/Server Client/Server (2)(2)

XX

Protocollo di comunicazione Client/ServerProtocollo di comunicazione Client/Server

ClientClient ServerServer

User

Kdc Kdc KerberosKerberos

www.kerberos5.cjb.net

Server Server (1)(1)

Notifica del corretto avvio del server.Notifica del corretto avvio del server.(In precedenza sono stati avviati i demoni (In precedenza sono stati avviati i demoni krb5kdc e kadmind)krb5kdc e kadmind)

XX

www.kerberos5.cjb.net

Richiesta username e password all’utente;Richiesta username e password all’utente;

XX

Client Client (1)(1)

www.kerberos5.cjb.net

Client Client (2)(2)

XX

Dopo aver inserito Dopo aver inserito username e password viene username e password viene fatta la richiesta del ticketfatta la richiesta del ticket

Ottenuto il ticket ci si Ottenuto il ticket ci si connette all’host server e si connette all’host server e si effettua una mutua effettua una mutua autenticazioneautenticazione

Se tutto ok vengono messi Se tutto ok vengono messi a disposizione una serie di a disposizione una serie di funzioni per la gestione di funzioni per la gestione di un database remotoun database remoto

www.kerberos5.cjb.net

Server Server (2)(2)

Il server è attivo e si accorge della presenza di Il server è attivo e si accorge della presenza di [email protected] in quanto è stata fatta una [email protected] in quanto è stata fatta una mutua autenticazionemutua autenticazione

XX

www.kerberos5.cjb.net

Client Client (3)(3)

XX

Il Client richiede una funzionalità Il Client richiede una funzionalità all’Application Server il quale gli all’Application Server il quale gli risponde con un risultato.risponde con un risultato.

Il Client visualizza il risultato ed è Il Client visualizza il risultato ed è pronto ad effettuare un’altra pronto ad effettuare un’altra operazione.operazione.

Il client decide di uscire.Il client decide di uscire.

www.kerberos5.cjb.net

Server Server (3)(3)

Il server notifica l’ingresso e l’uscita dei vari principal dal Il server notifica l’ingresso e l’uscita dei vari principal dal servizio.servizio.Memorizza nel file di log tutte le operazioni effettuate dal Client.Memorizza nel file di log tutte le operazioni effettuate dal Client.

XX

www.kerberos5.cjb.net

Server Server (4)(4)

File di log in cui vengono memorizzate le operazioni File di log in cui vengono memorizzate le operazioni dei Clientdei Client

XX

www.kerberos5.cjb.net

ConsiderazioniConsiderazioniL’applicazione offre dei servizi remoti per cui è necessario che L’applicazione offre dei servizi remoti per cui è necessario che tutte le macchine che partecipano allo scambio di messaggi tutte le macchine che partecipano allo scambio di messaggi siano on line e pronte a ricevere delle richieste; ricordiamo che siano on line e pronte a ricevere delle richieste; ricordiamo che devono essere verificate alcune condizioni:devono essere verificate alcune condizioni:• I demoni di kerberos (kadmind e krb5kdc ) devono essere I demoni di kerberos (kadmind e krb5kdc ) devono essere avviati prima di tutti gli altri applicativi (Client e Application-avviati prima di tutti gli altri applicativi (Client e Application-Server);Server);• I Client che vogliono richiedere dei servizi all’Application-I Client che vogliono richiedere dei servizi all’Application-Server devono essere registrati come principal sul KDC;Server devono essere registrati come principal sul KDC;• L’Application-Server deve essere avviato prima dei Client;L’Application-Server deve essere avviato prima dei Client;• La password è inserita in modalità “cieca” per assicurare un La password è inserita in modalità “cieca” per assicurare un ulteriore livello di sicurezza lato Client;ulteriore livello di sicurezza lato Client;• La chiave di ciascun record presente nel database è l’unico La chiave di ciascun record presente nel database è l’unico elemento di accesso all’utilizzo delle funzioni fornite elemento di accesso all’utilizzo delle funzioni fornite dall’Application-Serverdall’Application-Server

XX

www.kerberos5.cjb.net

DevelopersDevelopers

Domenico Di

Giorgio Cris Malinconico

Armando

Pagliara Marco

Rossi

www.kerberos5.cjb.net

XX

Kerberos il mostro Kerberos il mostro della retedella rete

XX

www.kerberos5.cjb.net