Authentification LDAP sous Ubuntu 12.04 LTS
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é!