OpenLDAP
Qu'est-ce qu'OpenLDAP
OpenLDAP est un annuaire Open Source basé sur le protocole LDAP (Lightweight Directory Access Protocol). Il répertorie les ressources présentes au sein de votre système d'information (comptes ordinateurs, comptes utilisateurs, groupes...) sous la forme d'une arborescence.
Avertissement
L'installation décrite ici ne prend pas en compte la gestion du TLS.
Pré-requis
Dans cette procédure, nous considérons plusieurs choses:
- Le nom du serveur est openldap
- Le nom de domaine utilisé est mondomaine.local
- Le système est fonctionnel, et à jour
Charge à vous de remplacer les différentes variable par vos propres informations.
Note: à partir de Debian Squeeze, la configuration d'OpenLDAP ne s'effectue plus au travers du fichier slapd.conf.
Installation
Fichier /etc/hosts
Nous ne possédons pas de serveur DNS, nous utiliserons le fichier /etc/hosts. Vérifier que ce dernier possède bien le FQDN du serveur:
127.0.0.1 localhost 127.0.1.1 openldap.mondomaine.local openldap
Debconf
Debconf est un utilitaire graphique qui va nous permettre de renseigner divers options lors de l'installation des paquets. Afin que ce dernier nous propose plus de choix lors de l'installation d'OpenLDAP, nous allons diminuer son niveau. root@openldap:~# dpkg-reconfigure debconf
Répondre:
- Dialogue
- Intermédiaire
Téléchargement des packages
root@openldap:~# apt-get install slapd ldap-utils nmap apache2 -y
- slapd : serveur LDAP
- ldap-utils : outils qui vont nous permettre d'agir sur le serveur
- nmap : Scanner de ports
- apache2 : serveur Web qui va héberger notre outil de gestion
Une fenêtre debconf doit apparaître vous proposant les choix suivants:
- Voulez-vous omettre la configuration d'OpenLDAP? Non
- Nom de domaine : mondomaine.local
- Nom d'entité : mondomaine.local
- Mot de passe Administrateur : votre_password
- Vérifier le mot de passe Administrateur : votre_password
- Faut-il autoriser le protocole LDAP v2? Non
- Faut-il exécuter mandb avec l'utilisateur man? Non
Vérification du port 389
Pour vérifier que le service écoute bien sur le port 389:
root@openldap:~# nmap -p 389 localhost
-p : port
Vous devriez obtenir la ligne suivante :
389/tcp open ldap
Les fichiers LDIF
Les fichiers LDIF, acronyme de Lightweight Data Interchange Format sont des formats d'échanges permettant d'importer et exporter les données de l'annuaire LDAP. Pour le générer:
root@openldap:~# slapcat
Configurer le fichier /etc/ldap.conf
Indiquez votre propre domaine:
BASE dc=mondomaine,dc=local URI ldap://openldap.mondomaine.local/
Configuration des fichiers LDIF et DIT
Créez un nouveau fichier:
root@openldap:~# touch ~/olc-mod1.ldif
et y insérer les lignes suivantes:
# 1. dn: cn=config changetype: modify replace: olcLogLevel olcLogLevel: stats # 2.1. dn: olcDatabase={1}hdb,cn=config changetype: modify add: olcDbIndex olcDbIndex: uid eq - # 2.2. add: olcDbIndex olcDbIndex: cn eq - # 2.3. add: olcDbIndex olcDbIndex: ou eq - # 2.4. add: olcDbIndex olcDbIndex: dc eq
Exécuter la commande suivante pour prendre ces modifications en compte :
root@openldap:~# ldapmodify -QY EXTERNAL -H ldapi:/// -f ~/olc-mod1.ldif
Créez le fichier qui va héberger la structure de l'arbre:
root@openldap:~# touch ~/tree.ldif
Nous allons y insérer nos unités d'organisation.
Création des Organizational Unit (OU)
Dans le fichier ~/tree.ldif créé précédemment, nous allons créer deux OU:
- Utilisateurs
- Groupes
Nous verrons plus tard qu'il existe un moyen plus simple et plus rapide pour en créer de nouvelles.
Insérez le contenu suivant:
dn: ou=Utilisateurs,dc=mondomaine,dc=local ou: Utilisateurs objectClass: organizationalUnit dn: ou=Groupes,dc=mondomaine,dc=local ou: Groupes objectClass: organizationalUnit
Les informations sont enregistrées, mais le fichier n'est pas encore lié à notre base LDAP. Pour ce faire, effectuez la commande suivante:
root@openldap:~# ldapadd -cxWD cn=admin,dc=mondomaine,dc=local -f ~/tree.ldif Enter LDAP Password: ********** adding new entry "ou=Utilisateurs,dc=mondomaine,dc=local" adding new entry "ou=Groupes,dc=mondomaine,dc=local" ~#
-c : permet de continuer l'opération même s'il rencontre des erreurs. Ces dernières seront reportées -x : utilise une authentification simple -W : affiche le prompt pour saisir le password -D : spécifie le "Dinstinguished Name" qui va se connecter à notre base LDAP -f : spécifie le nom du fichier contenant les informations à rajouter
Vérifiez ensuite que l'arborescence a bien été prise en compte:
root@openldap:~# ldapsearch -xLLL dn: dc=mondomaine,dc=local objectClass: top objectClass: dcObject objectClass: organization o: mondomaine.local dc: mondomaine dn: cn=admin,dc=mondomaine,dc=local objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator dn: ou=Utilisateurs,dc=mondomaine,dc=local ou: Utilisateurs objectClass: organizationalUnit dn: ou=Groupes,dc=mondomaine,dc=local ou: Groupes objectClass: organizationalUnit
-x : utiliser une authentification simple -LLL : optimise l'affichage des informations en supprimant les commentaires et les versions
Création d'utilisateur(s)
Comme pour l'arborescence, nous allons créer un fichier ldif:
root@openldap:~# touch ~/myuser.ldif
Je veux que mon utilisateur myuser soit placé dans l'OU Groupes. Insérez les lignes suivantes à votre fichier ldif:
dn: cn=myuser,ou=Groupes,dc=mondomaine,dc=local cn: myuser gidNumber: 20000 objectClass: top objectClass: posixGroup dn: uid=myuser,ou=Utilisateurs,dc=mondomaine,dc=local uid: myuser uidNumber: 20000 gidNumber: 20000 cn: myuser sn: myuser objectClass: top objectClass: person objectClass: posixAccount objectClass: shadowAccount loginShell: /bin/bash homeDirectory: /home/myuser userPassword: myuser
Rajoutez ces informations dans la base LDAP:
root@openldap:~# ldapadd -cxWD cn=admin,dc=mondomaine,dc=local -f ~/myuser.ldif Enter LDAP Password: adding new entry "cn=myuser,ou=Groupes,dc=mondomaine,dc=local" adding new entry "uid=myuser,ou=Utilisateurs,dc=mondomaine,dc=local"
Vérifiez que l'utilisateur a bien été créé:
root@openldap:~# ldapsearch -xLLL uid=myuser dn: uid=myuser,ou=Utilisateurs,dc=mondomaine,dc=local uid: myuser uidNumber: 20000 gidNumber: 20000 cn: myuser sn: myuser objectClass: top objectClass: person objectClass: posixAccount objectClass: shadowAccount loginShell: /bin/bash homeDirectory: /home/myuser
Administration avec phpldapadmin
Cette dernière permet une administration simplifiée au travers de n'importe quel navigateur. Pratique lorsque l'on n'est pas particulièrement à l'aise avec la ligne de commande.
root@openldap:~# apt-get install phpldapadmin
- Adresse du serveur ldap : http://127.0.0.1
- Faut-il utiliser le TLS : non
- Nom distinctif de la base de données : dc=mondomaine,dc=local
- Type d'authentification : session
- Identifiants de connexion au serveur LDAP : cn=admin,dc=mondomaine,dc=local
- Serveyr à gérer : apache2
- Faut-il redémarrer le serveur web : oui
L'interface web est désormais accessible à l'URL : http://openldap.mondomaine.local