gestione centralizzata delle utenze tramite ldap fare? • centralizzare la gestione delle utenze é...
TRANSCRIPT
Gestione centralizzata delleGestione centralizzata delleutenze tramite LDAPutenze tramite LDAP
Giuseppe Lo Biondo [email protected]
Firenze, 19 Settembre 2000
Perché centralizzare le utenze?Perché centralizzare le utenze?•• Avere a che fare con una utenza numerosa e conAvere a che fare con una utenza numerosa e con
servizi informatici eterogenei e distribuiti spessoservizi informatici eterogenei e distribuiti spessosi risolve nella creazione di innumerevoli account susi risolve nella creazione di innumerevoli account sumacchine diverse e per scopi diversi.macchine diverse e per scopi diversi.
•• Questo, rendendo difficile la manutenzione degliQuesto, rendendo difficile la manutenzione degliaccount, può essere un problema per la sicurezzaaccount, può essere un problema per la sicurezzagenerale del sistema informatico: account validigenerale del sistema informatico: account validinon usati, account dimenticati…, password danon usati, account dimenticati…, password dacambiare su più macchine.cambiare su più macchine.
Come fare?Come fare?•• Centralizzare la gestione delle utenze é un modoCentralizzare la gestione delle utenze é un modo
per risolvere il problemaper risolvere il problema
•• Ad oggi le tecnologie più in voga per la gestioneAd oggi le tecnologie più in voga per la gestionecentralizzata delle utenze sono NIS ed LDAPcentralizzata delle utenze sono NIS ed LDAP
•• In questo contesto ci si propone di dare unaIn questo contesto ci si propone di dare unadescrizione di come implementare un sistema perdescrizione di come implementare un sistema perla gestione centralizzata delle utenze facendola gestione centralizzata delle utenze facendouso di LDAPuso di LDAP
Schema generaleSchema generale
LDAP or NIS serverLDAP or NIS client 2
LDAP or NIS client 3
LDAP or NIS client 1
User INFOTo ClientsAutenticazione,
informazioni sull'utenza (passwd, group,shadow)
FailoverFailover
Cosa é il Network InformationCosa é il Network InformationSystemSystem•• NISNIS é una tecnologia che permette di distribuire é una tecnologia che permette di distribuire
su un network informazioni sugli utenti, hosts,su un network informazioni sugli utenti, hosts,servizi etc..servizi etc..
•• Un dominio NIS consiste di un Un dominio NIS consiste di un master servermaster server con conla versione originale delle informazioni, di la versione originale delle informazioni, di slaveslaveserversservers che contengono copie di backup di queste che contengono copie di backup di questeinformazioni e di informazioni e di clientsclients che le usano. che le usano.
•• Le informazioni sono tipicamente in files inLe informazioni sono tipicamente in files informato db chiamati formato db chiamati mappemappe..
Lightweight Directory AccessLightweight Directory AccessProtocol (1)Protocol (1)•• LDAPLDAP è un protocollo di accesso a è un protocollo di accesso a Directory ServersDirectory Servers
(RFC 1777))
•• Usa un modello gerarchico delle informazioni, che sonoUsa un modello gerarchico delle informazioni, che sonoorganizzate in un albero (DIT)organizzate in un albero (DIT)
•• Il modello informativo é basato sulle entry, le quali sonoIl modello informativo é basato sulle entry, le quali sonocomposte da attributi che possono avere uno o più valoricomposte da attributi che possono avere uno o più valori
•• E’ possibile determinare il tipo degli attributi (ASCII,E’ possibile determinare il tipo degli attributi (ASCII,binario) e il loro comportamento (eg se il case èbinario) e il loro comportamento (eg se il case èimportante durante i confronti)importante durante i confronti)
Lightweight Directory AccessLightweight Directory AccessProtocol (2)Protocol (2)•• Il significato delle entry (cosa rappresentano) è stabilitoIl significato delle entry (cosa rappresentano) è stabilito
mediante un attributo particolare, la mediante un attributo particolare, la objectclassobjectclass
•• Le Le entryentry sono unicamente individuate da un sono unicamente individuate da un DistinguishedDistinguishedNameName (DN) (DN)
•• LDAP fornisce metodi di LDAP fornisce metodi di protezione delle informazioniprotezione delle informazioni(ACLs), di(ACLs), di autenticazione autenticazione (Standard, Kerberos, SASL), di(Standard, Kerberos, SASL), direplicazionereplicazione e di e di distribuzionedistribuzione (referrals) dei dati. (referrals) dei dati.
Lightweight Directory AccessLightweight Directory AccessProtocolProtocol (3) (3)LDAP può essere usato come server centrale per la
gestione delle utenze allo stesso modo di NIS.
Come per il NIS:
• Avere una singola istanza dei dati degli utenti permette dimantenere coerente su più macchine lo stato degliaccount operando da una singola postazione.
• I server LDAP possono essere replicati per garantire lafunzionalità del servizio.
Lightweight Directory AccessLightweight Directory AccessProtocol Protocol (4)(4)Inoltre:
• Le informazioni sul server LDAP possono essere usate daapplicazioni di natura diversa (mail routing, addressbookecc) senza che sia necessario modificarne la struttura.
• Access Lists anche molto complesse possono essereapplicate a tali informazioni
• Un canale sicuro di trasmissione tra client e server puòessere implementato tramite SSL (importantesoprattutto se si ha a che fare con la distribuzioni diinformazioni riguardanti gli utenti)
Autenticazione e name servicesAutenticazione e name services•• Per comprendere come può essere usato LDAP alPer comprendere come può essere usato LDAP al
posto di NIS occorre conoscere le tecnologie:posto di NIS occorre conoscere le tecnologie:–– Pluggable Authentication ModulesPluggable Authentication Modules (PAM) (PAM)–– NameName Service Switch Service Switch (NSS) (NSS)
usate tipicamente da Linux e SunOs ma disponibiliusate tipicamente da Linux e SunOs ma disponibilianche su altri sistemi operativianche su altri sistemi operativi
•• Avendo a che fare con un servizio (LDAP) cheAvendo a che fare con un servizio (LDAP) chefornisce informazioni sull’utenza é necessariofornisce informazioni sull’utenza é necessariocomprendere il comprendere il Secure Socket Layer Secure Socket Layer (SSL)(SSL)
Pluggable Authentication ModulePluggable Authentication Module•• PAM é una tecnologia che rende trasparente il meccanismoPAM é una tecnologia che rende trasparente il meccanismo
di autenticazione alle applicazioni che necessitano didi autenticazione alle applicazioni che necessitano diautenticare gli utenti (login, ftp, imap etc..).autenticare gli utenti (login, ftp, imap etc..).
•• L'uso di questa tecnologia permette di usare LDAP (o altriL'uso di questa tecnologia permette di usare LDAP (o altriservizi) come meccanismo di autenticazione su qualsiasiservizi) come meccanismo di autenticazione su qualsiasisistema supporti PAM senza dovere per questo modificaresistema supporti PAM senza dovere per questo modificarele applicazioni.le applicazioni.
•• Tramite files di configurazione é possibile stabilire in cheTramite files di configurazione é possibile stabilire in chemodo una applicazione deve autenticare gli utenti. Lemodo una applicazione deve autenticare gli utenti. Le“azioni” per stabilire l'autenticazione sono implementate“azioni” per stabilire l'autenticazione sono implementatein dei moduli (librerie).in dei moduli (librerie).
Pam_ldap.soPam_ldap.so
•• Pam_ldap.so é il modulo necessario a PAM perPam_ldap.so é il modulo necessario a PAM perpotere autenticare gli utenti tramite un serviziopotere autenticare gli utenti tramite un servizioLDAPLDAP
•• Una volta installato il modulo, occorre istruireUna volta installato il modulo, occorre istruirePAM ad usarlo per fornire alle applicazioniPAM ad usarlo per fornire alle applicazionil’autenticazione tramite LDAPl’autenticazione tramite LDAP
•• I file di configurazione di PAM sono nellaI file di configurazione di PAM sono nelladirectorydirectory
/etc/pam.d/etc/pam.d
Esempio configurazione PAMEsempio configurazione PAM# cat /etc/pam.d/login#%PAM-1.0auth required /lib/security/pam_securetty.soauth required /lib/security/pam_nologin.soauth sufficient /lib/security/pam_ldap.soauth required /lib/security/pam_unix_auth.so try_first_passaccount sufficient /lib/security/pam_ldap.soaccount required /lib/security/pam_unix_acct.sopassword required /lib/security/pam_cracklib.sopassword sufficient /lib/security/pam_ldap.so use_authtokpassword required /lib/security/pam_unix_passwd.souse_first_pass md5 shadowsession required /lib/security/pam_unix_session.so
PAM PAM LayoutLayout
stunnel
stunnel.pem
LDAP
slapd.confPAM Library
logi
n
FTP
SSH
pam.d
ldap.conf
pam_ldap.so
cert7.db
...Client
Server
SSL
Name Service SwitchName Service Switch
• Allo stesso modo di PAM, NSS rende indipendenti leapplicazioni dai name services in modo trasparente.
• Usando NSS é possibile reperire da LDAP quelleinformazioni che normalmente vengono fornite dai file disistema passwd, shadow, groups, hosts etc.
• Questo é possibile perché NSS mappa le chiamate dellalibreria C GNU (getpw*, getsh* etc...) in azioni(implementate in delle librerie) che dipendono dallatecnologia del name service sottostante (che può essereLDAP, NIS o altro).
Nss_ldap.soNss_ldap.so
•• Nss_ldap.so é la libreria che é necessaria alNss_ldap.so é la libreria che é necessaria alName Service Switch per ottenere tramite LDAPName Service Switch per ottenere tramite LDAPle informazioni relative agli utentile informazioni relative agli utenti
•• Nss può essere istruito ad usare questa libreriaNss può essere istruito ad usare questa libreriatramite il filetramite il file
/etc/nsswitch.conf/etc/nsswitch.conf
Esempio di configurazione NSSEsempio di configurazione NSS
In /etc/In /etc/nsswitchnsswitch..confconf, nelle prime linee si, nelle prime linee siavra avra qualcosa come:qualcosa come:
passwd: files ldapgroup: files ldapshadow: files ldap
NSS librarystunnel
stunnel.pem
LDAP
slapd.conf
Schema NSSSchema NSS
Nsswitch.conf
ldap.conf
nss_ldap.so
cert7.db
Getp
w*
Gets
h*
Getg
r*...
GNU libC calls ClientServer
nscd
SSL
Secure Socket LayerSecure Socket Layer SSL é un protocollo al livello applicazione che fornisce un canaleSSL é un protocollo al livello applicazione che fornisce un canale
“sicuro” di comunicazione tra parti. SSL é basato su meccanismi“sicuro” di comunicazione tra parti. SSL é basato su meccanismicrittografici a chiave pubblica e su certificati X.509. E’ necessariocrittografici a chiave pubblica e su certificati X.509. E’ necessarioin questo contesto per fare in modo che il dialogo tra le libreriein questo contesto per fare in modo che il dialogo tra le libreriePAM ed NSS ed il server LDAP sia sicuro.PAM ed NSS ed il server LDAP sia sicuro.
SSL fornisceSSL fornisce
•• data encryptiondata encryption: la sessione Client/server é crittata.: la sessione Client/server é crittata.
•• server authenticationserver authentication: i client possono identificare l'identità del: i client possono identificare l'identità delserver.server.
•• message integritymessage integrity: Le informazioni non sono modificate durante la: Le informazioni non sono modificate durante latrasmissione.trasmissione.
•• client authenticationclient authentication: il server può: il server può identificare i client identificare i client
Secure Socket Layer e LDAPSecure Socket Layer e LDAP
•• SSL viene fornito in maniera nativa dalleSSL viene fornito in maniera nativa dalleimplementazioni di LDAP V3, i server LDAP V2implementazioni di LDAP V3, i server LDAP V2necessitano di un necessitano di un wrapperwrapper per poter usare SSL per poter usare SSL(per esempio(per esempio stunnel stunnel))
•• Le librerie pam_ldap.so e nss_ldap.so fornisconoLe librerie pam_ldap.so e nss_ldap.so fornisconoautonomamente SSL (occorre compilare usandoautonomamente SSL (occorre compilare usandola apposita libreria SSL)la apposita libreria SSL)
Server LDAPServer LDAP
•• Sul server LDAP saranno contenute leSul server LDAP saranno contenute leinformazioni sull'utenza.informazioni sull'utenza.
•• Queste informazioni dovranno essere accessibiliQueste informazioni dovranno essere accessibilisoltanto da client autorizzati: occorre quindisoltanto da client autorizzati: occorre quindiprestare attenzione nella configurazione delleprestare attenzione nella configurazione delleACLs ACLs sul server.sul server.
Formato delle entries su LDAPFormato delle entries su LDAP•• Le entries devono rispettare un formato (schema)Le entries devono rispettare un formato (schema)
particolare affinché venga loro attribuito ilparticolare affinché venga loro attribuito ilsignificato di significato di accountsaccounts..
•• Lo schema a cui si fa qui riferimento é quelloLo schema a cui si fa qui riferimento é quellodescritto nell’RFC 2307 le descritto nell’RFC 2307 le objectclass objectclass che ciche ciinteressano descritte in questo RFC sono:interessano descritte in questo RFC sono:–– posixAccoutposixAccout–– shadowAccountshadowAccount–– posixGroupposixGroup
Esempio di account Unix su LDAPEsempio di account Unix su LDAPdn: cn=Giuseppe LoBiondo, ou=people, ou=Sezione diMilano,o=Istituto Nazionale di Fisica Nucleare,C=itcn: Giuseppe Lo Biondosn: Lo Biondoobjectclass: topobjectclass: personobjectclass: accountobjectclass: posixAccountobjectclass: shadowAccountuid:giuseppeuserpassword:{crypt}$1$ss2ii(0$gbs*do&@=)eksduidnumber:104gidnumber:100gecos:Giuseppe Lo BiondologinShell:/bin/zshhomeDirectory: /home/giuseppeshadowLastChange:10877shadowMin: 0shadowMax: 999999shadowWarning: 7shadowInactive: -1shadowExpire: -1shadowFlag: 0
primary key
objectclasses
passwd info
shadow info
Gestione degli Gestione degli accountsaccounts•• Esistono diversi SW pubblici che permettono di gestire leEsistono diversi SW pubblici che permettono di gestire le
utenze su LDAP, vale la pena di citare utenze su LDAP, vale la pena di citare JavaJava LDAP LDAP BrowserBrowserEditor (Editor (httphttp://://wwwwww..iitiit..eduedu/~/~gawojargawojar/ldap//ldap/))
Limiti del sistemaLimiti del sistema•• Per rendere il servizio LDAP ridondante, occorrePer rendere il servizio LDAP ridondante, occorre
replicare il server, questo é possibile con moltireplicare il server, questo é possibile con moltiserver LDAP.server LDAP.
•• La gestione degli account non é immediata,La gestione degli account non é immediata,occorre avere una certa familiarità con LDAP.occorre avere una certa familiarità con LDAP.
Cosa fare per…Cosa fare per…Le istruzioni dettagliate per implementare il sistema sin quiLe istruzioni dettagliate per implementare il sistema sin qui
descritto sono contenute nel documento:descritto sono contenute nel documento:
LDAP as a Network Information Service.LDAP as a Network Information Service.
reperibile all’URLreperibile all’URL
http://www.mi.infn.it/~lobiondo/ldapnis.http://www.mi.infn.it/~lobiondo/ldapnis.pdfpdf
Il documento completa con i dettagli di installazione eIl documento completa con i dettagli di installazione econfigurazione questo configurazione questo talktalk
Questo Questo talktalk é reperibile é reperibile all’URLall’URL::
httphttp://://wwwwww.mi..mi.infninfn..itit/~/~lobiondolobiondo/LDAPNIS/LDAPNIS
BibliografiaBibliografia•• [1] W. Yeong - Performance Systems International, T. Howes - University[1] W. Yeong - Performance Systems International, T. Howes - University
of Michigan, S. Kille - ISODE Consortium, Network Working Group,of Michigan, S. Kille - ISODE Consortium, Network Working Group,Request for Comments: 1777, Request for Comments: 1777, Lightweight Directory AccessLightweight Directory AccessProtocoProtocol,March 1995.l,March 1995.
•• [2] L. Howard - Network Working Group, Request for Comments: 2307,[2] L. Howard - Network Working Group, Request for Comments: 2307,AnAnApproach for Using LDAP as a Network Information ServicApproach for Using LDAP as a Network Information Service, March 1998.e, March 1998.
•• [3] University of Michigan, [3] University of Michigan, The SLAPD and SLURPD Administrator’s GuidThe SLAPD and SLURPD Administrator’s Guide,e,30 April 1996.30 April 1996.
•• [4] Vipin Samara, Charlie Lai - SunSoft Inc. , [4] Vipin Samara, Charlie Lai - SunSoft Inc. , Making Login ServicesMaking Login ServicesIndependent of Authentication TechnologieIndependent of Authentication Technologies, March 1996s, March 1996
•• [5] Andrew G. Morgan, [5] Andrew G. Morgan, The Linux-PAM System Administrators’ GuidThe Linux-PAM System Administrators’ Guide, 11e, 11August 1999.August 1999.