Di recente mi è capitato di dover configurare alcune macchine linux per permettere l’accesso agli utenti di dominio.
La procedura, in breve, richiede di configurare l’accesso con NSS/PAM, gestire i certificati SSL per LDAPS e abilitare determinati gruppi come sudoers.
1. Verifica dei requisiti
Prima di iniziare, assicurati di avere:
- Un account di AD con permessi di lettura sugli utenti e sui gruppi (nel caso di esempio ldapbind).
- Il certificato SSL per eseguire la connessione LDAPS.
2. Installazione dei pacchetti necessari
Per permettere al sistema di interrogare il server LDAP, installiamo i pacchetti richiesti:
sudo apt update && sudo apt install -y libnss-ldapd libpam-ldapd nslcd
Questi pacchetti consentono a Linux di utilizzare LDAP per la gestione degli utenti e dell’autenticazione.
3. Configurazione di LDAPS
Dobbiamo configurare il file /etc/nslcd.conf
per connettere il sistema al server LDAP. Il file deve contenere informazioni come:
- L’URI del server LDAPS (o più di uno, in caso di failover).
- Il percorso base per la ricerca degli utenti.
- Le credenziali dell’account di servizio.
- Il mapping degli attributi tra LDAP e il sistema Linux.
Ecco un esempio:
uri ldaps://ldap.example.com
base dc=example,dc=com
binddn cn=ldapbind,ou=services,dc=example,dc=com
bindpw Password_Utente_ldapbind
ldap_version 3
pagesize 1000
referrals off
nss_nested_groups yes
ssl on
tls_reqcert demand
tls_cacertfile /etc/ssl/certs/ca-certificates.crt
4. Configurazione dei certificati SSL
Se il server LDAP utilizza LDAPS, è necessario installare il certificato CA. Puoi importare sulla macchina il certificato CA o recuperare i certificati dei singoli server LDAPS (tieni a mente che tipicamente il certificato CA padre ha una scadenza più lunga e con un’unica chiave ti permette di autenticare tutti i DC figli che verranno nel tempo connessi all’infrastruttura). Se non hai il CA root, puoi comunque recuperare il certificato del DC e salvarlo in ldap-ca.crt
attraverso:
openssl s_client -connect ldap.example.com:636 -showcerts </dev/null | openssl x509 -outform PEM > /usr/local/share/ca-certificates/ldap-ca.crt
chmod 644 /usr/local/share/ca-certificates/ldap-ca.crt
update-ca-certificates
Dopo aver aggiornato i certificati, il sistema sarà in grado di stabilire connessioni sicure.
5. Configurazione di NSS e PAM
Aggiorniamo il file /etc/nsswitch.conf
per abilitare LDAP nella ricerca di utenti e gruppi:
sed -i '/^passwd:/ { / ldap/! s/$/ ldap/ }' /etc/nsswitch.conf
sed -i '/^group:/ { / ldap/! s/$/ ldap/ }' /etc/nsswitch.conf
sed -i '/^shadow:/ { / ldap/! s/$/ ldap/ }' /etc/nsswitch.conf
Poi configuriamo PAM per creare automaticamente la home directory di un utente LDAP al primo login:
cat <<EOF > /usr/share/pam-configs/mkhomedir
Name: Create home directory on login
Default: no
Priority: 0
Session-Type: Additional
Session-Interactive-Only: yes
Session:
optional pam_mkhomedir.so umask=0077
EOF
pam-auth-update --enable mkhomedir ldap
6. Configurazione dei sudoers per i gruppi LDAP
Se vogliamo che alcuni utenti LDAP abbiano accesso privilegiato, possiamo aggiungere i loro gruppi al file /etc/sudoers.d/eossorg
.
Esempio di configurazione:
%LDAPAdmins ALL=(ALL) ALL
%Developers ALL=(ALL) NOPASSWD: ALL
7. Riavvio dei servizi e test
Dopo aver completato la configurazione, riavviamo i servizi e svuotiamo la cache relativa ai gruppi:
systemctl restart nslcd
systemctl restart nscd
nscd --invalidate=group
Ora possiamo verificare che il sistema riconosca gli utenti LDAP attraverso getent passwd username
o comunque aprendo una nuova shell ed effettuando la connessione SSH con utente di dominio.
That’s all folks.
Emanuele