GNU/Linux >> Tutoriels Linux >  >> Debian

Comment configurer le serveur OpenLDAP sur Debian 10

En tant qu'administrateur système, vous connaissez probablement déjà le protocole LDAP .

Si vous travaillez dans une moyenne à grande entreprise, vous pouvez être sûr que votre entreprise possède déjà un serveur LDAP , que ce soit sous Linux ou Windows.

Inventé au début des années 80, le protocole LDAP (pour Lightweight Directory Access Protocol ) a été créé afin de stocker des données qui doivent être accessibles via un réseau.

Le protocole LDAP a été défini dans le cadre de la spécification RFC 4511 et il a été implémenté par de nombreux fournisseurs différents.

Dans ce tutoriel, nous examinons l'une des implémentations du protocole LDAP :OpenLDAP .

OpenLDAP est une implémentation gratuite et open source de LDAP qui fournit un serveur (appelé slapd) ainsi que des utilitaires et des bibliothèques pour les développeurs.

À l'aide de ce didacticiel, vous serez en mesure d'installer un serveur OpenLDAP complet et de le configurer afin de l'utiliser pour l'authentification centrale.

Ce que vous allez apprendre

Si vous suivez ce tutoriel jusqu'au bout, vous pourrez en apprendre davantage sur les sujets suivants :

  • Comment installer un serveur OpenLDAP sur Debian 10 ;
  • Comment configurer OpenLDAP et ce que la configuration signifie réellement ;
  • Comment utiliser LDIF et utilitaires LDAP modifier votre base de données LDAP ;
  • Comment ajouter des utilisateurs dans votre serveur OpenLDAP pour l'authentification centrale ;
  • Comment configurer les clients et comment fonctionne l'authentification centralisée sous Linux ;

C'est un article assez long alors sans plus tarder, commençons par installer un simple serveur OpenLDAP sur Debian 10.

Installer le serveur OpenLDAP sur Debian 10

Avant de commencer, vous devez vous assurer que vous disposez des droits d'administrateur sur votre système :vous en aurez besoin pour installer de nouveaux packages.

Pour vérifier si vous avez les droits sudo, exécutez la commande "sudo" avec l'option "-v".

$ sudo -v

Si vous ne savez pas comment fournir des droits sudo aux utilisateurs sur Debian 10 ou CentOS 8, assurez-vous de lire nos guides dédiés à ce sujet.

Assurez-vous également que vos packages sont correctement mis à jour afin d'obtenir la dernière version de package à partir des référentiels.

$ sudo apt-get update

Sous Linux, le serveur OpenLDAP s'appelle "slapd “.

C'est un serveur autonome simple et configurable qui est utilisé pour lire, modifier et supprimer d'un annuaire LDAP.

Le démon slapd est également livré avec de nombreux utilitaires différents qui peuvent être utilisés afin de créer facilement de nouvelles entrées, ou de modifier facilement des entrées :slapadd ou slappasswd pour n'en nommer que quelques-uns.

$ sudo apt-get install slapd

Lors de l'installation de ce nouveau package, il vous sera demandé de configurer le démon slapd à la fin de l'installation.

Configurer slapd sur Debian 10

La configuration slapd se présente sous la forme d'interfaces textuelles que vous devez remplir pour configurer correctement le serveur.

Tout d'abord, vous êtes invité à fournir un mot de passe administrateur pour le serveur LDAP.

Choisissez un mot de passe sécurisé car l'entrée administrateur dans l'annuaire LDAP a tous les droits sur toute l'arborescence :ajouter, supprimer et modifier toutes les entrées ainsi que lire tous les attributs LDAP.

Sur l'écran suivant, il vous est demandé de confirmer le mot de passe :tapez simplement ce que vous avez tapé dans l'écran précédent.

À partir de là, votre serveur LDAP doit être initialisé .

Lors de l'installation du serveur slapd, l'installation a également :

  • Création d'un utilisateur nommé "openldap ” sur votre serveur ;
  • Création d'une configuration initiale disponible sur /etc/ldap
  • Créé une base de données initiale et vide prêt à accepter de nouvelles entrées.

Par défaut, le serveur OpenLDAP créera une première entrée de base de données qui reflète votre nom de domaine actuel.

Cependant, si vous n'avez pas correctement configuré votre nom de domaine (lors de l'installation par exemple), il est possible que votre serveur OpenLDAP soit mal configuré.

