ldap: introduzione, configurazione, amministrazione

Ldap è un database un po' particolare e sicuramente affascinante. I suoi impieghi sono dei più svariati e tutti estremanente importanti. Vediamo come installarlo, configurarlo ed amministrarlo.
Introduzione
LDAP è una sorta di database di cartelle, particolarmente apprezzato per lo stoccaggio di informazioni personali, quali ad esempio una rubrica di contatti. LDAP può essere utilizzato sia all'interno della LAN aziendale che da remoto, attraverso internet e offre il servizio di replica.
Il primo scoglio nell'approccio a ldap è la documentazione. C'è n'è tanta, ma molto disorganizzata e frammentaria. Il secondo scoglio invece è quello di uscire dalla logica dei database relazionali. LDAP NON è un database relazionale! E' diverso da mysql, postgresql, sql server etc. Il concetto che piu si avvicina ad LDAP è quello delle scatole cinesi.
E' utilizzato per autentificare utenti in diversi servizi, ad esempio con Samba o NIS. Smak lo utilizza per l'autenticazione degli utenti e per qualunque altra attività legata allo stoccaggio delle informazioni relative alle persone e alle aziende. Ldap è decisamente meglio di qualunque altro database per questo genere di situazioni, non solo perche è stato pensato proprio per questo, ma soprattutto perche esistono una quantità di altri servizi che possono appoggiarsi al servizio.
Faccio un esempio: chi ha esperienza in ambiti aziendali, non solo dal punto di vista informatico, sa che avere più di un contenitore di contatti non è buona cosa perchè implica la sincronizzazione dei contenitori e il rischio di ridondanza nei contenuti. Quindi se il principio è: una unica rubrica per tutta l'azienda allora ldap è la risposta poichè è accessibile dai client di posta piu diffusi, da alcuni cellulari di linea professionale, dai voip client come ekiga, da samba per l'autenticazione degli utenti etc.
Riferimenti
- Ldap Admin Guide - GUIDA DI RIFERIMENTO
- PADL società specializzata in LDAP
- RFC per l'implementazione di sistemi di dati con LDAP
Libri / Ebooks
Disponibile in formato ebook l'ottimo manuale "Mastering OpenLDAP: Configuring, Securing and Integrating Directory Services" di Matt Butcher.
Pacchetti Debian / Ubuntu
- slapd: fornisce il server ldap.
- ldap-utils: programmi client per ldap.
- php5-ldap: funzioni php per interfacciarsi ad ldap.
- phpldapadmin: pannello di amministrazione per server ldap (tipo phpmyadmin.
Se si vuole utilizzare il protocollo cifrato specificare i seguenti pacchetti
- libsasl2-modules
- db4.2-util
Installazione Debian / Ubuntu
sudo apt-get install slapd ldap-utils phpldapadmin libsasl2-modules db4.2-util
sudo dpkg-reconfigure slapd
NB: la password che digito è pippo
|
|
|
|
|
|
|
|
|
Concetti di base
Il concetto di fondo che sta alla base di LDAP è semplice. Si crea un contenitore e lo si popola di informazioni (entry) che potranno essere lette da tutti i client. Il demone slapd è il server LDAP effettivo mentre il demone slurpd viene utilizzato per sincronizzare le modifiche da un server LDAP ad altri server LDAP sulla rete. Il demone slurpd è: necessario soltanto quando si ha a che fare con un server LDAP multiplo.
Configurazione
Piccola introduzione schematica a Ldap ldap_intro.pdf
- File di configurazione di LDAP server: /etc/ldap/slapd.conf
- File di configurazione per i client LDAP: /etc/ldap/ldap.conf
- File di configurazione delle entry LDAP: /etc/ldap/schema/
- Directory di salvataggio: /var/lib/ldap
Configurazione di base per LDAP
NB: la presente configurazione è pensata per un uso didattico su di un server all'interno della lan.
Presupposti: il mio hostname è smoke, il mio network è 2v.ntw. questo mi da un Base Name = smoke.2v.ntw se il vostro hostname è mainserver e la vostra società si chiama Acme un buon base name è mainserver.acme.ntw o mainserver.acme.com.
cd /etc/ldap/schema/
sudo cp /usr/share/evolution-data-server-1.12/evolutionperson.schema /etc/ldap/schema/
sudo wget -c http://www.venturin.net/dam/calentry.schema
edito il file di configurazione:
sudo gedit /etc/ldap/slapd.conf
aggiungo gli schemi
include /etc/ldap/schema/evolutionperson.schema
include /etc/ldap/schema/calentry.schema
configuro il dominio smoke.2v.ntw
database bdb
suffix "dc=smoke,dc=2v,dc=com"
designo l'utente admin come "root" del database:
rootdn "cn=admin,dc=2v,dc=example,dc=com"
generare una password cifrata (nell'esempio: pippo) si può usare slappasswd:
slappasswd -s pippo
R: {SSHA}UIxq9ebEFTHHrDHnLBwmKw64MyLWUNWF
e nel file di configurazione scrivo:
rootpw {SSHA}UIxq9ebEFTHHrDHnLBwmKw64MyLWUNWFsistemo le policy di accesso:
access to attrs=userPassword,shadowLastChange
by dn="cn=admin,dc=smoke,dc=2v,dc=com" write
by anonymous auth
by self write
by * none
access to *
by dn="cn=admin,dc=smoke,dc=2v,dc=com" write
by * readsalvo la configurazione ed avvio il servizio Per avviare Ldap:
su Debian (pre etch), Red Hat:
/sbin/service/ldap restart
oppure
/etc/init.d/ldap restart
su Debian (da etch in poi), Ubuntu:
/etc/init.d/sldap start
Per verificare che ldap stia funzionando correttamente:
sudo slaptest -v -f /etc/ldap/slapd.conf
ottengo: config file testing succeeded e poi
ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
Deve tornare un output del genere: dn: namingContexts: dc=smoke,dc=2v,dc=com
Aggiunta di una entry
L'aggiunta di una entry si fa creando un file ldif che contiene le informazioni da salvare e poi passandolo a ldapadd (ma è solo uno dei client che si possono utilizzare). Questo è un esempio di file ldif elementare che aggiunge l'utente "ugo":
#ldif_file dn: cn=ugo,dc=smoke,dc=2v,dc=ntw objectClass: organizationalRole cn: ugo #end
Il comando che esegue l'inserimento è
ldapadd -x -D "cn=admin,dc=smoke,dc=2v,dc=ntw" -W -f ldif_file
Per completare il processo di configurazione base di ldap ed aggiungere entry, é necessario costruire la root nel backend. Lo si fa construendo una entry di questo tipo
#ldif_file dn: dc=smoke,dc=2v,dc=ntw objectClass: dcObject objectClass: organization o: testing server dc: smoke #end
ed inserendola nel db con il comando visto sopra.
------
Aggiunta di un contenitore di tipo OrganizationUnit (ou) di nome contacts: ad es. questo è il contenitore al quale accedono per impostazione predefinita:
- smak per autenticare gli utenti
- l'applicazione "evolution contact manager" per gestire i contatti
#ldif_file dn: ou=contacts,dc=smoke,dc=2v,dc=ntw ou: contacts description: repository for smak and cm application objectClass: organizationalUnit #end
ldapadd -x -D "cn=admin,dc=smoke,dc=2v,dc=ntw" -W -f ldif_file
Installazione e configurazione di phpldapadmin
Phpldapadmin è un'interfaccia php per la gestione di ldap e delle sue entry e che svolge un ruolo simile a quello che phpmyadmin svolge per mysql.
L'installazione è veloce: apriamo un terminale e digitiamo:
sudo apt-get install phpldapadmin
NOTA BENE: phpldapadmin necessita la modifica di una sola riga della sua configurazione ma è fondamentale:
gksu gedit /etc/phpldapadmin/config.php
linea 86 del mio config file va cambiata da:
$ldapservers->SetValue($i,'server','base',array('dc=example,dc=com')); a
$ldapservers->SetValue($i,'server','base',array('dc=smoke,dc=2v,dc=ntw'));Per utilizzare phpldapadmin
Accedere con username: cn=admin,dc=smoke,dc=2v,dc=ntw e password pippo (quella inserita durante il dpkg-reconfigure)
NOTA: l'immagine di ubuntu per vmware, creata per sviluppare e usare smak e disponibile per il download , contiene ldap configurato secondo quanto descritto nella presente guida
- blog di dam
- 2998 letture

lo inventi :-)
-- Dam
Invia nuovo commento