Authentifier un serveur CentOS 5 sur la base LDAP de SME

Configurer l'authentification via le menu setup

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”.

Sélection du menu de configuration de l'authentification

Activation de l'annuaire LDAP comme source

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:

l'URI ldap, à savoir ldap://sme.domain.tld/

la base de recherche dc=domain,dc=tld

Configuration basique de la source LDAP

Affiner la configuration de nss_ldap

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

Placer le certificat du serveur SME dans /etc/openldap/cacerts

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.

Configurer PAM pour créer automatiquement les répertoires personnels

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

Vérifier que tout fonctionne

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.