autenticazione utente kerberos 5
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 PresentationTRANSCRIPT
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