Pour jeter un premier coup d'œil à la configuration initiale de votre serveur OpenLDAP, utilisez la commande "slapcat" et surveillez les noms distinctifs créés par slapd.

$ sudo slapcat

$ sudo slapcat | grep dn

Habituellement, vos principaux DN OpenLDAP doivent correspondre aux noms DNS de votre domaine.

Cela signifie que si vous travaillez actuellement dans le domaine "devconnected.com", votre serveur OpenLDAP doit avoir les noms distinctifs supérieurs "dc=devconnected,dc=com".

Comme vous pouvez le voir, ce n'est pas le cas pour l'instant mais heureusement pour nous, il existe un moyen de reconfigurer le démon slapd.

Reconfigurer slapd avec dpkg-reconfigure

Afin de reconfigurer le démon slapd, exécutez la commande "dpkg-reconfigure » sur le démon « slapd ». Encore une fois, vous avez besoin des privilèges sudo pour reconfigurer slapd.

$ sudo dpkg-reconfigure slapd

Tout d'abord, il vous est demandé si vous souhaitez omettre la configuration du serveur OpenLDAP.

Nous voulons évidemment appuyer sur "Non" sur cette option car nous voulons que la configuration initiale de la base de données soit créée pour nous.

À l'étape suivante, vous êtes invité à fournir le nom distinctif de base de votre serveur LDAP.

Comme vous pouvez le voir, le démon slapd décrit que le nom de domaine DNS est utilisé pour construire le DN de base de votre répertoire OpenLDAP.

Dans ce cas, nous choisissons d'avoir "dc=devconnected,dc=com" :notez que vous devez modifier cette entrée pour qu'elle corresponde à vos paramètres DNS actuels.

Si vous n'êtes pas sûr du domaine auquel vous appartenez, utilisez simplement la commande "nom de domaine" dans votre terminal.

$ domainname
devconnected.com

Ensuite, il vous est demandé de fournir le nom de votre organisation . C'est exactement la même étape que la précédente, tapez simplement le nom de votre organisation et cliquez sur "OK".

Enfin, comme pour la première configuration de slapd, il vous est demandé de fournir des informations d'identification d'administrateur pour votre serveur LDAP .

Encore une fois, choisissez un mot de passe fort car il peut être utilisé pour lire et modifier chaque entrée de l'annuaire LDAP.

Sur l'écran suivant, il vous est demandé de fournir le back-end à utiliser par LDAP.

