Authentification LDAP sous Ubuntu 12.04 LTS

Posted by

Voici un petit tuto très succint pour mettre en place rapidement une authentification LDAP. Je ne m’attarderai pas sur la sécurité, la réplication etc…

On part d’un serveur vierge, avec le réseau configuré. Si votre domaine DNS c’est toto.local, le DIT LDAP sera dc=toto,dc=local. Pour moi ce sera dc=morot,dc=fr C’est parti :

apt-get install slapd ldap-utils

On met en place nos OU qui contiendront les utilisateurs et les groupes (faire un control+D à la fin de la saisie) :

ldapadd -x -W -D cn=admin,dc=morot,dc=fr

dn: ou=People,dc=morot,dc=fr
objectClass: top
objectClass: organizationalUnit
ou: People

dn: ou=Groups,dc=morot,dc=fr
objectClass: top
objectClass: organizationalUnit
ou: Groups

On ajoute une première entrée :

ldapadd -x -W -D cn=admin,dc=morot,dc=fr
Enter LDAP Password: 

dn: cn=Julien Morot,ou=People,dc=morot,dc=fr
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
userPassword: {SSHA}SECRET
givenName: Julien
sn: Morot
cn: Julien Morot
displayName: Julien Morot
uidNumber: 1026
gidNumber: 100
uid: julien
mail: julien@morot.fr
gecos: Julien Morot
loginShell: /bin/bash
homeDirectory: /home/julien

adding new entry "cn=Julien Morot,ou=People,dc=morot,dc=fr"

Le mot de passe SSHA est généré par la commande slappasswd.

On passe au client :

root# apt-get install libnss-ldap libpam-ldap nscd

Debconf pose un certain nombre de questions à adapter par rapport à votre DIT :

  • URI : ldapi:/// ldap:///localhost:389 ldap:///nom.domaine:389
  • Base de recherche : dc=morot,dc=fr
  • LDAP Version : 3
  • Make local root Database admin : yes
  • Does the LDAP database require login : No
  • LDAP account for root : cn=admin,dc=morot,dc=fr
  • LDAP root account password : celui indiqué à l’installation du package slapd

Maintenant que les packages sont configurés, il faut indiquer à NSS et PAM de les utiliser :
/etc/nsswitch.conf :

passwd:         compat ldap
group:          compat ldap
shadow:         compat ldap

Vérification :

root# getent passwd |grep julien
julien:x:1026:100:Julien Morot:/home/julien:/bin/bash

Dans le fichier /etc/pam.d/common-session, on ajoute un module PAM qui se charge de créer le répertoire personnel de l’utilisateur s’il n’est pas présent :

root# grep -v '^#' /etc/pam.d/common-session

session [default=1]                     pam_permit.so
session requisite                       pam_deny.so
session required                        pam_permit.so
session optional                        pam_umask.so
session required        pam_unix.so 
session optional                        pam_ldap.so 
session required    pam_mkhomedir.so skel=/etc/skel umask=0022

C’est terminé!

3 comments

  1. Salut,
    Juste une petite observation, dans le fichier /etc/nsswitch.conf, il faut éviter de mettre «ldap» en 1er.
    C’est toujours les comptes locaux dans /etc/passwd qui doivent être lu en 1er car il contient les comptes systèmes et en cas de plantage du ldap, pas besoin d’attendre le timeout pour passer sur les comptes locaux.
    Sinon bon article 🙂

    Manu

    1. Merci à toi! Tu as raison effectivement. Dans le cas présent, j’ai toujours le root actif donc je peux toujours rapidement bypasser l’authentification LDAP sans me logger en simple user et passer sudoers en cas d’incident.
      SSSD (http://fedorahosted.org/sssd) est plus intéressant à mon sens, j’en parlerai peut être à l’occasion. Cela permet de faire de l’authentification mise en cache mais tu connais sans doute 🙂

  2. J irai même plus loin si je place “ldap” avant “compat” le boot d’une ubuntu 12.04 avec SSD passe de 2 secondes a + d’ 1 minute ! Donc il FAUT mettre “ldap” après “compat” (je viens de passer un moment a chercher le problème donc si ça peut aider certains ;))
    a+

Répondre à Julien Morot Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.