LDAP – Serveur d’annuaire Linux

arborescence-image

Cette procédure va couvrir l’installation et la configuration de LDAP, le serveur d’annuaires et de domaine sous Linux (l’équivalent d’Active Directory)

Sur une Ubuntu :

apt-get install slapd ldap-utils

 

On entre le mot de passe d’administration du serveur ldap et on valide.

On va ensuite reconfigurer le serveur selon nos souhaits :

dpkg-reconfigure slapd

SERVEUR LDAP

Démarrer le serveur

(Après l’installation le serveur est déjà démarré)

sudo /etc/init.d/slapd start

Tester le serveur

Tester en interrogeant l’annuaire

  • -x : sans utiliser SASL
  • -b : avec la base abdomain.org
ldapsearch -x -b dc=abdomain,dc=org

Organiser l’annuaire

                  abdomain.org
                 /           \
            people          services
            /    \          /      \
     etudiants personnel groupes   nfs
déclaration d’annuaire
debconf.ldif

Editer un fichier init.ldif

~ fichier init.ldif ~
dn: ou=people, dc=abdomain, dc=org 
 objectclass: top 
 objectclass: organizationalUnit 
 ou: people 
 description: Branche gens 
 
 dn: ou=etudiants, ou=people, dc=abdomain, dc=org 
 objectclass: top 
 objectclass: organizationalUnit 
 ou: etudiants 
 description: Branche etudiants 
 
 dn: ou=personnel, ou=people, dc=abdomain, dc=org 
 objectclass: top 
 objectclass: organizationalUnit 
 ou: personnel 
 description: Branche personnel 
 
 dn: ou=services, dc=abdomain, dc=org 
 objectclass: top 
 objectclass: organizationalUnit 
 ou: services 
 description: Branche services 
 
 dn: ou=groupes, ou=services, dc=abdomain, dc=org 
 objectclass: top 
 objectclass: organizationalUnit 
 ou: groupes 
 description: Branche groupes 
 
 dn: ou=nfs, ou=services, dc=abdomain, dc=org 
 objectclass: top 
 objectclass: organizationalUnit 
 ou: nfs 
 description: Branche nfs

Ajouter la « requête » dans l’annuaire

  • -x : ne pas utiliser SASL
  • -f : utiliser le fichier init.ldif
  • -W : s’authentifier par mot de passe
  • -D : avec le login admin@abdomain.org
ldapadd -x -f init.ldif -W -D cn=admin,dc=abdomain,dc=org
ldapsearch -x -b dc=abdomain,dc=org

Ajouter un groupe dans l’annuaire

Insérer un groupe de classe posixGroup dans groupes.services.abdomain.org
Editer un fichier gr.ldif

~ fichier gr.ldif ~
dn: cn=mongroupe, ou=groupes, ou=services, dc=abdomain, dc=org 
 objectClass: top 
 objectClass: posixGroup 
 cn: mongroupe 
 gidNumber: 1111 
 description: groupe de test mongroupe

Ajouter le groupe

ldapadd -x -f gr.ldif -W -D cn=admin,dc=abdomain,dc=org

Ajouter un utilisateur dans l’annuaire

Insérer un utilisateur de classe posixAccount dans etudiants.people.abdomain.org
avec les attributs uid, uidNumber, gidNumber, homeDirectory, shell …
Editer un fichier ut.ldif

~ fichier ut.ldif ~
dn: uid=dupont, ou=etudiants, ou=people, dc=abdomain, dc=org 
 objectClass: top 
 objectClass: posixAccount 
 objectClass: person 
 objectClass: organizationalPerson 
 objectClass: inetOrgPerson 
 uid: dupont 
 cn: Dupont Jean 
 sn: Dupont 
 givenName: Jean 
 uidNumber: 1100 
 gidNumber: 1111 
 homeDirectory: /home/aware/dupont 
 loginShell: /bin/bash 
 userPassword: poiuyt 
 mail: dupont@abdomain.org 
 l: France 
 ou: mongroupe

Ajouter l’utilisateur dupont

ldapadd -x -f ut.ldif -W -D cn=admin,dc=abdomain,dc=org

AUTHENTIFICATION AVEC LDAP PAR LE CLIENT

Installer les librairies pour l’authentification sur le poste client

Installer le module LDAP pour NSS (Name Service Switch)
libnss-ldap v220-1

sudo apt-get install libnss-ldap
Adresse du serveur LDAP192.168.0.1
Annuairedc=abdomain,dc=org
Version du protocole LDAP3
Authentification nécessaire à la baseNon
Lisible et modifiable uniquement par le propriétaireNon
nssldap-config

Installer le module PAM (Pluggable Authentication Module) pour LDAP
libpam-ldap v169-1

sudo apt-get install libpam-ldap
Création d’une BD locale pour l’adminOui
Authentification nécessaire à la baseNon
Compte privilégié de l’annuairecn=admin, dc=abdomain, dc=org
Passwordazerty
Chiffrement des passwordcrypt
nssldap.config

 

