Ricerca nel sito web

Come installare il server OpenLDAP per l'autenticazione centralizzata


Il Lightweight Directory Access Protocol (LDAP in breve) è un insieme di protocolli standard di settore, leggeri e ampiamente utilizzati per l'accesso ai servizi di directory. Un servizio di directory è un'infrastruttura informativa condivisa per accedere, gestire, organizzare e aggiornare elementi di uso quotidiano e risorse di rete, come utenti, gruppi, dispositivi, indirizzi e-mail, numeri di telefono, volumi e molti altri oggetti.

Il modello informativo LDAP si basa sulle voci. Una voce in una directory LDAP rappresenta una singola unità o informazione ed è identificata in modo univoco da quello che viene chiamato Nome distinto (DN). Ciascuno degli attributi della voce ha un tipo e uno o più valori.

Un attributo è un'informazione associata a una voce. I tipi sono in genere stringhe mnemoniche, ad esempio "cn" per il nome comune o "mail" per l'indirizzo email. Ad ogni attributo vengono assegnati uno o più valori costituiti da un elenco separato da spazi.

Di seguito è riportata un'illustrazione di come sono organizzate le informazioni nella directory LDAP.

In questo articolo, mostreremo come installare e configurare il server OpenLDAP per l'autenticazione centralizzata in Ubuntu 16.04/18.04 e CentOS 7.

Passaggio 1: installazione del server LDAP

1. Inizia innanzitutto installando OpenLDAP, un'implementazione open source di LDAP e alcune utilità di gestione LDAP tradizionali utilizzando i seguenti comandi.

yum install openldap openldap-servers	    #CentOS 7
sudo apt install slapd ldap-utils	    #Ubuntu 16.04/18.04

Su Ubuntu, durante l'installazione del pacchetto, ti verrà richiesto di inserire la password per la voce amministratore nella tua directory LDAP, impostare una password sicura e confermarla.

Una volta completata l'installazione è possibile avviare il servizio come spiegato di seguito.

2. Su CentOS 7, esegui i seguenti comandi per avviare il demone del server openldap, abilitalo all'avvio automatico all'avvio e controlla se è attivo e funzionante (su Ubuntu il servizio dovrebbe essere avviato automaticamente sotto systemd, puoi semplicemente controllarne lo stato):

sudo systemctl start slapd
sudo systemctl enable slapd
sudo systemctl status slapd

3. Successivamente, consenti le richieste al demone del server LDAP attraverso il firewall come mostrato.

firewall-cmd --add-service=ldap    #CentOS 7
sudo ufw allow ldap                #Ubuntu 16.04/18.04

Passaggio 2: configurazione del server LDAP

Nota: non è consigliabile modificare manualmente la configurazione LDAP, è necessario aggiungere le configurazioni in un file e utilizzare ldapadd o ldapmodify per caricarli nella directory LDAP come mostrato di seguito.

4. Ora crea un utente amministrativo OpenLDAP e assegna una password per quell'utente. Nel comando seguente, viene creato un valore con hash per la password specificata, prendine nota e lo utilizzerai nel file di configurazione LDAP.

slappasswd

5. Quindi crea un file LDIF (ldaprootpasswd.ldif) che viene utilizzato per aggiungere una voce alla directory LDAP.

sudo vim ldaprootpasswd.ldif

Aggiungi i seguenti contenuti al suo interno:

dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}PASSWORD_CREATED

spiegando le coppie attributo-valore sopra:

  • olcDatabase: indica il nome di un'istanza di database specifica e in genere si trova all'interno di /etc/openldap/slapd.d/cn=config.
  • cn=config: indica le opzioni di configurazione globali.
  • PASSWORD: è la stringa con hash ottenuta durante la creazione dell'utente amministrativo.

6. Successivamente, aggiungi la voce LDAP corrispondente specificando l'URI che fa riferimento al server ldap e al file sopra.

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f ldaprootpasswd.ldif  

