Files
s-informer-sur-la-tech-www/articles/2026/openldap install sous debian 13.md

300 lines
12 KiB
Markdown

---
title: "OpenLDAP : Installer et configurer sous Debian 13 (Trixie)"
description: OpenLDAP est le "répertoire téléphonique" haute performance du monde informatique. C'est une implémentation libre et open source du protocole LDAP (Lightweight Directory Access Protocol).
tags: [ldap, openldap, Debian_13]
date: 2026-02-22 09:21
lastmod: 2026-02-22 09:50
type:
- article
category:
- "[[Guide]]"
- "[[Logiciels et Outils]]"
status: brouillon
---
# OpenLDAP : Installer et configurer sous Debian 13 (Trixie)
Bonjour, je suis [Cédrix](Cédrix.md). Dans ce guide, nous allons déployer **OpenLDAP**, la solution de référence pour l'unification des identités en environnement Linux.
L'objectif est simple : en finir avec la gestion manuelle des comptes sur chaque machine. Nous allons mettre en place un **annuaire centralisé** qui servira de "source de vérité" unique pour tous les services de votre réseau (serveurs, VPN, applications web, etc.).
## Introduction
Au lieu de créer un compte utilisateur sur chaque serveur, chaque application (VPN, Wi-Fi, Nextcloud, GitLab, serveurs Linux) interroge OpenLDAP pour savoir :
1. "Est-ce que cet utilisateur existe ?"
2. "Son mot de passe est-il correct ?"
3. "A-t-il le droit d'accéder à cette ressource ?"
> [!INFO] Le saviez-vous ?
> Microsoft Active Directory (AD) repose en grande partie sur les mêmes concepts que LDAP, mais OpenLDAP est sa version libre, plus légère et extrêmement flexible.
Contrairement à une base de données relationnelle (comme MySQL ou PostgreSQL) qui est optimisée pour l'écriture et les relations complexes, OpenLDAP est une **base de données hiérarchique** optimisée pour la **lecture rapide** et la **recherche**.
- **Lecture (90%) :** Consulter une fiche utilisateur, vérifier un mot de passe.
- **Écriture (10%) :** Modifier un numéro de téléphone ou créer un nouveau compte.
Pour définir OpenLDAP, il faut comprendre ces trois éléments :
- **Le Modèle d'Information :** Tout est objet (un utilisateur, une imprimante, un groupe). Chaque objet appartient à une `objectClass` qui définit ses attributs (nom, email, mot de passe).
- **Le Modèle de Nommage (DIT) :** Les données sont organisées en arbre (_Directory Information Tree_). On identifie un objet par son **DN** (_Distinguished Name_), son adresse unique dans l'arbre (ex: `cn=jean,ou=users,dc=acegrp,dc=lan`).
- **Le Protocole de Communication :** Il définit comment un client (une application) "parle" au serveur pour extraire ou modifier des informations.
Même à l'ère du Cloud, OpenLDAP reste indispensable pour :
- **L'indépendance :** Vous gardez le contrôle total de vos identités sans dépendre d'un fournisseur tiers (SaaS).
- **L'interopérabilité :** Quasiment tous les logiciels professionnels au monde savent "parler" LDAP.
- **La performance :** Capable de gérer des millions d'entrées avec un temps de réponse de quelques millisecondes.
Voici le décodage des acronymes que vous rencontrerez partout :
---
### DC : Domain Component (Le Domaine)
Le **DC** représente les composants de votre nom de domaine. C'est la racine de votre annuaire.
- Pour `acegrp.lan`, on sépare le nom au niveau du point.
- On obtient deux composants : `dc=acegrp` et `dc=lan`.
- Ensemble, ils forment la base de votre annuaire (le **Base DN**).
### OU : Organizational Unit (Le Tiroir)
L'**OU** est un conteneur qui sert à regrouper des objets de même nature. C'est l'équivalent d'un dossier dans votre explorateur de fichiers.
- `ou=users` : pour ranger les humains.
- `ou=groups` : pour ranger les droits d'accès.
- `ou=computers` : pour ranger le parc matériel.
### CN : Common Name (L'Objet)
Le **CN** désigne généralement l'objet final (l'individu ou le groupe). C'est le nom "commun" par lequel on identifie l'entrée.
- Si vous avez un utilisateur nommé Jean Dupont, son CN sera souvent `cn=jdupont`.
- Pour un groupe d'administrateurs, ce sera `cn=admins`.
---
### DN : L'adresse complète (Le chemin)
Le **DN** (_Distinguished Name_) est la concaténation de tous ces éléments. C'est l'équivalent d'un chemin de fichier (ex: `C:\Users\Jean\Documents`). **Il se lit de droite à gauche**, du plus précis au plus général.
> **Exemple concret :** Si Jean Dupont (`cn=jdupont`) est dans le dossier des utilisateurs (`ou=users`) de votre entreprise (`dc=acegrp,dc=lan`), son adresse unique est : `dn: cn=jdupont,ou=users,dc=acegrp,dc=lan`
#### Tableau récapitulatif
| Acronyme | Nom Complet | Rôle | Exemple |
| -------- | ------------------- | ------------------------------ | ------------------------ |
| **DC** | Domain Component | Définit la racine (le domaine) | `dc=acegrp` |
| **OU** | Organizational Unit | Organise les objets (dossier) | `ou=users` |
| **CN** | Common Name | Nom de l'objet précis | `cn=jdupont` |
| **DN** | Distinguished Name | Adresse complète et unique | `cn=jdupont,ou=users...` |
| **SN** | Surname | Nom de famille (attribut) | `Dupont` |
---
#### Pourquoi est-ce important ?
Lorsque vous configurerez une application tierce (comme un VPN ou Nextcloud) pour se connecter à votre OpenLDAP, elle vous demandera presque toujours deux choses :
1. **Le Base DN :** `dc=acegrp,dc=lan` (Où dois-je commencer à chercher ?)
2. **Le Bind DN :** `cn=admin,dc=acegrp,dc=lan` (Avec quel compte je me connecte pour avoir le droit de lire l'annuaire ?)
## 1. Prérequis et Installation
L'utilisation d'un conteneur **LXC** est idéale pour OpenLDAP : elle offre une isolation parfaite, une empreinte mémoire dérisoire (moins de 50 Mo au repos) et permet des sauvegardes par "snapshots" avant chaque modification structurelle.
Pour un conteneur LXC dédié à **OpenLDAP**, les besoins en ressources sont particulièrement modestes. OpenLDAP est réputé pour sa stabilité et sa faible consommation, ce qui en fait un candidat parfait pour la virtualisation légère.
Voici les recommandations pour dimensionner votre machine LXC sous Debian 13 :
### Ressources Matérielles (Sizing)
| **Ressource** | **Minimum (Lab)** | **Recommandé (Prod)** | **Note** |
| ------------- | ----------------- | --------------------- | ---------------------------------------------------------------------------------- |
| **CPU** | 1 vCPU | 1 ou 2 vCPU | Le calcul des condensats (hashes) de mots de passe est la seule tâche gourmande. |
| **RAM** | 256 Mo | **512 Mo à 1 Go** | OpenLDAP met en cache la base de données en RAM pour plus de rapidité. |
| **Disque** | 2 Go | **8 Go** | La base de données LDAP est très compacte. Prévoyez de l'espace pour les **logs**. |
| **Swap** | 512 Mo | 512 Mo | Par précaution, bien que LDAP sature rarement la RAM. |
---
### Configuration Réseau et Système
Avant de lancer l'installation de `slapd`, assurez-vous que ces trois piliers sont en place :
#### A. Adresse IP Statique
Comme mentionné précédemment, un annuaire ne doit jamais changer d'IP. Dans votre configuration LXC (via Proxmox ou en ligne de commande), fixez l'adresse :
- **Exemple :** `192.168.1.10/24` avec sa passerelle.
#### B. Résolution de nom (Hostname & FQDN)
L'installeur de Debian utilise le nom d'hôte pour configurer le domaine LDAP par défaut.
- Modifiez `/etc/hostname` pour refléter le nom du serveur (ex: `ldap-server`).
- Modifiez `/etc/hosts` pour lier l'IP au nom complet :
`192.168.1.10 ldap-server.acegrp.lan ldap-server`
#### C. Synchronisation Temporelle
Le protocole LDAP est souvent utilisé avec **Kerberos** ou pour de la réplication. Une horloge désynchronisée peut corrompre les logs ou empêcher l'authentification.
- Vérifiez que le conteneur est à l'heure (il hérite généralement de l'heure de l'hôte LXC, mais assurez-vous que l'hôte utilise `NTP`).
---
### Pourquoi LXC plutôt qu'une VM ?
Le choix du LXC pour OpenLDAP est stratégique pour la maintenance :
1. **Sauvegardes instantanées :** Un "snapshot" de 512 Mo de RAM se fait en quelques secondes avant de modifier un schéma LDAP complexe.
2. **Partage de ressources :** Si votre LDAP est peu sollicité, il ne consommera virtuellement rien sur votre hôte Proxmox/LXC, contrairement à une VM qui "réserve" sa mémoire.
3. **Accès direct aux fichiers :** En cas de corruption majeure (rare avec le moteur MDB), il est plus facile d'accéder au système de fichiers du conteneur depuis l'hôte.
### Installation des paquets
Connectez-vous à votre conteneur et mettez à jour les dépôts, puis installez les outils nécessaires :
```Bash
apt update && apt install slapd ldap-utils -y
```
**Détails des paquets :**
- **`slapd` (Standalone LDAP Daemon) :** C'est le serveur proprement dit. Il gère la base de données, les requêtes de recherche et l'authentification.
- **`ldap-utils` :** Un ensemble d'outils en ligne de commande indispensables pour interagir avec le serveur (ajouter, supprimer, modifier ou chercher des entrées).
> **Note :** Durant l'installation, un mot de passe administrateur vous sera demandé. Il servira à créer le compte `admin` par défaut. Ne l'oubliez pas, il est crucial pour l'étape suivante.
---
## 2. Configuration du domaine (DIT)
Par défaut, Debian configure LDAP en se basant sur le nom d'hôte (FQDN). Pour définir précisément notre structure de domaine `acegrp.lan`, nous utilisons l'outil de reconfiguration assistée.
```Bash
dpkg-reconfigure -plow slapd
```
**Répondez aux questions comme suit :**
1. **Omettre la configuration du serveur ?** `Non` (Nous voulons créer une base exploitable immédiatement).
2. **Nom de domaine :** `acegrp.lan` (C'est ce qui définit votre "Base DN" : `dc=acegrp,dc=lan`).
3. **Nom de l'organisation :** `acegrp`
4. **Mot de passe administrateur :** Saisissez un mot de passe robuste.
5. **Base de données à utiliser :** `MDB` (Le moteur de stockage le plus performant et recommandé).
6. **Supprimer la base si slapd est purgé ?** `Non` (Sécurité pour vos données en cas de réinstallation du paquet).
7. **Déplacer l'ancienne base de données ?** `Oui`.
---
## 3. Création de la structure (OU)
Un annuaire LDAP ne contient pas d'utilisateurs "en vrac". On utilise des **Unités Organisationnelles (OU)**, semblables à des dossiers, pour classer les objets.
- **`ou=users` :** Regroupe les comptes des utilisateurs.
- **`ou=groups` :** Regroupe les groupes de sécurité (ex: admins, RH, dev).
### Création du fichier LDIF
Le format **LDIF** (LDAP Data Interchange Format) est le standard pour modifier l'annuaire. Vous pouvez créer ce fichier dans votre répertoire personnel (ex: `/root/structure.ldif`).
```Bash
nano ~/structure.ldif
```
Copiez-y le contenu suivant :
```Plaintext
dn: ou=users,dc=acegrp,dc=lan
objectClass: organizationalUnit
ou: users
dn: ou=groups,dc=acegrp,dc=lan
objectClass: organizationalUnit
ou: groups
```
### Application de la structure
Utilisez la commande `ldapadd` pour injecter ces données dans l'annuaire :
```Bash
ldapadd -x -D "cn=admin,dc=acegrp,dc=lan" -W -f ~/structure.ldif
```
- `-x` : Utilise l'authentification simple.
- `-D` : Définit le "Distinguished Name" (DN) avec lequel on se connecte (ici l'admin).
- `-W` : Demande le mot de passe de manière sécurisée.
- `-f` : Indique le fichier source.
---
## 4. Test et Vérification
Pour vérifier que vos "tiroirs" sont bien créés, interrogez l'annuaire :
```Bash
ldapsearch -x -b "dc=acegrp,dc=lan" "(objectClass=organizationalUnit)"
```
L'option `-b` (base) définit le point de départ de la recherche. Vous devriez voir s'afficher vos deux nouvelles unités `users` et `groups`.
---
## 5. Sécurité et Réseau
### Ouverture du pare-feu
Le protocole LDAP utilise par défaut le port **389**. Si vous utilisez `ufw` dans votre conteneur ou sur votre hôte Proxmox/LXC, ouvrez le port :
```Bash
ufw allow 389/tcp
```
### Prochaine étape conseillée
Pour le moment, vos données transitent en clair sur le réseau. Pour une mise en production, la prochaine étape logique est l'activation du **LDAPS (port 636)** ou de **STARTTLS** pour chiffrer les échanges.