Configurer le poste client pour l’authentification

Modifier le fichier nsswitch.conf
Ajouter LDAP pour la résolution des mots de passe

sudo vi /etc/nsswitch.conf
passwd: ldap compat
group: ldap compat
shadow: ldap compat

Modifier les méthodes d’authentification
Le module pam-ldap recherche un élément de l’annuaire avec des attributs
de classe posixAccount dont l’attribut uid correspond au login
Le module récupère les informations (posixAccount) uid uidNumber homeDirectory loginShell userPassword
Modifier le fichier common-auth pour modifier la pile de l’authentification

sudo vi /etc/pam.d/common-auth
auth sufficient pam_ldap.so 
auth sufficient pam_unix.so nullok_secure use_first_pass 
auth required pam_deny.so

 

Modifier le fichier common-account pour modifier les conditions sur les comptes

sudo vi /etc/pam.d/common-account
account sufficient pam_ldap.so 
account sufficient pam_unix.so use_first_pass

 

 

Se connecter

login : dupont
password : poiuyt

C’est gagné !
A part qu’il n’y a pas de homedir. Il faut tout simplement le créer ou utiliser un serveur de fichiers avec automontage.

SERVEUR DE FICHIERS AVEC AUTOMONTAGE

Serveur NFS

Installer le serveur NFS
Kernel NFS Server v1:1.0.6-3

sudo apt-get install nfs-kernel-server

Avoir un noyau avec NFSv3 activé

Config noyau

File Systems -> Network File Systems -> Provide NFSv3 server support (CONFIG_NFSD_V3)

Configurer le serveur NFS pour exporter les homedir utilisateurs

sudo nano /etc/exports
/home/serveur 192.168.0.2(rw,root_squash)

Démarrer le serveur NFS

sudo /etc/init.d/nfs-kernel-server start

Créer le répertoire de l’utilisateur et donner les autorisations pour modifier ses données sur le serveur (o+rwx)

sudo mkdir /home/serveur
sudo mkdir /home/serveur/dupont
sudo chmod go+rwx /home/serveur/dupont

Définir sur le serveur les classes d’objets pour automount

Ajouter dans le fichier nis.schema le schema « automount.schema » pour automount
Le schema définit un attribut automountInformation et deux classes d’objet
Une instance de classe automount contient au moins deux attributs : cn et automountInformation

sudo emacs /etc/ldap/schema/nis.schema
~ fichier automount.schema ~
    attributetype ( 1.3.6.1.1.1.1.25 NAME 'automountInformation'
        DESC 'Information used by the autofs automounter'
        EQUALITY caseExactIA5Match
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
 
    objectclass ( 1.3.6.1.1.1.1.13 NAME 'automount' SUP top STRUCTURAL
        DESC 'An entry in an automounter map'
        MUST ( cn $ automountInformation )
        MAY ( description ) )
 
    objectclass ( 1.3.6.1.4.1.2312.4.2.2 NAME 'automountMap' SUP top STRUCTURAL
        DESC 'An group of related automount objects'
        MUST ( ou ) )

Redémarrer le serveur LDAP pour prendre en compte les nouvelles définitions

sudo /etc/init.d/slapd restart

Ajouter les entrées automount dans l’annuaire

Indiquer l’emplacement du homedir sur le serveur avec les options de montage
Automount recherche un objet LDAP automount dont l’attribut cn correspond au login
Editer un fichier au.ldif

~ fichier au.ldif ~

dn: cn=dupont, ou=nfs, ou=services, dc=abdomain, dc=org
 objectClass: top
 objectClass: automount
 cn: dupont
 automountInformation: fstype=nfs,hard,intr,nodev,nosuid,rw 192.168.0.1:/home/serveur/dupont

Ajouter la requête dans l’annuaire

ldapadd -x -f au.ldif -W -D cn=admin,dc=abdomain,dc=org

Automontage des homedir par le client

Avoir un noyau avec NFSv3 activé et support de l’automount

Config noyau

File Systems -> Network File Systems -> Provide NFSv3 client support (CONFIG_NFS_V3)
File Systems -> Kernel automounter support (CONFIG_AUTOFS_FS)

Test de montage NFS

mkdir /tmp/testnfs
sudo mount -t nfs 192.168.0.1:/home/serveur/dupont /tmp/testnfs
sudo umount

Installer autofs sur le client
autofs v4.1.3-4

sudo apt-get install autofs autofs-ldap

Editer auto.master
Le point de montage /home/aware correspond à l’attribut homeDirectory (posixAccount) contenu dans l’annuaire
A la connexion, le répertoire est créé et monté
A la déconnexion, le démontage est effectué 1 seconde après

 sudo nano /etc/auto.master
/home/aware ldap:192.168.0.1:ou=nfs,ou=services,dc=abdomain,dc=org --timeout=1

Recharger auto.master

sudo /etc/init.d/autofs reload