Recherche de site Web

Comment installer le serveur OpenLDAP pour l'authentification centralisée


Le Lightweight Directory Access Protocol (LDAP en abrégé) est un ensemble de protocoles standard, léger et largement utilisé pour accéder aux services d'annuaire. Un service d'annuaire est une infrastructure d'informations partagée permettant d'accéder, de gérer, d'organiser et de mettre à jour les éléments quotidiens et les ressources réseau, tels que les utilisateurs, les groupes, les appareils, les adresses e-mail, les numéros de téléphone, les volumes et de nombreux autres objets.

Le modèle d'information LDAP est basé sur des entrées. Une entrée dans un annuaire LDAP représente une unité ou une information unique et est identifiée de manière unique par ce que l'on appelle un Nom distinctif (DN). Chacun des attributs de l’entrée a un type et une ou plusieurs valeurs.

Un attribut est une information associée à une entrée. Les types sont généralement des chaînes mnémoniques, telles que « cn » pour le nom commun ou « mail » pour l'adresse e-mail. Chaque attribut se voit attribuer une ou plusieurs valeurs constituées dans une liste séparée par des espaces.

Ce qui suit est une illustration de la manière dont les informations sont organisées dans l'annuaire LDAP.

Dans cet article, nous montrerons comment installer et configurer le serveur OpenLDAP pour une authentification centralisée dans Ubuntu 16.04/18.04 et CentOS 7.

Étape 1 : Installation du serveur LDAP

1. Commencez par installer OpenLDAP, une implémentation open source de LDAP et certains utilitaires de gestion LDAP traditionnels à l'aide des commandes suivantes.

yum install openldap openldap-servers	    #CentOS 7
sudo apt install slapd ldap-utils	    #Ubuntu 16.04/18.04

Sur Ubuntu, lors de l'installation du package, vous serez invité à saisir le mot de passe de l'entrée admin dans votre annuaire LDAP, à définir un mot de passe sécurisé et à le confirmer.

Une fois l'installation terminée, vous pouvez démarrer le service comme expliqué ci-dessous.

2. Sur CentOS 7, exécutez les commandes suivantes pour démarrer le démon du serveur openldap, activez-le pour démarrer automatiquement au démarrage et vérifiez si il est opérationnel (sur Ubuntu, le service doit être démarré automatiquement sous systemd, vous pouvez simplement vérifier son statut) :

sudo systemctl start slapd
sudo systemctl enable slapd
sudo systemctl status slapd

3. Ensuite, autorisez les requêtes adressées au démon du serveur LDAP via le pare-feu, comme indiqué.

firewall-cmd --add-service=ldap    #CentOS 7
sudo ufw allow ldap                #Ubuntu 16.04/18.04

Étape 2 : configuration du serveur LDAP

Remarque : Il n'est pas recommandé de modifier manuellement la configuration LDAP, vous devez ajouter les configurations dans un fichier et utiliser le ldapadd ou < commandeldapmodify pour les charger dans l'annuaire LDAP comme indiqué ci-dessous.

4. Créez maintenant un utilisateur administratif OpenLDAP et attribuez un mot de passe à cet utilisateur. Dans la commande ci-dessous, une valeur hachée est créée pour le mot de passe donné, prenez-en note, vous l'utiliserez dans le fichier de configuration LDAP.

slappasswd

5. Créez ensuite un fichier LDIF (ldaprootpasswd.ldif) qui permet d'ajouter une entrée à l'annuaire LDAP.

sudo vim ldaprootpasswd.ldif

Ajoutez-y le contenu suivant :

dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}PASSWORD_CREATED

expliquant les paires attribut-valeur ci-dessus :

  • olcDatabase : indique un nom d'instance de base de données spécifique et se trouve généralement dans /etc/openldap/slapd.d/cn=config.
  • cn=config : indique les options de configuration globales.
  • MOT DE PASSE : est la chaîne hachée obtenue lors de la création de l'utilisateur administratif.

6. Ensuite, ajoutez l'entrée LDAP correspondante en spécifiant l'URI faisant référence au serveur ldap et au fichier ci-dessus.

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f ldaprootpasswd.ldif  

