LDAP è un acronimo per "Lightweight Directory Access Protocol", una versione semplificata del protocollo X.500. La directory impostata in questa sezione sarà usata per l'autenticazione. LDAP può comunque essere usato in diversi modi: autenticazione, directory condivisa (per i client mail), rubrica indirizzi. ecc...
Per descrivere LDAP velocemente, tutte le informazioni vengono archiviate in una struttura ad albero. Con OpenLDAP si ha la libertà di scegliere lo sviluppo dell'albero delle directory (il "Directory Information Tree", DIT). Per iniziare, si prende un esempio di un albero basilare con due nodi al di sotto della radice.
Il nodo «People» è dove i propri utenti vengono salvati
Il nodo «Groups» è dove i propri gruppi vengono salvati
Prima di iniziare, è necessario determinare quale sarà la radice della propria directory LDAP. In modo predefinito, l'albero sarà determinato dal proprio FQDN (Fully Qualified Domain Name), se il domino è "example.com" (usato in questo esempio), la radice sarà "dc=example,dc=com".
Per prima cosa, installare il demone server OpenLDAP slapd e ldap-utils, un pacchetto contenente le utilità di gestione LDAP:
sudo apt-get install slapd ldap-utils
Il processo di installazione chiederà la password di amministratore della directory LDAP e la conferma.
Una volta installato slapd, la directory può essere configurata usando dpkg-reconfigure:
sudo dpkg-reconfigure slapd
Seguire le istruzioni a schermo che consentono di configurare diverse opzioni di slapd. Per la maggior parte, i valori predefiniti sono più che validi, ma se il nodo radice differisce dal FQDN del server, assicurarsi di inserire il nome giusto.
La directory è stata creata durante l'installazione e la riconfigurazione, ora è necessario popolarla. Verrà riempita con uno schema "classico", compatibile con le applicazioni di rubrica e con gli account Unix Posix. Gli account posix consentono l'autenticazione di varie applicazioni, come quelle web, applicazioni emal MTA (Mail Transfer Agent), ecc...
![]() |
|
Affinché le applicazioni esterne possano autenticarsi via LDAP, è necessario che siano configurate a tal fine. Per come fare, fare riferimento alla documentazione di ogni singola applicazione. |
Le directory LDAP possono essere popolate con file LDIF (Ldap Directory Interchange Format). Copiare il seguente file LDIF di esempio e chiamarlo example.com.ldif
:
dn: ou=people,dc=example,dc=com objectClass: organizationalUnit ou: people dn: ou=groups,dc=example,dc=com objectClass: organizationalUnit ou: groups dn: uid=john,ou=people,dc=example,dc=com objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount uid: john sn: Doe givenName: John cn: John Doe displayName: John Doe uidNumber: 1000 gidNumber: 10000 userPassword: password gecos: John Doe loginShell: /bin/bash homeDirectory: /home/john shadowExpire: -1 shadowFlag: 0 shadowWarning: 7 shadowMin: 8 shadowMax: 999999 shadowLastChange: 10877 mail: john.doe@example.com postalCode: 31000 l: Toulouse o: Example mobile: +33 (0)6 xx xx xx xx homePhone: +33 (0)5 xx xx xx xx title: System Administrator postalAddress: initials: JD dn: cn=example,ou=groups,dc=example,dc=com objectClass: posixGroup cn: example gidNumber: 10000
In questo esempio sono stati impostati la struttura della directory, un utente e un gruppo. In altri esempi potrebbe essere possibile notare, in ogni voce, l'elemento objectClass: top, ma dato che è il comportamento predefinito, non è necessario inserirlo esplicitamente.
Per aggiungere le voci alla directory LDAP:
Fermare slapd:
sudo /etc/init.d/slapd stop
Aggiungere il contenuto:
sudo slapadd -l example.com.ldif
Avviare il demone LDAP:
sudo /etc/init.d/slapd start
È possibile verificare che il contenuto è stato aggiunto correttamente con gli strumenti presenti nel pacchetto ldap-utils . Per eseguire una ricerca nella directory LDAP:
ldapsearch -xLLL -b "dc=example,dc=com" uid=john sn givenName cn
dn: uid=john,ou=people,dc=example,dc=com
cn: John Doe
sn: Doe
givenName: John
Una semplice spiegazione:
-x: non usa il metodo di autenticazione, predefinito, SASL.
-LLL: disabilita la stampa di informazioni sullo schema LDIF.
L'autenticazione richiede accesso al campo della password, che non dovrebbe essere accessibile in modo predefinito. Un altro problema è che durante la modifica della password usando passwd, shadowLastChange deve essere accessibile dall'utente autenticato. Il seguente codice, da /etc/ldap/slapd.conf, mostra le impostazioni ACL predefinite che permettono all'utente admin e a quelli autenticati di accedere a shadowLastChange:
access to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=example,dc=com" write by anonymous auth by self write by * none
Il servizio LDAP diventa molto spesso un servizio critico all'interno di un sistema informativo: molteplici sistemi dipendono da LDAP per l'autenticazione, l'autorizzazione, mai, et cetera. È buona norma quindi configurare un sistema ridondante.
La replicazione è ottenuta utilizzando il motore Syncrepl. Syncrepl consente alla directory di essere sincronizzata utilizzando un sistema push o pull. In una configurazione "push" un server «primario» eseguirà il "push" degli aggiornamento a un server «secondario», mentre un approccio "pull" consente la replicazione via sincronizzazione a intervalli di tempo.
Quello che segue è un esempio di una configurazione push push. Per prima cosa è necessario impostare il provider slapd de-commentando la seguente riga in /etc/ldap/slapd.conf
:
rootdn "cn=admin,dc=example,dc=com"
Al di sotto della riga rootdn aggiungere:
moduleload syncprov.la overlay syncprov syncprov-checkpoint 100 10 syncprov-sessionlog 100
Riavviare slapd:
sudo /etc/init.d/slapd restart
Nel server separato OpenLDAP configurare il demone slapd de-commentando la riga rootdn in /etc/ldap/slapd.conf
:
rootdn "cn=admin,dc=example,dc=com"
Aggiungere quanto segue dopo la voce "rootdn":
syncrepl rid=123 provider=ldap://ldap01.example.com:389 type=refreshAndPersist searchbase="dc=example,dc=com" filter="(objectClass=*)" scope=sub schemachecking=off bindmethod=simple binddn="uid=john,ou=people,dc=example,dc=com" credentials=password
![]() |
|
Questo esempio utilizza l'utente john creato per autenticare il processo di sincronizzazione. Assicurarsi di usare un account con privilegi sufficienti e di sostituire ldap://ldap01.example.com:389 con il nome host appropriato. |
Ora riavviare il demone slapd:
sudo /etc/init.d/slapd restart
Se tutto funziona correttamente, dovrebbe essere possibile eseguire l'esempio ldapsearch precedente sul server con la directory replicata.
ldapsearch -xLLL -b "dc=example,dc=com" uid=john sn givenName cn
Il demone slapd invia le proprie registrazioni verso /var/log/syslog
, se qualche cosa non funziona correttamente, controllare lì per gli eventuali errori o altre informazioni utili alla risoluzione dei problemi.
Per maggiori informazioni, consultare il sito web di OpenLDAP
Anche se un po' datata, un'ottima fonte di informazioni riguardo LDAP è LDAP System Administration di O'Reilly.