Passaggio 3: configurazione del database LDAP

7. Ora copia il file di configurazione del database di esempio per slapd nella directory /var/lib/ldap e imposta le autorizzazioni corrette sul file .

sudo cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
sudo chown -R ldap:ldap /var/lib/ldap/DB_CONFIG
sudo systemctl restart slapd

8. Successivamente, importa alcuni schemi LDAP di base dalla directory /etc/openldap/schema come segue.

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif 
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

9. Ora aggiungi il tuo dominio nel database LDAP e crea un file chiamato ldapdomain.ldif per il tuo dominio.

sudo vim ldapdomain.ldif 

Aggiungi il seguente contenuto al suo interno (sostituisci nell'esempio il tuo dominio e la PASSWORD con il valore hash ottenuto in precedenza):

dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
  read by dn.base="cn=Manager,dc=example,dc=com" read by * none

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=example,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=example,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}PASSWORD

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by
  dn="cn=Manager,dc=example,dc=com" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=example,dc=com" write by * read

10. Quindi aggiungi la configurazione precedente al database LDAP con il seguente comando.

sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f ldapdomain.ldif

11. In questo passaggio, dobbiamo aggiungere alcune voci alla nostra directory LDAP. Crea un altro file chiamato baseldapdomain.ldif con il seguente contenuto.

dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: example com
dc: example

dn: cn=Manager,dc=example,dc=com
objectClass: organizationalRole
cn: Manager
description: Directory Manager

dn: ou=People,dc=example,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=example,dc=com
objectClass: organizationalUnit
ou: Group 

Salvare il file e quindi aggiungere le voci alla directory LDAP.

sudo ldapadd -Y EXTERNAL -x -D cn=Manager,dc=example,dc=com -W -f baseldapdomain.ldif

12. Il passaggio successivo è creare un utente LDAP per esempio, tecmint e impostare una password per questo utente come segue.

sudo useradd tecmint
sudo passwd tecmint

13. Quindi crea le definizioni per un gruppo LDAP in un file chiamato ldapgroup.ldif con il seguente contenuto.

dn: cn=Manager,ou=Group,dc=example,dc=com
objectClass: top
objectClass: posixGroup
gidNumber: 1005

Nella configurazione precedente, gidNumber è il GID in /etc/group per tecmint e lo aggiunge a OpenLDAP directory.

sudo ldapadd -Y EXTERNAL -x  -W -D "cn=Manager,dc=example,dc=com" -f ldapgroup.ldif

14. Successivamente, crea un altro file LDIF chiamato ldapuser.ldif e aggiungi le definizioni per l'utente tecmint.

dn: uid=tecmint,ou=People,dc=example,dc=com
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: tecmint
uid: tecmint
uidNumber: 1005
gidNumber: 1005
homeDirectory: /home/tecmint
userPassword: {SSHA}PASSWORD_HERE
loginShell: /bin/bash
gecos: tecmint
shadowLastChange: 0
shadowMax: 0
shadowWarning: 0

quindi caricare la configurazione nella directory LDAP.

ldapadd -Y EXTERNAL  -x -D cn=Manager,dc=example,dc=com -W -f  ldapuser.ldif

Dopo aver configurato un server centrale per l'autenticazione, la parte finale è abilitare il client ad autenticarsi utilizzando LDAP come spiegato in questa guida:

  1. Come configurare il client LDAP per connettere l'autenticazione esterna

Per ulteriori informazioni, consultare la documentazione appropriata dal catalogo documenti del software OpenLDAP e gli utenti Ubuntu possono fare riferimento alla guida del server OpenLDAP.

Riepilogo

OpenLDAP è un'implementazione open source di LDAP in Linux. In questo articolo, abbiamo mostrato come installare e configurare il server OpenLDAP per l'autenticazione centralizzata, in Ubuntu 16.04/18.04 e CentOS 7. Se hai una domanda o pensieri da condividere, non esitare a contattarci tramite il modulo di commento qui sotto.