Configurare un client Debian GNU/Linux per l'autenticazione ldap con sss
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