Comment exécuter OpenLDAP dans le conteneur Bitnami Docker
La gestion des utilisateurs, des groupes et de leurs diverses autorisations est l'une des tâches essentielles des administrateurs système de toute organisation. Pour faciliter les choses, beaucoup choisissent d'utiliser un service d'annuaire. Cela fournit une base de données centralisée qui contient toutes les informations sur les ressources et les entités d'un réseau informatique. Il facilite l'accès et la gestion des informations sur diverses ressources du réseau telles que les utilisateurs, les ordinateurs, les imprimantes, les applications et autres appareils. Microsoft Active Directory est l'un des services d'annuaire les plus utilisés. Il existe également de nombreux autres services d'annuaire tels que Novell eDirectory, LDAP, etc.
Le Lightweight Directory Access Protocol, en abrégé LDAP, est un protocole utilisé pour accéder et modifier le service d'annuaire basé sur X.500 exécuté sur TCP/IP. Cet outil peut être utilisé pour l'authentification et le partage d'informations sur les utilisateurs, les systèmes et les applications sur le réseau.
OpenLDAP est une implémentation open source de LDAP. Cet outil fournit une CLI riche qui facilite la création et la gestion de LDAP. Il existe plusieurs autres raisons pour lesquelles OpenLDAP est préféré. Certains d'entre eux incluent :
- Sa rentabilité compte tenu du fait qu’il est gratuit et open source
- Il est entièrement conforme à la version 1 du format d'échange de données LDAP (LDIF).
- Il prend en charge l'authentification simple, la couche de sécurité et la sécurité de la couche de transport.
- Il offre une flexibilité offrant ainsi une large applicabilité.
- Il prend en charge le protocole Internet version 6
- Il prend en charge plusieurs plates-formes. Il prend en charge les systèmes Mac, Windows et Linux.
Dans ce guide, nous apprendrons comment exécuter OpenLDAP dans Bitnami Docker Container. Cette méthode d'installation est plus simple car elle élimine les tracas liés à la configuration d'OpenLDAP. Merci à Bitnami pour avoir empaqueté toutes les dépendances et bibliothèques requises pour exécuter OpenLDAP dans un conteneur léger.
1. Installer le moteur de conteneur Docker
Avant de plonger dans le vif du sujet, il est recommandé d’installer Docker Engine et Docker Compose. Pour y parvenir, vous pouvez utiliser les guides ci-dessous :
- Comment installer Docker
- Comment installer Docker Compose
Vérifiez l'installation en exécutant les commandes :
$ docker version
Client: Docker Engine - Community
Version: 24.0.6
API version: 1.43
Go version: go1.20.7
Git commit: ed223bc
Built: Mon Sep 4 12:32:10 2023
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 24.0.6
API version: 1.43 (minimum version 1.12)
Go version: go1.20.7
$ docker-compose version
Docker Compose version v2.23.0
2. Configurez le conteneur OpenLDAP
Lors de l'exécution d'OpenLDAP, vous devez effectuer un certain nombre de configurations. Le conteneur Bitnami Docker prend en charge un certain nombre de configurations ou de variables d'environnement. Vous trouverez ci-dessous quelques-unes des variables prises en charge :
- LDAP_PORT_NUMBER : il s'agit du port sur lequel OpenLDAP écoute les requêtes. Le port pris en charge par défaut ici est 1389
- LDAP_ROOT : il s'agit du baseDN de votre arborescence LDAP. Par exemple dc=example,dc=org
- LDAP_ADMIN_USERNAME : il s'agit de l'utilisateur administrateur de la base de données LDAP.
- LDAP_ADMIN_PASSWORD : le mot de passe souhaité pour l'utilisateur administrateur.
- LDAP_ADMIN_PASSWORD_FILE : vous pouvez l'utiliser pour pointer vers le fichier qui contient le mot de passe de l'utilisateur administrateur de la base de données LDAP au lieu de spécifier le mot de passe directement dans le YAML.
- LDAP_CONFIG_ADMIN_ENABLED : ceci est utilisé pour spécifier s'il faut créer un utilisateur administrateur de configuration. Par défaut : non
- LDAP_CONFIG_ADMIN_USERNAME : nom d'utilisateur de l'utilisateur administrateur de configuration LDAP. Ceci est distinct de LDAP_ADMIN_USERNAME. Par défaut : administrateur.
- LDAP_CONFIG_ADMIN_PASSWORD : un mot de passe pour l'administrateur de configuration.
- LDAP_CONFIG_ADMIN_PASSWORD_FILE : ceci pointe vers un fichier contenant le mot de passe de l'utilisateur administrateur de configuration LDAP.
- LDAP_USERS : il s'agit d'une liste d'utilisateurs sur votre LDAP séparés par des virgules. Les utilisateurs seront créés dans l'arborescence par défaut. Par exemple utilisateur01,utilisateur02
- LDAP_PASSWORDS : liste de mots de passe à utiliser pour les utilisateurs LDAP. Par exemple : bitnami1,bitnami2
- LDAP_USER_DC : il s'agit de l'unité organisationnelle des utilisateurs. La valeur par défaut est utilisateurs.
- LDAP_GROUP : il s'agit du groupe utilisé pour les utilisateurs nouvellement créés. Par défaut : lecteurs
- LDAP_EXTRA_SCHEMAS : ceci est utilisé pour ajouter des schémas supplémentaires parmi les schémas distribués d'OpenLDAP. Valeur par défaut : cosinus, inetorgperson, nis
- LDAP_SKIP_DEFAULT_TREE : utilisé pour spécifier s'il faut ignorer la création de l'arborescence LDAP par défaut basée sur LDAP_USERS, LDAP_PASSWORDS, LDAP_USER_DC et LDAP_GROUP.
- LDAP_CUSTOM_LDIF_DIR : utilisé pour spécifier l'emplacement des fichiers LDIF qui doivent être utilisés pour amorcer la base de données.
- LDAP_CUSTOM_SCHEMA_FILE : emplacement d'un fichier de schéma qui n'a pas pu être ajouté en tant que fichier ldif personnalisé.
- LDAP_CUSTOM_SCHEMA_DIR : il s'agit du répertoire des schémas personnalisés qui n'ont pas pu être ajoutés en tant que fichiers ldif personnalisés.
- LDAP_ULIMIT_NOFILES : il s'agit du nombre maximum de descripteurs de fichiers ouverts. Par défaut : 1024.
- LDAP_PASSWORD_HASH : le hachage que vous souhaitez utiliser dans la génération des mots de passe utilisateur. Doit être l'un des éléments suivants : {SSHA}, {SHA}, {SMD5}, {MD5}, {CRYPT} et {CLEARTEXT}. Par défaut : {SSHA}.
- LDAP_PPOLICY_HASH_CLEARTEXT : utilisé pour spécifier si vous souhaitez que les mots de passe en texte brut soient hachés automatiquement. Ne sera appliqué qu'avec LDAP_CONFIGURE_PPOLICY actif. Par défaut : non.
Vous avez également la possibilité de sécuriser OpenLDAP à l'aide des variables suivantes :
- LDAP_ENABLE_TLS : utilisé pour spécifier s'il faut activer ou non TLS pour le trafic. La valeur par défaut est non.
- LDAP_REQUIRE_TLS : utilisé pour définir si les connexions doivent utiliser TLS. Ne sera appliqué qu’avec LDAP_ENABLE_TLS actif. La valeur par défaut est non.
- LDAP_LDAPS_PORT_NUMBER : il s'agit du port utilisé pour le trafic sécurisé TLS. Le port privilégié est pris en charge (par exemple 636). Par défaut : 1636 (port non privilégié).
- LDAP_TLS_CERT_FILE : il s'agit du fichier qui contient le fichier de certificat pour le trafic TLS. Aucun défaut.
- LDAP_TLS_KEY_FILE : le fichier qui contient la clé du certificat. Aucun défaut.
- LDAP_TLS_CA_FILE : Le fichier avec l'autorité de certification du certificat. Aucun défaut.
- LDAP_TLS_DH_PARAMS_FILE : le fichier contenant les paramètres DH. Aucun défaut.
Par exemple, vous pouvez utiliser un fichier YAML avec la syntaxe ci-dessous pour sécuriser votre instance OpenLDAP.
services:
openldap:
...
environment:
...
- LDAP_ENABLE_TLS=yes
- LDAP_TLS_CERT_FILE=/opt/bitnami/openldap/certs/openldap.crt
- LDAP_TLS_KEY_FILE=/opt/bitnami/openldap/certs/openldap.key
- LDAP_TLS_CA_FILE=/opt/bitnami/openldap/certs/openldapCA.crt
...
volumes:
- /path/to/certs:/opt/bitnami/openldap/certs
- /path/to/openldap-data-persistence:/bitnami/openldap/
...
Dans ce guide, nous utiliserons Docker Compose pour configurer et exécuter le conteneur OpenLDAP Bitnami. Tout d’abord, nous allons télécharger l’exemple de fichier Docker Compose :
curl -sSL https://raw.githubusercontent.com/bitnami/containers/main/bitnami/openldap/docker-compose.yml > docker-compose.yml
Vous pouvez ensuite continuer et modifier le conteneur comme vous le souhaitez.
vim docker-compose.yml
Dans le fichier, vous pouvez mettre à jour les valeurs comme vous le souhaitez. Dans ce guide, nous utiliserons la dernière image Docker disponible et mettrons à jour les configurations en fonction de notre environnement.
# Copyright VMware, Inc.
# SPDX-License-Identifier: APACHE-2.0
version: '2'
services:
openldap:
image: docker.io/bitnami/openldap:latest
ports:
- '389:1389'
- '636:1636'
environment:
- LDAP_ADMIN_USERNAME=admin
- LDAP_ADMIN_PASSWORD=adminpassword
- LDAP_USERS=user01,user02
- LDAP_PASSWORDS=password1,password2
- LDAP_ROOT=dc=computingforgeeks,dc=org
- LDAP_ADMIN_DN=cn=admin,dc=computingforgeeks,dc=org
volumes:
- 'openldap_data:/bitnami/openldap'
volumes:
openldap_data:
external: true
Une fois tous les réglages souhaités effectués. Enregistrez le fichier et procédez comme indiqué ci-dessous.
3. Créez le volume persistant OpenLDAP
Pour que le conteneur conserve ses données après le redémarrage du système, nous devons créer un stockage persistant. Commencez par créer le chemin sur votre machine hôte :
sudo mkdir -p /data/openldap
Définissez l'autorisation et la propriété requises :
sudo chmod 775 -R /data/openldap
sudo chown -R $USER:docker /data/openldap
Sur les systèmes basés sur Rhel, vous devez configurer SELinux comme indiqué :
sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
Créez maintenant le volume comme indiqué :
docker volume create --driver local \
--opt type=none \
--opt device=/data/openldap \
--opt o=bind openldap_data
Vérifiez si le volume existe :
$ docker volume list
DRIVER VOLUME NAME
local openldap_data
4. Démarrez OpenLDAP dans le conteneur Bitnami Docker
Une fois toutes les configurations ci-dessus effectuées, nous pouvons procéder et démarrer le conteneur à l'aide de la commande :
docker compose up -d
Exemple de sortie :
[+] Running 2/2
✔ openldap 1 layers [⣿] 0B/0B Pulled 5.6s
✔ f041216ccfa5 Pull complete 1.2s
[+] Running 2/2
✔ Network debian_default Created 0.1s
✔ Container debian-openldap-1 Started 0.5s
Vérifiez si le conteneur est en place :
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bc79a32a90dc bitnami/openldap:latest "/opt/bitnami/script…" 42 seconds ago Up 41 seconds 0.0.0.0:389->1389/tcp, :::389->1389/tcp, 0.0.0.0:636->1636/tcp, :::636->1636/tcp debian-openldap-1
Maintenant tous les ports via le pare-feu :
##For UFW
sudo ufw allow 389/tcp
sudo ufw allow 636/tcp
##For Firewalld
sudo firewall-cmd --add-port=389/tcp --permanent
sudo firewall-cmd --add-port=636/tcp --permanent
sudo firewall-cmd --reload
5. Configurer le client OpenLDAP
Pour tester si tout va bien, nous pouvons configurer le client OpenLDAP sur le système souhaité. Il existe plusieurs guides sur la façon de configurer votre client OpenLDAP.
- Comment configurer le client OpenLDAP
Dans ce guide, nous allons configurer un client Ubuntu. La première chose à faire est de configurer le nom d'hôte du client :
sudo hostnamectl set-hostname ldapclient.computingforgeeks.org
Ensuite, configurez la mise à jour de la résolution /etc/hosts :
$ sudo vim /etc/hosts
##OpenLDAP server
192.168.200.56 ldapmaster.computingforgeeks.org
##OpenLDAP Client
192.168.200.52 ldapclient.computingforgeeks.org
Assurez-vous que le client peut atteindre le serveur OpenLDAP :
$ sudo ping -c3 ldapmaster.computingforgeeks.org
PING ldapmaster.computingforgeeks.org (192.168.200.56) 56(84) bytes of data.
64 bytes from ldapmaster.computingforgeeks.org (192.168.200.56): icmp_seq=1 ttl=64 time=0.232 ms
64 bytes from ldapmaster.computingforgeeks.org (192.168.200.56): icmp_seq=2 ttl=64 time=0.248 ms
64 bytes from ldapmaster.computingforgeeks.org (192.168.200.56): icmp_seq=3 ttl=64 time=0.232 ms
--- ldapmaster.computingforgeeks.org ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2032ms
rtt min/avg/max/mdev = 0.232/0.237/0.248/0.007 ms
Installez ensuite tous les packages requis :
sudo apt update -y && sudo apt -y install libnss-ldap libpam-ldap ldap-utils
Continuez et configurez l’URI LDAP. Dans notre cas, nous utiliserons la syntaxe ldap://:
Définissez le ROOT DN de votre base de recherche
Définissez la version LDAP à utiliser :
Continuez et définissez l'administrateur de la base de données racine locale
Répondez à la question suivante « La base de données LDAP nécessite-t-elle une connexion ? : par NON.
Définissez le compte root :
Fournissez le mot de passe du compte administrateur :
Une fois l'installation terminée, votre configuration sera enregistrée dans /etc/ldap.conf
Ouvrez maintenant le fichier ci-dessous et apportez ces modifications aux lignes passwd
et group
:
$ sudo vim /etc/nsswitch.conf
passwd: compat systemd ldap
group: compat systemd ldap
shadow: compat
Vous devez également modifier le fichier ci-dessous et modifier la ligne 26 comme indiqué :
$ sudo vim /etc/pam.d/common-password
##Line 26
password [success=1 user_unknown=ignore default=die] pam_ldap.so try_first_pass
Vous devez également autoriser la création du répertoire personnel de l’utilisateur lors de la première connexion. Pour y parvenir, ajoutez la ligne ci-dessous à la fin du fichier :
$ sudo vim /etc/pam.d/common-session
session optional pam_mkhomedir.so skel=/etc/skel umask=077
Enregistrez maintenant les modifications et testez si vous pouvez vous connecter au système en utilisant les utilisateurs créés sur OpenLDAP. Par exemple:
ssh user01@localhost
Exemple de sortie :
Verdict
Cela marque la fin du guide sur la façon d'exécuter OpenLDAP dans Bitnami Docker Container. J'espère que vous en avez appris quelque chose. En savoir plus sur cette page :
- Comment exécuter le serveur OpenLDAP dans des conteneurs Docker
- Installer et configurer le serveur OpenLDAP sur Rocky Linux 8/AlmaLinux 8
- Intégrez TrueNAS avec LDAP/Active Directory pour l'authentification des utilisateurs