LDAP Linux · 5 min read · Dec 13, 2025

Autenticazione LDAP In Linux

Questo howto ti mostrerà come memorizzare i tuoi utenti in LDAP e autenticare alcuni dei servizi contro di esso. Non mostrerò come installare pacchetti particolari, poiché dipende dalla distribuzione/sistema. Mi concentrerò sulla configurazione “pura” di tutti i componenti necessari per avere l’autenticazione/memorizzazione degli utenti in LDAP. L’howto presume in qualche modo che tu stia migrando da un’autenticazione passwd/shadow regolare, ma è anche adatto per le persone che lo fanno da zero.

Requisiti

  • OpenLDAP
  • pam_ldap
  • nss_ldap
  • PADL migrationtools

Introduzione

La cosa che vogliamo ottenere è avere i nostri utenti memorizzati in LDAP, autenticati contro LDAP (diretto o pam) e avere qualche strumento per gestirlo in un modo comprensibile per gli esseri umani.

In questo modo possiamo utilizzare tutto il software che ha supporto LDAP o tornare al modulo PAM LDAP, che agirà come un gateway PAM->LDAP.

Maggiori informazioni sull’idea di LDAP possono essere trovate su Wikipedia: LDAP wikipedia

Configurazione di OpenLDAP

OpenLDAP è composto dai demoni slapd e slurpd. Questo howto copre un server LDAP senza replica, quindi ci concentreremo solo su slapd. Presumo anche che tu abbia installato e inizializzato la tua installazione di OpenLDAP (dipende dal sistema/distribuzione). Se sì, passiamo alla parte di configurazione.

Nel mio sistema (Gentoo), la configurazione di OpenLDAP è memorizzata in /etc/openldap, ci interessa il file /etc/openldap/slapd.conf. Ma prima dobbiamo generare una password per l’amministratore LDAP, da inserire nel file di configurazione:

slappasswd -h {md5}

La configurazione appare così:

include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/nis.schema
allow bind_v2  

pidfile         /var/run/openldap/slapd.pid
argsfile        /var/run/openldap/slapd.args  

modulepath      /usr/lib/openldap/openldap  

access to attrs=userPassword
        by dn="uid=root,ou=People,dc=domain,dc=com" write
        by dn="cn=Manager,dc=domain,dc=com" write
        by anonymous auth
        by self write
        by * none

access to dn.base="" by * read  

access to *
         by dn="cn=Manager,dc=domain,dc=com" write
         by * read


database        bdb
suffix          "dc=domain,dc=com"  

rootdn          "cn=Manager,dc=domain,dc=com"
rootpw          {MD5}Tk1sMytv5ipjr+Vhcf03JQ==
  

directory       /var/lib/openldap-data
index   objectClass     eq  

Ricorda di cambiare suffix e percorsi in base alle tue esigenze.

Queste sono opzioni di base con alcune ACL di base necessarie per cambiare le password da parte dell’utente. Se desideri più funzionalità, ti prego di leggere il manuale su OpenLDAP. Ora che abbiamo una configurazione adeguata per slapd, possiamo avviare il demone :

service slapd start

Per favore, ricorda di avere qualcosa del genere nel file di configurazione responsabile per gli argomenti passati a slapd (il percorso dovrebbe puntare a slapd.sock):

OPTS="-h 'ldaps:// ldapi://%2fvar%2frun%2fopenldap%2fslapd.sock'"

Ora possiamo testare se openldap è in esecuzione e funziona correttamente. Non abbiamo ancora dati nella directory, ma possiamo provare a collegarci come cn=Manager,dc=domain,dc=com. Quando ti viene chiesta la password, dovresti usare quella che hai generato (ovviamente la versione in testo chiaro di essa :)

ldapsearch -D "cn=Manager,dc=domain,dc=com" -W

Migrare/Aggiungere dati alla directory

Ora che abbiamo un server LDAP in esecuzione, dobbiamo riempirlo di dati, sia creando che migrando voci. Ti mostrerò come migrare voci esistenti da passwd/shadow/groups regolari.

Il primo passo è configurare gli strumenti di migrazione in base alle tue esigenze. Il file di configurazione su Gentoo si trova in /usr/share/migrationtools/migrate_common.ph.

In generale, devi cambiare solo questi:

$DEFAULT_BASE = "dc=domain,dc=com";
$EXTENDED_SCHEMA = 1;

Ora sei pronto per migrare i dati (in realtà funziona anche senza il comando di esportazione):

