- autenticazione centralizzata
Iniziamo con Kerberos... Kerberos Kerberos è un protocollo di rete per l'autenticazione tramite crittografia che permette a diversi terminali di comunicare su una rete informatica insicura provando la propria identità e cifrando i dati (vengono utilizzati dei token al posto di utente e password)
Principal, sono i client che richiedono servizi, i server che offrono servizi e gli utenti che accedono al sistema KDC - Key Distribution Center, tipicamente un server su cui sono in esecuzione due servizi AS e TGS, si occupa di autenticare i Principal, di rilasciare i ticket e mantenere aggiornato il database dei Principal. Kerberos...
La logica di funzionamento di Kerberos consente ad un Principal di essere autenticato senza dover MAI inviare la password in rete. Se volete approfondire: http://kerberos. org/software/tutorial. html#1.3.5.1 Kerberos...
Esistono alcune implementazioni open-source di Kerberos tra cui: MIT Kerberos http://web.mit.edu/kerberos/ Heymdal Kerberos http://www.h5l.org/ entrambe le soluzioni, concettualmente, funzionano allo stesso modo, i tool di configurazione sono però diversi. questa sera parleremo di MIT Kerberos
E' possibile realizzare una soluzione basata su Kerberos + LDAP + Samba ed ottenere in questo modo (circa) l'equivalente di un MS Active Directory. Questa è una guida su come fare... se siete interessati e PAZZI/CORAGGIOSI! http://guide.debianizzati.org/index.php/samba,_openldap, _Kerberos: _creare_un_controller_di_dominio_sicuro_con_debian_lenny Questo è invece un buon how-to su come utilizzare LDAP come base dati per Kerberos http://help.ubuntu-it.org/9. 10/ubuntu/serverguide/it/kerberos-ldap.html
Questa è la guida da cui ho preso spunto: http://techpubs.spinlocksolutions.com/dklar/kerberos.html NB. in questo corso NON utilizzeremo Kerberos... ma ve lo spiego comunque per cultura generale :-)
Per prima cosa verifichiamo il contenuto del file /etc/hosts 127.0.0.1 localhost localhost.levicoopen.locale 192.168.0.1 srvad.levicoopen.locale srvad Installiamo il server # apt-get install krb5-{admin-server,kdc} Creiamo il reame # krb5_newrealm
Modifichiamo il contenuto del file /etc/krb5.conf [domain_realm].levicoopen.locale = LEVICOOPEN.LOCALE levicoopen.locale = LEVICOOPEN.LOCALE [logging] kdc = FILE:/var/log/kerberos/krb5kdc.log admin_server = FILE:/var/log/kerberos/kadmin.log default = FILE:/var/log/kerberos/krb5lib.log
Predisponiamo i log per kerberos # mkdir /var/log/kerberos # touch /var/log/kerberos/{krb5kdc,kadmin,krb5lib}.log # chmod -R 750 /var/log/kerberos e rifacciamo partire i servizi # invoke-rc.d krb5-admin-server restart # invoke-rc.d krb5-kdc restart OK... la configurazione lato server è finita :-)
Facciamo un po di test: # kadmin.local --> per amministratore kerberos direttamente dalla console (? per accedere all'elenco dei comandi) Alcuni comandi utilizzabili da kadmin.local listprincs --> elenco dei principal kadmin/admin@levicoopen.locale kadmin/changepw@levicoopen.locale kadmin=utente admin,changepw=ruolo LEVICOOPEN.LOCALE=reame quit --> per uscire da kadmin.local
Tramite kadmin.local è possibile definire anche delle policy che potranno essere successivamente applicate ai vari principals. add_policy -minlength 8 -minclasses 1 admin add_policy -minlength 8 -minclasses 1 host add_policy -minlength 8 -minclasses 1 service add_policy -minlength 8 -minclasses 1 user listpols --> per visualizzare l'elenco delle policy getpols NOMEPOLICY --> per visualizzare le proprietà di una policy
Facciamo in modo che gli utenti con ruolo/policy admin abbiano effettivamente i permessi di amminstrazione. Modifichiamo il contenuto del file /etc/krb5kdc/kadm5.acl */admin * che tradotto significa: tuttigliutenti con policy admin possono fare tutto! e riavviamo i servizi kerberos # invoke-rc.d krb5-admin-server restart # invoke-rc.d krb5-kdc restart
Creiamo il nostro primo principal con PRIVILEGI di amministratore addprinc -policy admin root/admin listprincs quit e verifichiamo che il nuovo principal riesca a connettersi a kerberos NB. utilizzeremo kadmin al posto di kadmin.local # kadmin -p root/admin
Creiamo il nostro secondo principal SENZA PRIVILEGI amministrativi addprinc -policy user pippo listprincs quit e verifichiamo se il nuovo utente "pippo" riceve il suo ticket! # klist -f # kinit pippo # klist -f Ticket cache: FILE:/tmp/krb5cc_0 Default principal: pippo@levicoopen.locale Valid starting Expires Service principal 01/04/12 11:14:49 01/04/12 21:14:49 krbtgt/levicoopen.locale@levicoopen. LOCALE renew until 01/05/12 11:14:47, Flags: FPRIA per poi distruggerlo # kdestroy
- servizi kerberizzati Ogni servizio può supportare l'autenticazione Kerberos: tramite il supporto nativo per Kerberos krb5-ftpd - Secure FTP server supporting MIT Kerberos krb5-rsh-server - Secure replacements for rshd and rlogind using MIT Kerberos krb5-telnetd - Secure telnet server supporting MIT Kerberos oppure delegando il lavoro di autenticazione al sottosistema PAM questo significa che, in linea di massima, è possibile kerberizzare qualsiasi servizio di rete. ecco come installare un servizio kerberizzato: http: //techpubs.spinlocksolutions.com/dklar/kerberos.html
- servizi kerberizzati