X
Autenticazione Utente
Kerberos 5
Tesina di Sicurezza su Reti
Studenti:
Domenico Di Giorgio 556/000405
Armando Pagliara
556/000195
Cris Malinconico 556/000145
Marco Rossi
556/000875
Anno Accademico 2003/2004
www.kerberos5.cjb.net
X
Tesina di
Sicurezza Su Reti
Progettazione di un’applicazione Client/Server per la
gestione di un Data-Base Remoto con autenticazione
tramite Kerberos 5
www.kerberos5.cjb.net
T
R
A
C
C
I
A
X
Cos’è Kerberos
Kerberos è un sistema di autenticazione sviluppato al M.I.T. tra il 1980 e il 1983
in concomitanza col progetto ATHENA e in collaborazione con IBM e la
Digital Equipment Corporation.
Il sistema di autenticazione è stato paragonato al famoso Cerbero (Kerberos)
poiché si basa su tre procedure:
autenticazione
autorizzazione
cifratura
Kerberos è stato progettato per eliminare la necessità di dimostrare il possesso di
informazioni segrete (come la password) per divulgare la propria identità. Basato sul
modello di distribuzione delle chiavi sviluppato da Needham e Schroeder, usa la
crittografia a chiave simmetrica (con una chiave per cifrare e decifrare) per le
comunicazioni tra client e server.
www.kerberos5.cjb.net
X
Come funziona Kerberos
Kerberos è un protocollo per autenticare utenti e servizi. Esso consta di tre figure fondamentali:
1)
Principals
2)
KDC
3)
Ticket
Consideriamo principals gli utenti che Kerberos deve
autenticare
KDC è il Key Distribution Center il quale pubblica le
prove dell’identità attraverso i tickets.
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 sessione
di vita breve, ciò permette di non inviare sulla rete alcuna password .
Vengono generate casualmente chiavi di sessione utilizzate per criptare/decriptare i messaggi.
www.kerberos5.cjb.net
X
Caratteristiche dei Tickets
1.
2.
3.
4.
5.
6.
7.
Valido per un periodo di tempo limitato (e.g. 25h)
Può essere rinnovato se valido e nel periodo di tempo permesso per il rinnovamento
(e.g. 14d)
Può essere inizialmente nullo
Può essere inoltrabile agli altri hosts
(TGT) può essere usato per ottenere ulteriori ticket
Può essere distrutto se non se ne ha bisogno
È immagazzinato in un archivio, di solito /tmp/…
Tipi di ticket:
-
Tickets iniziali
Tickets Pre-Autenticati
Ticket Invalidi
Ticket Postdatati
Ticket rinnovabili
Proxy Ticket
Forwarded Ticket
www.kerberos5.cjb.net
X
Installazione di Kerberos
kerberos_1.3.3.tar
kerberos_1.3.3
linux:>
linux:>
linux:>
linux:>
doc
./configure
make
make install
make check
src
www.kerberos5.cjb.net
X
Configurazione di Kerberos
krb5.conf e kdc.conf
sono i due file di configurazione che devono essere modificati per un corretto funzionamento di
KerberosV
Per la configurazione di Kerberos vedremo anche:
Creazione Data-Base
Administrator Principals
Kerberos Server
Access Control List
Keytab
krb5.conf
kdc.conf
[appdefaults]
[libdefaults]
[realms]
[kdcdefaults]
[logging]
[domain_realm]
Struttura dei file
www.kerberos5.cjb.net
[realms]
X
krb5.conf
[libdefaults]
krb5.conf
Contiene le librerie di default utilizzate da
Kerberos 5.
[realms]
[appdefaults]
[libdefaults]
Contiene informazioni relative
ad ogni realm, ossia le macchine
su cui si trovano i server Kerberos.
[realms]
[logging]
[domain_realm]
[domain_realm]
Questo tag è utilizzato dai programmi
per determinare il realm di appartenenza di un host.
[logging]
Contiene i path dei file di log
[appdefaults]
Contiene i valori di default che possono essere utilizzati dagli
applicativi di Kerberos 5
www.kerberos5.cjb.net
X
kdc.conf
[kdcdefaults]
Contiene informazioni relative alle porte su cui può girare il KDC.
[realms]
Contiene una sottosezione per ogni realm definito nel krb5.conf ed ogni
sottosezione contiene informazioni specifiche per ogni realm, incluse quelle
che stabiliscono dove trovare i sever Kerberos (per quel realm).
kdc.conf
[kdcdefaults]
[realms]
www.kerberos5.cjb.net
X
Creazione database di Kerberos
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 password
Re-enter KDC database master key to verify: <= ridigita la password
Il comando da eseguire per poter creare il database di Kerberos per il realm definito
nei file di configurazione.
www.kerberos5.cjb.net
X
Access Control List
L'Access Control List è un file con estensione .acl e contiene la lista dei principal
che sono amministratori del database di Kerberos. Il nome del file .acl deve
essere lo stesso del nome specificato nel file kdc.conf (di default kadm5.acl).
Kerberos principal
permission
*/[email protected]
*
optional target principal
*
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
X
Administrator Principals
L'aggiunta di un principal amministratore del database prevede l'utilizzo del seguente
comando:
linux:> /usr/local/sbin/kadmin.local
kadmin.local: addprinc admin/[email protected]
WARNING: no policy specified for "admin/[email protected]";
defaulting to no policy.
Enter password for principal admin/[email protected]: <= digita la master password
Re-enter password for principal admin/[email protected]: <= ridigita la password
Principal "admin/[email protected]" created.
kadmin.local:
www.kerberos5.cjb.net
X
Keytab
Il keytab kadmind rappresenta la chiave che i vecchi demoni di amministrazione come kadmind4 e
v5passwdd useranno per decifrare i ticket di kerberos provenienti dai client o dagli
amministratori e determinare se essi hanno accesso oppure no al database. È necessario creare il
keytab kadmind aventi come principal kadmin/admin e kadmin/changepw.
linux:> /usr/local/sbin/kadmin.local
kadmin.local: ktadd –k /usr/loca/var/krb5kdc/kadm5.keytab kadmin/admin kadmin/changepw
Entry 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: quit
linux:>
www.kerberos5.cjb.net
X
StartUp Kerberos-Server
È possibile avviare i demoni di kerberos sulla macchina in cui è stato installato il KDC.
I due comandi da eseguire sono i seguenti:
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
X
Applicazione Client/Server
L’accesso ai servizi offerti dal Server è controllato tramite
autenticazione con Kerberos5.
L’Application Server offre le funzionalità di gestione di un DataBase 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
(1)
X
Applicazione Client/Server
(2)
Protocollo di comunicazione Client/Server
Kdc
Kerberos
User
Client
Server
www.kerberos5.cjb.net
X
Server
(1)
Notifica del corretto avvio del server.
(In precedenza sono stati avviati i demoni
krb5kdc e kadmind)
www.kerberos5.cjb.net
X
Client
(1)
Richiesta username e password all’utente;
www.kerberos5.cjb.net
X
Client
(2)
Dopo aver inserito username e
password viene fatta la richiesta del
ticket
Ottenuto il ticket ci si connette
all’host server e si effettua una
mutua autenticazione
Se tutto ok vengono messi a
disposizione una serie di funzioni
per la gestione di un database
remoto
www.kerberos5.cjb.net
X
Server
(2)
Il server è attivo e si accorge della presenza di [email protected] in
quanto è stata fatta una mutua autenticazione
www.kerberos5.cjb.net
X
Client
(3)
Il Client richiede una funzionalità
all’Application Server il quale gli risponde
con un risultato.
Il Client visualizza il risultato ed è pronto ad
effettuare un’altra operazione.
Il client decide di uscire.
www.kerberos5.cjb.net
X
Server
(3)
Il server notifica l’ingresso e l’uscita dei vari principal dal servizio.
Memorizza nel file di log tutte le operazioni effettuate dal Client.
www.kerberos5.cjb.net
X
Server
(4)
File di log in cui vengono memorizzate le operazioni dei Client
www.kerberos5.cjb.net
X
Considerazioni
L’applicazione offre dei servizi remoti per cui è necessario che tutte le
macchine che partecipano allo scambio di messaggi siano on line e pronte
a ricevere delle richieste; ricordiamo che devono essere verificate alcune
condizioni:
• I demoni di kerberos (kadmind e krb5kdc ) devono essere avviati prima
di tutti gli altri applicativi (Client e Application-Server);
• I Client che vogliono richiedere dei servizi all’Application-Server
devono essere registrati come principal sul KDC;
• L’Application-Server deve essere avviato prima dei Client;
• La password è inserita in modalità “cieca” per assicurare un ulteriore
livello di sicurezza lato Client;
• La chiave di ciascun record presente nel database è l’unico elemento di
accesso all’utilizzo delle funzioni fornite dall’Application-Server
www.kerberos5.cjb.net
X
Developers
Domenico Di
Giorgio
Cris Malinconico
Armando Pagliara
Marco
Rossi
www.kerberos5.cjb.net
Kerberos il mostro della rete
www.kerberos5.cjb.net
X
Scarica

SCARICA QUI LA PRESENTAZIONE PowerPoint!