export ETC_SHADOW=/etc/shadow  
./migrate_base.pl > /tmp/base.ldif  
./migrate_group.pl /etc/group /tmp/group.ldif  
./migrate_hosts.pl /etc/hosts /tmp/hosts.ldif  
./migrate_passwd.pl /etc/passwd /tmp/passwd.ldif

Ora abbiamo i dati nel formato compreso dal server LDAP. Per favore, apri uno dei file con un editor di testo per abituarti alla sintassi. Dopo di che, possiamo aggiungere i dati dagli ldifs.

ldapadd -D "cn=Manager,dc=domain,dc=com" -W -f /tmp/base.ldif
ldapadd -D "cn=Manager,dc=domain,dc=com" -W -f /tmp/group.ldif
ldapadd -D "cn=Manager,dc=domain,dc=com" -W -f /tmp/passwd.ldif
ldapadd -D "cn=Manager,dc=domain,dc=com" -W -f /tmp/hosts.ldif

Puoi provare a cercare alcuni dati:

ldapsearch uid=foouser

Configurazione del client

Per client intendo la macchina che si connette al server LDAP per ottenere utenti e autorizzare. Può essere anche la macchina su cui gira il server LDAP. In entrambi i casi dobbiamo modificare tre file: /etc/ldap.conf, /etc/nsswitch.conf e /etc/pam.d/system-auth.

Iniziamo con ldap.conf, il client di ldap:

BASE    dc=domain, dc=com
scope sub
suffix          "dc=domain,dc=com"

## quando vuoi cambiare la password dell'utente da root 
rootbinddn cn=Manager,dc=domain,dc=com

## ci sono necessari quando il tuo ldap muore
timelimit 5
bind_timelimit 5

uri ldap://ldap.domain.com/
pam_password exop

ldap_version 3
pam_filter objectclass=posixAccount
pam_login_attribute uid
pam_member_attribute memberuid
  
nss_base_passwd ou=Computers,dc=cognifide,dc=pl
nss_base_passwd ou=People,dc=cognifide,dc=pl
nss_base_shadow ou=People,dc=cognifide,dc=pl
nss_base_group  ou=Group,dc=cognifide,dc=pl
nss_base_hosts  ou=Hosts,dc=cognifide,dc=pl

Ora è il momento di nsswitch.conf e pam.

Aggiungi questi a nsswitch.conf:

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

E modifica il system-auth (o qualunque cosa tu abbia come login, sshd, ecc.) in:

auth       required     pam_env.so
auth       sufficient   pam_unix.so likeauth nullok
auth       sufficient   pam_ldap.so use_first_pass
auth       required     pam_deny.so

account    sufficient   pam_unix.so
account    sufficient   pam_ldap.so
account    required     pam_ldap.so

password   required     pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3
password   sufficient   pam_unix.so nullok md5 shadow use_authtok
password   sufficient   pam_ldap.so use_first_pass
password   required     pam_deny.so

session    required     pam_limits.so
session    required     pam_unix.so
session    optional     pam_ldap.so

È tempo di testarlo. Il miglior strumento per farlo è il buon vecchio getent. Scegli un utente dal tuo sistema ed emetti:

getent passwd | grep foouser

Dovresti ottenere il risultato due volte, se sì, nss_ldap funziona bene. La parte pam può essere testata eliminando un utente da /etc/passwd e provando a effettuare il login tramite ssh.

Apache mod_auth_ldap

Per avere l’autorizzazione LDAP in apache, devi caricare il modulo mod_auth_ldap.

LoadModule mm_auth_ldap_module modules/mod_auth_ldap.so

Ora è sufficiente creare un .htaccess in questo modo:

AuthName "Riservato"
AuthType Basic
AuthLDAPURL ldap://ldap.domain.com:389/ou=People,dc=domain,dc=com?uid
AuthLDAPBindDN "cn=Manager,dc=domain,dc=com"
AuthLDAPBindPassword "la_tua_password_segreta_per_l_admin_ldap"
require valid-user

Nota che questo metodo può essere utilizzato anche per l’autorizzazione di WebDAV subversion.

Strumenti di amministrazione per LDAP

Ci sono alcuni strumenti che consiglio di utilizzare per amministrare il server OpenLDAP:

  • phpldapadmin - strumento basato sul web
  • ldapvi - navigazione con vim
  • PADL migrationtools - strumenti di migrazione
  • IDEALX sambaldap tools - strumenti samba LDAP

Altre applicazioni consapevoli di ldap

  • Postfix
  • Courier IMAP
  • jabberd
  • eGroupware

Riepilogo

Se qualcuno ha qualcosa da aggiungere, per favore fallo. So che la configurazione potrebbe non essere perfetta.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.