From a4c6de9a652a04424d2a4134ffedb2bd0609c1a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9drix?= Date: Sun, 22 Feb 2026 09:50:34 +0100 Subject: [PATCH] ajout de openldap: 2026-02-22 09:50:34 --- .../2026/openldap install sous debian 13.md | 299 ++++++++++++++++++ 1 file changed, 299 insertions(+) create mode 100644 articles/2026/openldap install sous debian 13.md diff --git a/articles/2026/openldap install sous debian 13.md b/articles/2026/openldap install sous debian 13.md new file mode 100644 index 0000000..8d4e82f --- /dev/null +++ b/articles/2026/openldap install sous debian 13.md @@ -0,0 +1,299 @@ +--- +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.