Guida pratica per l'installazione e la configurazione di un server LDAP.
In questa guida cercheremo di fornire le informazioni minime necessarie per installare e configurare un server LDAP.
LDAP e' la sigla di Lightweight Directory Access Protocol, un protocollo leggero per accedere a servizi di directory; OpenLDAP e' un'implementazione Open Source al protocollo LDAP.
In sostanza si tratta di un database server in cui i dati sono organizzati in maniera gerarchica.
Uno degli utilizzi e' quello di memorizzare gli utenti di una azienda: la gerarchia e' data dai dipartimenti, ed associati agli utenti ci sono le informazioni di autenticazione, gli indirizzi, i numeri di telefono, email, ecc. I sistemi UNIX e Windows hanno anche dei moduli per l'autenticazione degli utenti tramite LDAP: memorizzando le informazioni di login su un server LDAP, si ottiene una gestione omogenea e consistente degli utenti in un ambiente con piattaforme etereogenee; gli utenti accedono con la stessa userid e password su tutti i sistemi.
Il sito http://sourceforge.net/ gestisce oltre un milione di utenze tramite LDAP.
Il software si installa con:
I file di configurazione si trovano nella directory /etc/ldap, ma la procedura di installazione provvede a configurare il server durante la fase di configurazione del pacchetto.
Inserire il DNS domain name, il nome dell'organizzazione (inventarsene eventualmente una), e la password di amministratore.
Esempio
Name of your organization: Pippo S.p.A.
Admin password: ***** (max 8 caratteri)
A questo punto il server dovrebbe essere configurato ed in esecuzione.
Con il comando
dovreste vedere il processo in esecuzione.
I file di configurazione sono nella directory /etc/ldap, mentre il database e' situato in /var/lib/ldap.
Eseguendo il comando (da root)
vengono mostrati i record attualmente presenti sul database.
Il formato con cui vengono mostrati e' LDIF, LDAP Data Interchange Format, un formato testuale in cui i record sono separati da una riga vuota ed i campi identificati dal nome del campo seguito da ":".
I campi principali sono:
dn: Distinguished Name, chiave identificativa del record
cn: Canonical Name, nome descrittivo del record
sn: Surname, cognome della persona
o: Organization, organizzazione di appartenenza
dc: Domain Component, parte del dominio
Eseguire "man ldif" per una spiegazione del formato.
Il record dell'amministratore, nel nostro esempio, ha il seguente DN:
La gerarchia e' data dalle componenti, separate da virgola, del DN; la radice e' l'elemento piu' a destra. Nell'esempio la gerarchia e' la seguente:
|
dn=domain
|
cn=admin
Per creare il database si possono seguire diverse strade:
1. utilizzo dei comandi client ldapadd, ldapmodify e ldapdelete
2. utilizzo dei comandi server slapadd e slapcat
3. utilizzo di un frontend grafico
In questa guida ci concentreremo sulla seconda strada.
Per preparare il file LDIF procedere nel seguente modo:
1. eseguire il comando slapcat reindirizzando l'output su un file (es. addr.ldif)
2. aggiungere i record al file
3. importare il file
Il primo passo serve per registrare nel file LDIF il contenuto attuale del file: dopo l'installazione e la configurazione l'output del comando slapcat mostrera' solo la root e l'utente amministratore con la password criptata.
Esempio:
objectClass: top
objectClass: dcObject
objectClass: organization
o: Pippo S.p.A.
dc: domain
structuralObjectClass: organization
entryUUID: e9e5dd28-fa1f-1029-80bb-c4a21a7bb745
creatorsName: cn=anonymous
modifiersName: cn=anonymous
createTimestamp: 20051205211449Z
modifyTimestamp: 20051205211449Z
entryCSN: 20051205211449Z#000001#00#000000
dn: cn=admin,dc=domain,dc=it
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: e2NyeXB0fVRYV1RxZG5pSURhQ3M=
structuralObjectClass: organizationalRole
entryUUID: e9eb9fe2-fa1f-1029-80bc-c4a21a7bb745
creatorsName: cn=anonymous
modifiersName: cn=anonymous
createTimestamp: 20051205211449Z
modifyTimestamp: 20051205211449Z
entryCSN: 20051205211449Z#000002#00#000000
dn: c=IT,dc=domain,dc=it
objectclass: country
c: IT
description: Italia
dn: o=ACME,c=IT,dc=domain,dc=it
objectclass: organization
o: ACME
telephonenumber: 555-012345
dn: cn=Mario Rossi,c=IT,dc=domain,dc=it
objectclass: inetOrgPerson
cn: Mario Rossi
sn: Rossi
o: ACME
homePhone: 555-323456
mobile: 555-23456
mail: mario.rossi@domain.it
mail: mrossi@anotherdomain.com
Fate particolare attenzione ad inserire lo stesso dominio che avete inserito nella configurazione: nel nostro esempio "domain.it".
Molto importante e' l'attributo DN, Distinguished Name, che e' la "chiave" del record che lo identifica univocamente e deve essere la prima entry di ogni record. Come potete vedere la gerarchia e' data dal DN, con il livello piu' basso scritto per primo.
A questo punto abbiamo il file LDIF (es. addr.ldif) riempito con i nostri record; tale file sara' la copia "master" del database, sul quale andremo ad effettuare tutte le modifiche successive.
Il passo successivo consiste nell'importare il file eseguendo i seguenti passi:
1. fermare il server LDAP
2. cancellare il vecchio database
3. importare il file LDIF
4. far ripartire il server LDAP
$ \rm -f /var/lib/ldap/*
$ slapadd -v -l addr.ldif
$ /etc/init.d/slapd start
Se tutto e' andato bene dovreste vedere i record inseriti. Con il comando slapcat viene mostrato il database completo.
Fatto! Il server e' pronto per essere utilizzato. Spostatevi su un terminale di un altro utente ed eseguite il seguente comando:
dovreste vedere il record relativo a Mario Rossi appena inserito.
Per una descrizione dettagliata della sintassi del comando ldapsearch, consultate la relativa pagina del manuale.
Per comodita' allego uno script che esegue l'importazione del database:
# Directory DB di LDAP
ldapdir=/var/lib/ldap/
# Directory temporanea dove memorizzare i file vecchi
tmpdir=/tmp/updateLDAP.$$
# Arresto di LDAP
/etc/init.d/slapd stop
# Copia della vecchia rubrica
mkdir $tmpdir
mv $ldapdir/* $tmpdir
# Iimportazione della nuova rubrica
slapadd -v -l addr.ldif
# Se ci sono problemi si ripristina la vecchia rubrica
if [ ! $? -eq 0 ]; then
rm $ldapdir/*
mv $tmpdir/* $ldapdir
fi
# Cancellazione della directory temporanea
rm -rf $tmpdir/
# Avvio di LDAP
/etc/init.d/slapd start
Per effettuare la ricerca si puo' utilizzare il seguente script:
ldapsearch -LLL -x -hlocalhost -b"dc=domain,dc=it" "(|(cn=*${1}*)(o=*${1}*)(homePhone=*${1}*)(telephoneNumber=*${1}*)(mobile=*${1}*)(ou=*${1}*)(businessCategory=*${1}*))"
che effettua la ricerca della stringa passata come parametro in vari campi, compresi i numeri di telefono.
La configurazione dei software di gestione LDAP o dei programmi di posta avviene generalmente fornendo le seguenti informazioni: hostname, porta (default 389), base DN (nel nostro esempio "dc=domain,dc=it"), bind DN (username da utilizzare se si vuole proteggere il server anche per la lettura).
Un server LDAP e' sicuramente uno strumento complesso, ma con pochi accorgimenti e' possibile utilizzarlo come server personale per gli indirizzi email. In questa maniera i contatti sono memorizzati esternamente ai programmi di posta, permettendo l'accesso alla rubrica da diversi programmi di posta contemporaneamente.
Il file LDIF, inoltre, e' utilizzato da molti sistemi, ed il formato testuale lo rende particolarmente adatto ad essere modificato senza l'ausilio di un software ad hoc.
http://www.openldap.org/
http://www.openldap.org/doc/admin23/
http://www.rfc-editor.org/rfc/rfc2849.txt
Commenti
Inviato da paolo il Ven, 09/12/2005 - 23:59.
Bella guida.
Grazie per il contributo, veramente ottimo e ben formattato.
Voto: 9
Paolo Mainardi
CTO Twinbit http://www.twinbit.it
Vice Presidente -- ILDN - Italian Linux DIstro Network
Inviato da smokedhack il Lun, 12/12/2005 - 23:46.
Re: Bella guida.
nella guida si fa menzione di un front-end grafico... quale suggerisci/consigli?
... e poi, con questo front-end si puo amministrare il tutto alla maniera (bestemmia) di Active Directory di win?
Inviato da pietro il Mar, 13/12/2005 - 15:04.
Re: Bella guida.
Purtroppo (o per fortuna
) non conosco i tool di amministrazione di M$ AD.
In Linux ho utilizzato gq e vari tool Java, tra cui JXplorer e lbe.
In windows ne utilizzavo uno che non mi ricordo come si chiama, ma grosso modo si equivalgono tutti. Prova JXplorer, permette di copiare o spostare interi alberi e supporta il drag'n drop.
Se fai una ricerca sui repository Debian ne trovi di sicuro altri.
Ciao
Debian. Be unique.
Inviato da franco ming il Gio, 31/10/2013 - 15:42.
Re: Creazione di un server LDAP
Salve, la guida è ben fatta : ma la password preinstallata qual'è?
sto provando con phpldapadmin e mi restituisce l'errore Nome utente o password non validi-
con : cn=admin
Inviato da franco ming il Gio, 31/10/2013 - 16:05.
Re: Creazione di un server LDAP
Continua il post precedente
provo ma da :Errore: Invalid credentials (49) for user
la password è quella chiesta in fase di installazione, nella cartella /etc/ldap/ldap.conf
c'è :Admin password:Franco64
ma continua a darmi errore.
Puoi aiutarmi
Grazie per la collaborazione