Ubuntu auth LDAP

Suite à la création d’un nouveau projet que j’ai en tête (le projet Icare), visant à créer une sorte de contrôleur de domaine mais avec des outils UNIX (se basant sur un openLDAP local ou existant et puppet, et une interface web), je vais vous exposer ici comment intégrer une machine Ubuntu 12.10 sur un annuaire de type OpenLDAP.

Vous pourrez trouver une ancienne version (2011) plus générique et moins guidée du pam_ldap ici.

Prérequis

Vous devez posséder un annuaire openLDAP opérationnel, avec une ou plusieurs unités d’organisation (OU) contenant vos utilisateurs et groupes. Cet annuaire doit utiliser les schémas inetOrgPerson et posixAccount.

Les utilisateurs et groupes que vous déclarerez sur l’annuaire doivent utiliser un mot de passe de type LDAP (userPassword), et des champs uidNumber et gidNumber peuplés (et > 1000, voire 5000 dans l’idéal).

Installation des paquets

Nous allons installer les paquets associés au pam qui vont nous permettre d’établir un login LDAP sur la machine. Passez en root ou utilisez sudo afin d’installer les paquets.

apt-get install auth-client-config ldap-auth-client ldap-auth-config ldap-utils libnss-ldap libpam-ldap

Maintenant nous allons configurer le lien entre la machine et LDAP dans les fenêtres dialog.

ldap-uri.jpgEntrez tout d’abord l’URI de votre serveur LDAP (dans l’idéal avec SSL). Choisissez ensuite la version du protocole (en général 3).

ldap-change-pwdOn vous demande ici si on peut changer le mot de passe LDAP par le biais de la machine. Refusez, à moins que votre SI n’autorise un utilisateur en écriture sur les mots de passe (ce qui serait étonnant).

ldap-search-loginOn vous demande ensuite s’il faut un login (utilisateur proxy) afin de pouvoir lire l’annuaire. Dans notre cas nous répondons non, sinon il faudrait indiquer le nom d’utilisateur (dn) et son mot de passe.

ldap-search-pathEnfin entrez le chemin principal de recherche des utilisateurs.

Configuration du PAM

Ouvrez maintenant le fichier /etc/ldap.conf et recherchez les lignes nss_base_passwd, et similaires. Nous allons les éditer pour permettre le login via le pam_ldap

nss_base_passwd ou=people,dc=unix-experience,dc=fr
nss_base_shadow ou=people,dc=unix-experience,dc=fr
nss_base_group ou=groups,dc=unix-experience,dc=fr

Vérifiez le lien entre nss et LDAP en allant voir le contenu de /etc/nsswitch.conf. Vous devriez avoir 3 lignes contenant ldap:

passwd: files ldap
group: files ldap
shadow: files ldap

Maintenant on va relier auth-client-config à LDAP. Tapez la commande suivante:

auth-client-config -t nss -p lac_ldap

Afin de vérifier que le lien fonctionne tapez la commande suivante (en remplace myuser par le nom d’un utilisateur dans votre annuaire)

id myuser

Vous devriez voir apparaître l’UID et le GID de votre annuaire LDAP

uid=5000(myuser) gid=5000(ldap-users) groupes=5000(ldap-users)

Attention ! Le GID doit obligatoirement correspondre à un groupe LDAP existant sur l’annuaire (posixGroup), auquel cas l’utilisateur peut avoir des problèmes de connexion à la GUI.

Pour terminer sur la configuration du PAM, nous allons activer la création du répertoire utilisateur à la volée via le module pam_mkhomedir. Ouvrez le fichier /etc/pam.d/common-session et ajoutez la ligne suivante avant la ligne contenant pam_unix.so

session required pam_mkhomedir.so umask=0022 skel=/etc/skel

Il est à noter que le répertoire /etc/skel contient un ensemble de fichiers par défaut à créer lors de la première connexion de l’utilisateur.

Configuration de lightdm

Pour terminer nous allons configurer lightdm afin de pouvoir se connecter à la machine avec des logins autres que locaux. Ouvrez le fichier /etc/lightdm/lightdm.conf et ajoutez la ligne suivante:

greeter-hide-users=true

Vous pouvez également supprimer l’accès aux utilisateurs invités en ajoutant la ligne

allow-guest=false

Attention ! Lightdm étant mal conçu la moindre erreur de frappe fera buguer le gestionnaire de connexion, espérons que Canonical fera quelque chose.

Conclusion

Vous savez désormais relier une machine Ubuntu à un annuaire openLDAP ! D’autres précisions seront ajoutées dans d’autres articles afin de préciser ce que l’on peut faire (montages automatiques, filtrage, etc…) Source 1 Source 2 Source 3