La première chose à faire est de taper (en tant que root) la commande “setup”, qui ouvre le menu de configuration basique de CentOS (comme après le premier démarrage). Là, il faut activer LDAP comme source d'information pour les utilisateur, ainsi que pour l'authentification. Il est conseillé de cocher également la case “Une autorisation locale est suffisante”.
La page suivante permet de configurer notre annuaire LDAP. Attention, la case TLS doit être cochée, sans quoi le serveur SME refusera l'authentification.
Les paramètres à entrer sont:
Le menu précédent a créé une configuration de base presque fonctionnelle, mais pas tout à fait. Notamment parce que nss_ldap utilise un accès anonymes pour se connecter sur le serveur LDAP de notre SME. Et les ACL sur SME par défaut interdisent l'accès aux attributs posix pour les connexions anonymes (pour des raisons de confidentialité). Nous allons donc devoir créé un utilisateur sur le serveur SME qui sera dédié à l'authentification. Par exemple, on crée un utilisateur nommé “auth”.
Retour sur notre serveur CentOS, il faut éditer le fichier /etc/ldap.conf
vim /etc/ldap.conf
Dans ce fichier, on peut modifier pleins de paramètres selon notre convenance, mais les seuls necéssaires à ajouter sont les suivants:
binddn uid=auth,ou=Users,dc=lapiole,dc=org bindpw verysecret
En remplaçant bien sûre verysecret par le mot de passe de l'utilisateur “auth” sur SME
Il faut copier le certificat de notre SME (ou la CA qui l'a signé si on utilise un certificat officiel ou une PKI privée) dans le répertoire /etc/openldap/cacerts sur notre serveur CentOS, pour qu'il puisse établir une connexion TLS vers l'annuaire LDAP de SME.
Il faut également configurer PAM pour créer automatiquement les répertoires personnels lors de la première connexion des utilisateurs. Pour cela, il faut éditer le fichier /etc/pam.d/system-auth
vim /etc/pam.d/system-auth
Puis ajouter la ligne suivante dans la section session, juste après la ligne pam_limits.so
session optional pam_mkhomedir.so skel=/etc/skel umask=0077
Pour avoir au final quelque chose comme ça:
#%PAM-1.0 # This file is auto-generated. # User changes will be destroyed the next time authconfig is run. auth required pam_env.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 500 quiet auth sufficient pam_ldap.so use_first_pass auth required pam_deny.so account required pam_unix.so broken_shadow account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 500 quiet account [default=bad success=ok user_unknown=ignore] pam_ldap.so account required pam_permit.so password requisite pam_cracklib.so try_first_pass retry=3 password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok password sufficient pam_ldap.so use_authtok password required pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so session optional pam_mkhomedir.so skel=/etc/skel umask=0077 session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so session optional pam_ldap.so
Il ne reste plus qu'à vérifier que tout fonctionne (même pas besoin de redémarrer la machine):
getent passwd
Cette commande devrait lister tout les utilisateurs, locaux, et LDAP (SME). De même
getent group
devrait faire la même chose pour les groupes.