Authentifier un poste Ubuntu sur SME avec SSSD

Ce tuto nécessite une version de SME récente (>= SME 8b6). Il vous permettra d'authentifier un poste Ubuntu sur votre serveur SME, en utilisant l'annuaire LDAP. Grâce à SSSD, les identifiants pourront être mis en cache local, les comptes réseau seront donc utilisable même hors ligne.

Installer les paquets nécessaires

sudo apt-get install sssd libnss-sss libpam-nss auth-client-config

Créer un lien symbolique

Il semble qu'il y ait un bug dans la version de sssd fournit sur Ubuntu, pour le contourner, il suffit de créer un lien symbolique:

ln -s /usr/lib /usr/modules

Sans ça, sssd ne pourra pas gérer les appartenances aux groupes dans LDAP (source http://us.generation-nt.com/bug-599644-sssd-unable-resolve-ldap-group-memberships-help-200739341.html)

Configurer SSSD

La configuration de SSSD se passe dans le fichier /etc/sssd/sssd.conf. Vers le début de ce fichier, il faut configurer le domaine utilisé. Dans SSSD on peut considérer un domaine comme une source de donnée. Il est possible de sépcifier plusieurs domaine, dans l'ordre de préférences. Par exemple:

domains = sme

Puis, vers la fin du fichier, nous allons ajouter la configuration du domaine sme

[domain/sme]
id_provider = ldap
auth_provider = ldap
ldap_schema = rfc2307
ldap_uri = ldap://sme.domain.tld
ldap_default_bind_dn = uid=auth,ou=Users,dc=domain,dc=tld
ldap_default_authtok = something_very_secret
ldap_search_base = dc=domain,dc=tld
ldap_user_search_base = ou=Users,dc=domain,dc=tld
ldap_group_search_base = ou=Groups,dc=domain,dc=tld
ldap_user_gecos = cn
ldap_tls_reqcert = hard
ldap_tls_cacert = /etc/ssl/certs/sme-cacert.pem
ldap_id_use_start_tls = true
cache_credentials = true
enumerate = true

Dans cet exemple:

le le domaine est domain.tld

le nom dns de votre serveur SME est sme.domain.tld

auth doit être un compte créé sur SME (un utilisateur classique)

something_very_secret est le mot de passe du compte auth

/etc/ssl/certs/sme-cacert.pem doit contenir la CA qui a signé le certificat de votre SME (si vous utilisez PHPki, il faut une version > 0.82-13)

Configurer le système pour utiliser SSSD comme source d'authentification

On va pour cela utiliser l'outil auth-client-config:

vim /etc/auth-client-config/profile.d/sss

Puis y placer les lignes suivantes:

[sss]
nss_passwd= passwd: compat sss
nss_group= group: compat sss
nss_shadow= shadow: compat
nss_netgroup= netgroup: nis
pam_auth= auth [success=3 default=ignore] pam_unix.so nullok_secure try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth [success=1 default=ignore] pam_sss.so use_first_pass
auth requisite pam_deny.so
auth required pam_permit.so
pam_account= account required pam_unix.so
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 500 quiet
account [default=bad success=ok user_unknown=ignore] pam_sss.so
account required pam_permit.so
pam_password= password sufficient pam_unix.so obscure sha512
password sufficient pam_sss.so use_authtok
password required pam_deny.so
pam_session= session required pam_mkhomedir.so skel=/etc/skel/ umask=0077
session optional pam_keyinit.so revoke
session required pam_limits.so
session [success=1 default=ignore] pam_sss.so
session required pam_unix.so

Il ne reste plus qu'à activer le tout:

sudo auth-client-config -a -p sss