Autenticazione centralizzata con LDAP

Da Faber Libertatis.

 
 
Icona contenuto obsoleto
Questa pagina contiene alcune informazioni obsolete, ma verrà aggiornata a breve. Nel frattempo puoi consultare questo argomento come trattato nella serata di formazione interna.

In questo documento vedremo come realizzare un sistema di autenticazione centralizzata basato su una directory LDAP. I procedimenti seguiti sono più o meno gli stessi usati per la preparazione dell'internet point NSE. Questo documento non vuole essere un howto su cos'è un albero LDAP, verranno quindi esposti solo i passi necessari alla configurazione dell'autenticazione centralizzara. Si cercherà in ogni caso di "narrare" il tutto in una maniera il più user-friendly possibile.

Indice della pagina

Lato Server

Queste sono le operazioni da eseguire sulla macchina che fungerà da servente LDAP

OpenLDAP

Innanzitutto è necessario installare openldap

apt-get install slapd

durante la configurazione verranno poste alcune domande, come ad esempio in dominio e la password di amministratore. Il dominio servirà a configurare quella che sarà la radice del nosto albero ldap; ad esempio, se come dominio abbiamo inserito fake.net la radice LDAP sarà dc=fake,dc=net (DC sta per Domain Component); la password di amministratore sarà la password che verrà impostata per l'utente cn=admin,dc=fake,dc=net (CN sta per Common Name), che in pratica è l'utente root di LDAP.

Ora è necessario modificare il file di configurazione del demone, /etc/ldap/slapd.conf, in modo da permettere ai singoli utenti di aggiornare i propri dati

access to attrs=loginShell
     by dn="cn=admin,dc=fake,dc=net" write
     by self write
     by * read
access to attrs=gecos
     by dn="cn=admin,dc=fake,dc=net" write
     by self write
     by * read

Poi, per avere delle maggiori performances diciamo a openldap quali campi indicizzare, per sveltire le ricerche

index           objectClass 		eq
index		cn			pres,sub,eq
index		sn			pres,sub,eq
index		uid			pres,sub,eq
index		displayName		pres,sub,eq
index		default			sub
index		uidNumber		eq
index		gidNumber		eq
index		mail,givenName		eq,subinitial
index		dc			eq

Dopo aver modificato come sopra il file di configurazione, fermiamo openldap

# /etc/init.d/slapd stop

generiamo gli indici

# slapindex

e quindi avviamo il demone.

# /etc/init.d/slapd start

La creazione degli utenti, dei gruppi e dell'albero iniziale LDAP verrà vista in seguito.

Lato Server e Lato Client

Le seguenti operazioni andranno eseguite sia sul server che sui client

LDAP client

Per prima cosa installiamo l'LDAP client

apt-get install ldap-utils

e ne modifichiamo il file di configurazione, /etc/ldap/ldap.conf, definendo al suo interno il server e l'albero base LDAP (dc=fake,dc=net)

BASE    dc=fake,dc=net
URI     ldap://ldap.fake.net

dove ldap.fake.net è l'hostname o l'indirizzo IP del server LDAP

NSS e PAM

Vedremo qui come installare e configurare le librerie PAM e NSS per l'autenticazione ldap (PAM = Pluggable Authentication Module; NSS = Name Service Switch).

Installazione librerie

apt-get install libpam-ldap libnss-ldap

rispondere alle domande poste con:

  • LDAP server host: ldap.fake.net
  • distinguished name of the search base: dc=fake,dc=net
  • LDAP version to use: 3
  • Make local root database admin: Si
  • Database requires logging in: No
  • Root Login Account: cn=admin,dc=fake,dc=net
  • Root Login Password: password-server-ldap

al termine dell'installazione dei pacchetti verificare che esista il file /etc/ldap.secret, e che al suo interno vi sia la password dell'amministratore LDAP (cn=admin,dc=fake,dc=net). Se così non fosse bisogna provvedere a creare il file:

# echo "password-server-ldap" > /etc/ldap.secret
# chmod 600 /etc/ldap.secret

Configurazione NSS

Configuriamo ora NSS per fare il lookup utenti e gruppi su LDAP:

modifichiamo come segue il file /etc/nsswitch.conf

passwd:         files ldap
group:          files ldap
shadow:         files ldap

inoltre è necessario modificare il file /etc/libnss-ldap.conf, e decommentare la linea con l'istruzione

rootbinddn ...

facendola diventare

rootbinddn cn=admin,dc=fake,dc=net

Configurazione PAM

Per lasciare agli utenti la possibilità di cambiare la propria password è necessario modificare il file /etc/pam.d/common-password, in modo che al suo interno ci sia SOLO (commentare altre righe eventualmente presenti)

password   sufficient pam_ldap.so ignore_unknown_user md5
password   required   pam_unix.so nullok obscure min=4 max=8 md5

Albero LDAP iniziale

Per la popolazione iniziale dell'albero ldap creiamo un file, iniziale.ldif, che poi importeremo in OpenLDAP. Il file deve contenere:

# file: iniziale.ldif
# rootdn: dc=fake,dc=net
dn:dc=fake,dc=net
objectClass: top
objectClass: dcObject
objectClass: organization
o: fake.net
dc: fake

# OU=People, la "directory" dove verranno poi contenuti gli utenti
dn:ou=People,dc=fake,dc=net
ou: People
objectClass: top
objectClass: organizationalUnit

# OU=Group, la "directory" dove verranno poi contenuti i gruppi
dn:ou=Group,dc=fake,dc=net
ou: Group
objectClass: top
objectClass: organizationalUnit

possiamo ora procedere con l'importazione:

ldapadd -h localhost -x -W -D "cn=admin,dc=fake,dc=net" -c -f iniziale.ldif

e per verificare il corretto inserimento dei dati diamo il comando

ldapsearch -x -h localhost

che come output dovrebbe darci la "panoramica" dell'albero ldap, tranne le informazioni riservate come le password.

Se invece vogliamo vedere proprio tutto, password comprese (criptate), dobbiamo dare

ldapsearch -x -W -D "cn=admin,dc=fake,dc=net" -h localhost

Tools per la gestione degli utenti e gruppi

Invece di editare "manualmente" l'albero ldap per aggiungere, modificare, cancellare utenti e gruppi vi sono numerosi front-end che possono gestire facilemente tutto ciò, eccone alcuni:

Utility Grafiche

Utility Testuali