Étape 3 : Configuration de la base de données LDAP

7. Copiez maintenant l'exemple de fichier de configuration de base de données pour slapd dans le répertoire /var/lib/ldap et définissez les autorisations appropriées sur le fichier. .

sudo cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
sudo chown -R ldap:ldap /var/lib/ldap/DB_CONFIG
sudo systemctl restart slapd

8. Ensuite, importez quelques schémas LDAP de base à partir du répertoire /etc/openldap/schema comme suit.

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif 
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

9. Ajoutez maintenant votre domaine dans la base de données LDAP et créez un fichier appelé ldapdomain.ldif pour votre domaine.

sudo vim ldapdomain.ldif 

Ajoutez-y le contenu suivant (remplacez exemple par votre domaine et MOT DE PASSE par la valeur hachée obtenue auparavant) :

dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
  read by dn.base="cn=Manager,dc=example,dc=com" read by * none

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=example,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=example,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}PASSWORD

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by
  dn="cn=Manager,dc=example,dc=com" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=example,dc=com" write by * read

10. Ajoutez ensuite la configuration ci-dessus à la base de données LDAP avec la commande suivante.

sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f ldapdomain.ldif

11. Dans cette étape, nous devons ajouter quelques entrées à notre répertoire LDAP. Créez un autre fichier appelé baseldapdomain.ldif avec le contenu suivant.

dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: example com
dc: example

dn: cn=Manager,dc=example,dc=com
objectClass: organizationalRole
cn: Manager
description: Directory Manager

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

dn: ou=Group,dc=example,dc=com
objectClass: organizationalUnit
ou: Group 

Enregistrez le fichier, puis ajoutez les entrées au répertoire LDAP.

sudo ldapadd -Y EXTERNAL -x -D cn=Manager,dc=example,dc=com -W -f baseldapdomain.ldif

12. L'étape suivante consiste à créer un utilisateur LDAP pour exemple, tecmint, et à définir un mot de passe pour cet utilisateur comme suit.

sudo useradd tecmint
sudo passwd tecmint

13. Créez ensuite les définitions d'un groupe LDAP dans un fichier appelé ldapgroup.ldif avec le contenu suivant.

dn: cn=Manager,ou=Group,dc=example,dc=com
objectClass: top
objectClass: posixGroup
gidNumber: 1005

Dans la configuration ci-dessus, gidNumber est le GID dans /etc/group pour tecmint et ajoutez-le à OpenLDAP annuaire.

sudo ldapadd -Y EXTERNAL -x  -W -D "cn=Manager,dc=example,dc=com" -f ldapgroup.ldif

14. Ensuite, créez un autre fichier LDIF appelé ldapuser.ldif et ajoutez les définitions de l'utilisateur tecmint.

dn: uid=tecmint,ou=People,dc=example,dc=com
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: tecmint
uid: tecmint
uidNumber: 1005
gidNumber: 1005
homeDirectory: /home/tecmint
userPassword: {SSHA}PASSWORD_HERE
loginShell: /bin/bash
gecos: tecmint
shadowLastChange: 0
shadowMax: 0
shadowWarning: 0

puis chargez la configuration dans l'annuaire LDAP.

ldapadd -Y EXTERNAL  -x -D cn=Manager,dc=example,dc=com -W -f  ldapuser.ldif

Une fois que vous avez configuré un serveur central pour l'authentification, la dernière partie consiste à permettre au client de s'authentifier à l'aide de LDAP comme expliqué dans ce guide :

  1. Comment configurer le client LDAP pour connecter l'authentification externe

Pour plus d'informations, consultez la documentation appropriée du catalogue de documents du logiciel OpenLDAP et les utilisateurs d'Ubuntu peuvent se référer au guide du serveur OpenLDAP.

Résumé

OpenLDAP est une implémentation open source de LDAP sous Linux. Dans cet article, nous avons montré comment installer et configurer le serveur OpenLDAP pour une authentification centralisée, sous Ubuntu 16.04/18.04 et CentOS 7. Si vous avez une question ou une réflexion à partager, n'hésitez pas à nous contacter via le formulaire de commentaire ci-dessous.