Configurare un client Debian GNU/Linux per l'autenticazione ldap con sss

Da sia.
Vai alla navigazione Vai alla ricerca

System Security Services Daemon (SSSD)

Il sistema System Security Services Daemon è alternativo ai tradizionali libnss-ldap e libpam-ldap. Questo servizio è più rispettoso della privacy, quindi getent passwd non restituisce gli utenti anche se è possibile fare il login con ssh.

Installazione

apt-get install libnss-sss libpam-sss sssd openssl sssd-ldap ldap-utils ca-certificates

Scaricare i certificati

Serve che siano fidati i certificati digitali Terena/Géant. Sono necessarie le autorità intermedie geant_ov_ecc_ca_4.pem e geant_ov_rsa_ca_4.pem (scaricabili ad esempio da https://yucata.unimore.it/samba-ldap/certs/sectigo_ca/).

Con Debian la procedura è:

  • copiare i certificati in /usr/local/share/ca-certificates/
  • lanciare:
   sudo /usr/sbin/update-ca-certificates

Una procedura alternativa è scaricare il bundle di tutte le CA da https://yucata.unimore.it/samba-ldap/certs/ca_bundle/SectigoCA.crt e metterle ad esempio in /etc/ssl/certs.

Editare ldap.conf

BASE	dc=unimore,dc=it
URI    ldap://ldap5.unimore.it
pagesize 100000
ldap_version 3
bind_policy soft
ssl start_tls
# procedura con update-ca-certificates
tls_cacert /etc/ssl/certs/ca-certificates.crt
# se invece uno ha scaricato un bundle
#tls_cacert /etc/ssl/certs/SectigoCA.crt

Fare un test con ldapsearch:

ldapsearch -x -ZZ -H ldap://ldap5.unimore.it 'uid=una_username'

Se non funziona e ci sono dubbi che sia un problema di certificati si può chiedere a openssl un po' do diagnostica:

openssl s_client -connect ldap5.unimore.it:389 -starttls ldap -verify_return_error -CAfile /etc/ssl/certs/SectigoCA.crt

Modificare pam

Aggiungere come ultima riga a /etc/pam.d/common-session

# end of pam-auth-update config
session required 	pam_mkhomedir.so skel=/etc/skel umask=0027

Creare i soft link per shell e home

ln -s /home /homel
ln -s /bin/bash /bin/mosh

(o zsh, l'enfant prodige delle shell).

Configurazione di sssd.conf

Compiare il template /usr/share/doc/sssd-common/examples/sssd-example.conf in /etc/sssd/sssd.conf ed assegnare il privilegi corretti al file:

cp /usr/share/doc/sssd-common/examples/sssd-example.conf /etc/sssd/sssd.conf
chmod 600 /etc/sssd/sssd.conf
chown root:root /etc/sssd/sssd.conf

Editare il file di configurazione in 2 punti:


[sssd]
 config_file_version = 2 
 services = nss, pam
 # SSSD will not start if you do not configure any domains.
 # Add new domain configurations as [domain/<NAME>] sections, and
 # then add the list of domains (in the order you want them to be
 # queried) to the "domains" attribute below and uncomment it. 
 # prima modifica: la prossima riga
 domains = LDAP
 # seconda modifica: aggiungere la sezione seguente:  
[domain/LDAP]
id_provider = ldap
auth_provider = ldap
ldap_schema = rfc2307
ldap_uri = ldap://ldap5.unimore.it
ldap_search_base = dc=unimore,dc=it
ldap_tls_reqcert = demand
cache_credentials = true
enumerate = False
sudo_provider = none

Il file /etc/sssd/sssd.conf deve essere chmod 600 e chown root:root, altrimenti il servizio sssd non si avvia. La causa precisa dell'errore e' in /var/log/syslog.

Lanciare il comando:

sudo pam-auth-update

e scegliere

   [*] SSS authentication     
   [*] Unix authentication

NOTA: è possibile che nelle versioni più recenti di Debian si riceva, al momento del login grafico, l'errore "Could not connect to session bus: /usr/bin/dbus-launch terminated abnormally without any error message". In questo caso selezionare anche l'opzione:

    [*] Register user sessions in the systemd control group hierarchy

Svuotare la cache

Talvolta sssd mantiene la cache dei gruppi piuttosto a lungo.

Per un refresh, usare sss_cache -g gruppo per il refresh di un gruppo.

Nelle versioni più antiche, sss_cache non esiste e bisogna spegnere sssd e cancellare il file /var/lib/sss/db/cache_LDAP.ldb


Vedi anche

automatizzare la proceduta con gli script