Curieusement, sur CentOS/RHEL 5.x, s'il est facile de configurer pam_ldap, il est beaucoup plus compliqué d'installer et de configurer pam_mount.
Pam_mount permet de faire un montage automatique d'un partage de fichier (CIFS, NFS etc.) à l'authentification de l'utilisateur sur un système Linux et le tout, sans avoir à retaper son mot de passe (SSO).
Il peut s'appuyer entres autres sur pam_ldap pour exploiter, par exemple, une authentification Active Directory avec montage automatique du HomeDirectory de l'utilisateur.
C'est plutôt cool :)
Quand ça marche... Malheureusement il n'y a pas de paquet RPM pour CentOS/RHEL 5.x, quasiment aucun document synthétique sur le web, du coup faut tout faire à la main. Dans cet article, je vais utiliser un paquet RPM existant, mais il est possible de compiler une version plus récente de pam_mount (pam_mount sur sourceforge ) ; et je vais me concentrer uniquement sur l'authentification LDAP via ActiveDirectory (il est possible d'utiliser Kerberos, Winbid ou un OpenLDAP).
Étape 1 : s'assurer que l'authentification LDAP est fonctionnelle
Pour cet exemple je vais me concentrer uniquement sur LDAP via ActiveDirectory.
Théoriquement, un simple # setup permet de configurer l'authentification LDAP, toutefois un tour dans /etc/ldap.conf est souvent nécessaire suivant l'infrastructure.
Voici les lignes qui doivent au minimum être renseignées pour interconnecter votre serveur Red Hat / CentOS avec Active Directory :
host ip serveur ad
base dc=domaine,dc=local
uri ldap://ip ou nom serveur ad
ldap_version 3
binddn cn=compte_ldapviewer,cn=users,dc=domaine,dc=local (indiquez le chemin d'un compte limité mais autorisé à consulter l'annuaire)
bindpw
scope sub
timelimit 120
bind_timelimit 120
idle_timelimit 3600
pam_login_attribute sAMAccountName(important, indique quel est le champs LDAP à utiliser pour le login)
Et votre fichier /etc/pam.d/system-auth doit ressembler à ceci :
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_succeed_if.so uid < 500 quiet
account [default=bad success=ok user_unknown=ignore] pam_ldap.so
account required pam_permit.so
(la suite ne change pas)
La commande # authconfig --test permet de vérifier l'état de vos modules pam. Vous devez avoir, pour la partie LDAP, une sortie de ce type :
pam_ldap is enabledFaites des tests d'authentification, vous pouvez faire un # tail -f /var/log/secure dans un second terminal pour vérifier le bon fonctionnement de votre configuration.
LDAP+TLS is disabled
LDAP server = "ip du serveur ou chemin ldap://"
LDAP base DN = "dc=domaine,dc=local"
Pour que les utilisateurs puissent s'authentifier sur le serveur, il suffit de leurs créer un compte le plus simplement du monde, mais sans préciser de mot de passe :
# useradd -mÉtape 2 : Installation et configuration de pam_mount :sAMAccountName_de_l'utilisateur
Tout d'abord, vous devez télécharger la version suivante de pam_mount : pam_mount-1.2-1.PU_IAS.5.i386.rpm et sa dépendance libHX-1.25-1.PU_IAS.5.i386.rpm (version x86_64 dispo sur http://pkgs.org)
Et tapez les commandes suivantes :
# yum install perl-xml-writter
# rpm -Uvh libHX-1.25-1.PU_IAS.5.i386.rpm
# rpm -Uvh pam_mount-1.2-1.PU_IAS.5.i386.rpm
Pour exploiter pam_mount, il est nécessaire de modifier le fichier /etc/pam.d/system-auth (attention, gardez plusieurs sessions root sous le coude pendant la modification de ce fichier !), ajoutez donc les lignes en gras dans votre fichier system-auth :
auth required pam_env.so
auth required pam_mount.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_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 [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_mount.so
session optional pam_ldap.so
Pam_mount se configure ensuite à l'aide du fichier /etc/security/pam_mount.conf.xml. En ajoutant une ligne de ce type :
<volume fstype="cifs" mountpoint="/home/%(USER)/dossier" path="home/%(USER)" server="serveur_NAS" user="*" workgroup="DOMAINE AD"/>Cette ligne signifie "Monte le dossier de l'utilisateur x faisant partie du domaine D à partir de serveur_NAS:/home/Utilisateur dans /home/Utilisateur/Dossier"
Ce qui est intéressant avec celle-ci, c'est qu'elle fonctionnera pour tous les utilisateurs du domaine qui auront un compte sur votre serveur CentOS/RHEL.
Pour spécifier un partage particulier pour un utilisateur particulier, il faut remplacer le user="*" par user="sAMAcountName_de_l'utilisateur".
Les utilisateurs peuvent accéder à leurs données de façon sécurisée (SSH) et de façon extrêmement simple (WinSCP par exemple).
Pam_mount est très riche, vous pouvez utiliser d'autres protocoles, vous baser sur le GUID pour les montages etc... Consultez son man ainsi que celui de pam_mount.conf.xml.
Aucun commentaire:
Enregistrer un commentaire