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

 

  • 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}UIxq9ebEFTHHrDHnLBwmKw64MyLWUNWF

sistemo 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 * read

salvo 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:

#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

http://localhost/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

lo inventi :-)

-- Dam

Invia nuovo commento

Il contenuto di questo campo è privato e non verrà mostrato pubblicamente.
  • Indirizzi web o e-mail vengono trasformati in link automaticamente
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Linee e paragrafi vanno a capo automaticamente.

Maggiori informazioni sulle opzioni di formattazione.

CAPTCHA
Questa domanda serve per verificare che tu sia un visitatore umano (non un computer) e per prevenire lo spam
5 + 2 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.