====== 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".
{{:auth_ldap_sme_cos5_1.png|Sélection du menu de configuration de l'authentification}}
{{:auth_ldap_sme_cos5_2.png|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
{{:auth_ldap_sme_cos5_3.png|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.