Pour cette étape, vous souhaitez conserver les valeurs par défaut (c'est-à-dire une MDB pour le backend MariaDB) sauf si vous avez une raison de choisir un autre backend de stockage.

Ensuite, il vous est demandé si vous souhaitez que la base de données soit supprimée lors de la purge de slapd.

Dans ce cas, nous choisirons "Non"  :il existe de nombreuses situations dans lesquelles vous souhaitez simplement mettre à jour votre package slapd ou passer à un autre serveur LDAP.

Si vous choisissez oui, votre base de données sera supprimée, ce qui peut être un réel problème si vous n'avez aucune sauvegarde de votre annuaire LDAP.

Enfin, un avertissement s'affiche :il y a déjà des fichiers dans le dossier "/var/lib" répertoire de votre serveur.

Dans ce répertoire, vous avez actuellement votre ancienne base de données stockée. Lorsque vous essayez de reconfigurer votre serveur OpenLDAP, vous allez écraser le contenu de ce dossier.

En choisissant "Oui", l'utilitaire slapd sauvegarde le contenu de votre base de données existante dans le dossier "/var/backups".

Fait!

Votre serveur slapd est maintenant correctement configuré pour correspondre à vos paramètres DNS actuels.

Pour avoir un premier aperçu du contenu de votre base de données LDAP, exécutez simplement le "slapcat" (avec les privilèges sudo si vous n'êtes pas actuellement connecté en tant que root)

$ sudo slapcat

Avec cette configuration initiale :

  • Vos ​​fichiers de configuration sont stockés dans "/etc/ldap" :ils stockent le fichier de configuration ldap, les schémas que vous pouvez ajouter à slapd, ainsi que le répertoire slapd.d utilisé pour la personnalisation du serveur ;
  • Votre base de données est stocké dans "/var/lib/ldap" sous la base de données "data.mdb" :vous devriez probablement configurer des sauvegardes de ce fichier afin de vous assurer que vous ne perdrez pas tout.

Configuration des règles de pare-feu pour LDAP

Si vous utilisez un pare-feu, il est très probable que vous deviez accepter les requêtes entrantes vers votre serveur LDAP.

Pour rappel, OpenLDAP s'exécute sur le port 389.

Pour vous assurer qu'il fonctionne correctement, exécutez la commande "systemctl status" sur le serveur "slapd".

$ sudo systemctl status slapd

Si vous utilisez des distributions récentes de Debian, vous utilisez probablement UFW comme pare-feu par défaut.

Pour activer OpenLDAP sur UFW, exécutez la commande « ufw allow » sur le port 389 de votre serveur. Vous pouvez accepter toutes les connexions TCP et UDP.

$ sudo ufw allow 389

Rule added
Rule added (v6)

Vous pouvez ensuite vérifier que la règle a été correctement créée à l'aide de la commande status.

Dans la section suivante, nous allons voir comment ajouter facilement de nouvelles entrées à votre serveur LDAP à l'aide de fichiers LDIF.

Ajouter des entrées OpenLDAP à l'aide de fichiers LDIF

Lors de l'ajout de nouvelles entrées à votre serveur OpenLDAP, vous pouvez utiliser l'utilitaire "slapadd" afin d'ajouter un nouveau fichier LDIF.

Cependant, ce n'est pas l'utilitaire que nous allons utiliser, à la place nous allons utiliser "ldapadd".

Différence entre slapadd et ldapadd

Avant d'ajouter de nouvelles entrées, il est important que vous connaissiez la différence entre les utilitaires slap et les utilitaires ldap.

Les deux utilitaires prennent des fichiers au format LDIF comme argument et ils avaient le contenu dans la base de données.

Cependant, lors de l'utilisation de slapadd, vous devrez redémarrer votre serveur LDAP pour que les modifications soient appliquées.

Ce n'est pas le cas lors de l'utilisation d'utilitaires ldap comme « ldapadd » :les modifications sont directement effectuées sur l'arborescence.

Pour pouvoir utiliser "ldapadd", "ldapsearch" et d'autres utilitaires LDAP, vous devez installer le package "ldap-utils" sur votre système.

$ sudo apt-get install ldap-utils

Création de votre premier fichier LDIF

Comme expliqué précédemment, si vous utilisez la ligne console, vous devrez créer des fichiers LDIF et ajoutez-les à votre configuration ou base de données LDAP actuelle.

Le format LDIF est un format utilisé pour ajouter ou modifier des entrées existantes dans un annuaire LDAP.

A l'aide de LDIF, vous spécifiez le nom distinctif du nœud que vous souhaitez modifier et vous décrivez les modifications à effectuer.

Par exemple, supposons que vous souhaitiez créer un nouveau nœud dans votre annuaire LDAP nommé "utilisateurs".

Ajouter un groupe d'utilisateurs

Pour ce faire, créez un nouveau fichier LDIF nommé "users.ldif" et ajoutez-y le contenu suivant.

$ sudo touch /etc/ldap/users.ldif

# Content of the users file

dn: ou=People,dc=devconnected,dc=com
objectClass: organizationalUnit
ou: People

Comme vous pouvez le voir, on nous fournit le DN complet du nœud à ajouter, on précise la classe d'objet et le nom du nœud à créer.

Afin d'ajouter cette entrée à votre annuaire LDAP, vous devez utiliser la commande "ldapadd" et spécifier le fichier LDIF à utiliser.

$ sudo ldapadd -D "cn=admin,dc=devconnected,dc=com" -W -H ldapi:/// -f users.ldif

Enter LDAP Password:
added new entry "ou=People,dc=devconnected,dc=com"

Si vous n'êtes pas familier avec les options de l'utilitaire ldap, voici une description des options fournies :

  • -D :utilisé pour spécifier un nœud auquel se lier. Lors de l'ajout de nouvelles entrées à un serveur LDAP, vous pouvez choisir votre mécanisme d'authentification, mais vous souhaitez généralement vous lier au nœud administrateur afin d'obtenir tous les privilèges sur l'arborescence ;
  • -W :utilisé pour préciser que l'on souhaite que le mot de passe soit demandé lors de la connexion;
  • -H :utilisé pour spécifier le serveur LDAP auquel se connecter. Dans ce cas, nous nous connectons à un serveur LDAP disponible sur localhost ;
  • -f :pour spécifier le fichier LDIF à ajouter au serveur LDAP.

Notez que vous ne pouvez pas utiliser une authentification externe pour ajouter de nouvelles entrées à LDAP par défaut :les ACL ne sont pas configurées pour cela.

Maintenant que votre nœud est ajouté à votre arborescence, vous pouvez essayer de le trouver à l'aide de la commande "ldapsearch".

$ sudo ldapsearch -x -b "dc=devconnected,dc=com" ou

Génial !

Maintenant que l'unité organisationnelle "Personnes" a été ajoutée, ajoutons quelques utilisateurs à votre arborescence LDAP.

Ajouter de nouveaux utilisateurs à LDAP

Afin d'ajouter de nouveaux utilisateurs, nous allons suivre la même logique :créer un fichier LDIF contenant des entrées individuelles pour les utilisateurs.

Comme décrit précédemment, OpenLDAP utilise des schémas afin de définir des "objets ” qui peut être ajouté au répertoire.

Dans ce cas, nous allons utiliser le schéma « posixAccount » qui est déjà ajouté par défaut à votre configuration de base de données.

Le « posixAccount ” l'objet a plusieurs champs qui peuvent être utilisés pour décrire un compte utilisateur Linux tels que le nom d'utilisateur, le nom de famille mais surtout le mot de passe de l'utilisateur .

Créez un nouveau fichier LDIF et ajoutez-y le contenu suivant :

$ sudo touch /etc/ldap/new_users.ldif

# Content of new_users LDIF file

dn: cn=john,ou=People,dc=devconnected,dc=com
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: john
uid: john
uidNumber: 10001
gidNumber: 10001
homeDirectory: /home/john
userPassword: <password>
loginShell: /bin/bash

Lorsque vous avez terminé, enregistrez votre fichier et utilisez la commande ldapadd afin d'ajouter votre entrée à l'arborescence de l'annuaire LDAP.

$ sudo ldapadd -D "cn=admin,dc=devconnected,dc=com" -W -H ldapi:/// -f new_users.ldif

Enter LDAP Password:
added new entry "cn=john,ou=People,dc=devconnected,dc=com"

Félicitations, vous avez maintenant votre premier utilisateur stocké dans OpenLDAP.

Vous pouvez lire les informations de l'utilisateur en exécutant une commande de recherche LDAP. Notez que vous ne pourrez pas lire le mot de passe de l'utilisateur car vous êtes limité par les ACL.

$ sudo ldapsearch -x -b "ou=People,dc=devconnected,dc=com"

Génial, maintenant que votre serveur LDAP est configuré, configurons un client afin de configurer l'authentification centrale.

Configuration des clients LDAP pour l'authentification centralisée

Dans la dernière section de cette configuration du serveur OpenLDAP, nous allons voir comment vous pouvez configurer les clients LDAP (c'est-à-dire vos machines hôtes) afin qu'elles puissent se connecter à l'aide des informations LDAP.

Fonctionnement de l'authentification du client LDAP

Avant d'émettre des commandes, il est important que vous ayez une compréhension globale de ce que nous construisons réellement.

Avant LDAP (et NIS), si vous vouliez configurer des utilisateurs et des autorisations de groupe sur plusieurs ordinateurs d'un réseau, vous deviez vous y connecter un par un et modifier leurs paramètres.

LDAP est une excellente solution pour cela :LDAP centralisera les informations des utilisateurs en un seul endroit sur votre réseau.

Lorsqu'un client se connecte à n'importe quelle machine de votre domaine, l'hébergeur contacte d'abord le serveur LDAP et vérifie que le mot de passe utilisateur fourni est correct.

La bibliothèque cliente va lier (ou authentifier) au serveur LDAP distant à l'aide du compte admin et récupérer les informations associées à l'utilisateur tentant de se connecter.

Ensuite, il récupérera le mot de passe associé au compte et le comparera avec le mot de passe que vous avez tapé lors de votre connexion.

Si les mots de passe correspondent, vous serez connecté à votre compte, sinon vous serez refusé.

Configurer l'authentification LDAP du client sur Debian

Afin de configurer l'authentification LDAP du client, vous devrez installer le "libnss-ldap ” package sur votre client.

$ sudo apt-get install libnss-ldap

Lors de l'installation de ce package, vous serez invité à répondre à de nombreuses questions différentes afin de configurer l'authentification centralisée du client.

Dans un premier temps, il vous est demandé de fournir l'URL de votre serveur LDAP :il est recommandé de paramétrer une adresse IP (configurée en statique évidemment) afin d'éviter les problèmes de résolutions DNS.

Sur le serveur, identifiez votre adresse IP avec la commande ip et remplissez le champ correspondant sur le client.

# On the server

$ ip a

Remarque :assurez-vous d'utiliser le protocole LDAP et non le protocole LDAPI. Pour une raison quelconque, votre serveur ne sera pas accessible si vous utilisez le protocole LDAPI.

Ensuite, vous êtes invité à fournir le nom distinctif racine de votre serveur LDAP . Si vous n'êtes pas sûr, vous devez exécuter une commande ldapsearch sur le serveur pour obtenir ces informations.

Sur l'écran suivant, il vous est demandé la version de LDAP que vous souhaitez utiliser :choisissez la version 3 de LDAP pour l'instant.

Ensuite, on vous demande si vous voulez faire de la racine locale l'administrateur de la base de données.

Vous voulez taper "Oui" à cette option car vous souhaitez modifier le mot de passe de l'utilisateur directement depuis la machine hôte.

Avec cette option, vous pourrez lancer le « passwd » et faire modifier le mot de passe directement dans l'annuaire LDAP, ce qui est bien pratique.

Par défaut, la base de données LDAP ne nécessite pas de connexion, vous pouvez donc taper "Non" sur cette option.

Remarque :la base LDAP n'a pas de login mais vous avez un compte admin en haut de votre annuaire LDAP. Ce sont deux concepts différents qui sont très différents l'un de l'autre.

Ensuite, saisissez le compte administrateur LDAP à utiliser pour les reliures.

Pour rappel, c'est le compte qui sera utilisé afin d'obtenir les informations de mot de passe utilisateur du serveur.

Enfin, saisissez le mot de passe associé au compte admin sur le serveur LDAP.

C'est fait, vous devriez maintenant pouvoir interroger votre serveur LDAP.

Lier les informations client à LDAP

Afin de lier vos informations client (telles que le nom d'utilisateur et le mot de passe) à l'annuaire LDAP, vous devez modifier le fichier nsswitch.

Pour rappel, le fichier nsswitch est utilisé afin de lier certaines informations de votre système (comme des utilisateurs, des groupes ou des hôtes) à différentes sources (locales, LDAP, NIS ou autres).

Modifiez le fichier /etc/nsswitch.conf et ajoutez une entrée "ldap" aux quatre premières sections :passwd, group, shadow, gshadow.

$ sudo nano /etc/nsswitch.conf

Enregistrez votre fichier et vous devriez maintenant pouvoir répertorier les utilisateurs du serveur LDAP.

$ getent passwd

Remarque :si vous n'êtes pas familier avec la commande getent, voici toutes les commandes utilisées pour lister les utilisateurs sous Linux.

Génial!

Maintenant que votre utilisateur peut être récupéré via LDAP, vous pourrez vous connecter à ce compte en utilisant le mot de passe utilisateur que vous avez spécifié dans l'annuaire LDAP.

$ su - john

<Type password specified in LDAP>

[email protected]:/home/john

Conclusion

Dans ce tutoriel, vous avez appris comment vous pouvez facilement configurer un serveur OpenLDAP simple sur Debian 10 en utilisant l'utilitaire slapd.

Vous avez également découvert les utilitaires LDAP que vous pouvez utiliser pour ajouter et rechercher des entrées dans votre annuaire LDAP.

Enfin, vous avez vu comment configurer les machines clientes afin d'utiliser l'authentification LDAP pour se connecter à vos machines.

Il s'agit d'une architecture utilisable dans la plupart des architectures informatiques d'entreprise :notez que vous devrez mettre en place un cryptage TLS afin que les mots de passe ne soient pas transmis sur le réseau en clair.

Si vous êtes intéressé par l'administration du système Linux, nous avons une section complète qui lui est consacrée sur le site Web, alors assurez-vous de la consulter !


Debian
  1. Comment activer SSH sur Debian 9 ou 10

  2. Comment installer OpenLDAP Server sur Debian ou Ubuntu

  3. Comment configurer le serveur Rsyslog sur Debian 11

  4. Comment installer le serveur Redis sur Debian 11

  5. Comment installer MySQL 8.0 / 5.7 sur Debian 11 / Debian 10

Comment configurer Symfony 4 sur le serveur Debian 9

Comment installer MySQL 8 sur Debian 10

Installer et configurer OpenLDAP sur Ubuntu 16.04 / Debian 8

Comment configurer le serveur NFS sur Debian 9 / Ubuntu 16.04 / LinuxMint 18

Comment installer Todoman sur le serveur Debian 11

Procédure :configuration initiale du serveur Debian 8.2