Recherche de site Web

Série RHCSA : Configuration de l'authentification basée sur LDAP dans RHEL 7 - Partie 14


Nous commencerons cet article en décrivant quelques principes de base de LDAP (qu'est-ce que c'est, où il est utilisé et pourquoi) et montrerons comment configurer un serveur LDAP et configurer un client pour qu'il s'authentifie auprès de lui à l'aide de Systèmes Red Hat Enterprise Linux 7.

Comme nous le verrons, il existe plusieurs autres scénarios d'application possibles, mais dans ce guide, nous nous concentrerons entièrement sur l'authentification basée sur LDAP. De plus, gardez à l’esprit qu’en raison de l’immensité du sujet, nous n’aborderons ici que les bases, mais vous pouvez vous référer à la documentation présentée dans le résumé pour des détails plus approfondis.

Pour la même raison, vous remarquerez que j'ai décidé de laisser de côté plusieurs références aux pages de manuel des outils LDAP par souci de concision, mais les explications correspondantes sont à portée de main (man ldapadd, pour exemple).

Cela dit, commençons.

Notre environnement de test

Notre environnement de test se compose de deux boîtiers RHEL 7 :


Server: 192.168.0.18. FQDN: rhel7.mydomain.com
Client: 192.168.0.20. FQDN: ldapclient.mydomain.com

Si vous le souhaitez, vous pouvez utiliser la machine installée dans la partie 12 : Automatiser les installations de RHEL 7 en utilisant Kickstart comme client.

Qu’est-ce que LDAP ?

LDAP signifie Lightweight Directory Access Protocol et consiste en un ensemble de protocoles qui permettent à un client d'accéder, via un réseau, à des informations stockées de manière centralisée (telles qu'un répertoire de shells de connexion , chemins absolus vers les répertoires personnels et autres informations typiques des utilisateurs du système, par exemple) qui doivent être accessibles à partir de différents endroits ou disponibles pour un grand nombre d'utilisateurs finaux (un autre exemple serait un répertoire des adresses personnelles et des numéros de téléphone de tous les employés de une entreprise).

Le fait de conserver ces informations (et bien d’autres) de manière centralisée signifie qu’elles peuvent être plus facilement conservées et accessibles à toute personne ayant reçu l’autorisation de les utiliser.

Le diagramme suivant propose un diagramme simplifié de LDAP et est décrit ci-dessous plus en détail :

Explication détaillée du schéma ci-dessus.

  1. 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.
  2. Un attribut est un élément d'information associé à une entrée (par exemple, les adresses, les numéros de téléphone des contacts disponibles et les adresses e-mail).
  3. Chaque attribut se voit attribuer une ou plusieurs valeurs constituées d'une liste séparée par des espaces. Une valeur unique par entrée est appelée nom distinctif relatif.

Cela étant dit, procédons aux installations du serveur et du client.

Installation et configuration d'un serveur et d'un client LDAP

Dans RHEL 7, LDAP est implémenté par OpenLDAP. Pour installer le serveur et le client, utilisez respectivement les commandes suivantes :


yum update && yum install openldap openldap-clients openldap-servers
yum update && yum install openldap openldap-clients nss-pam-ldapd

Une fois l’installation terminée, nous examinons certaines choses. Les étapes suivantes doivent être effectuées sur le serveur uniquement, sauf indication contraire :

1. Assurez-vous que SELinux ne gêne pas en activant les booléens suivants de manière persistante, à la fois sur le serveur et sur le client :


setsebool -P allow_ypbind=0 authlogin_nsswitch_use_ldap=0

allow_ypbind est requis pour l'authentification basée sur LDAP, et authlogin_nsswitch_use_ldap peut être nécessaire par certaines applications.

2. Activez et démarrez le service :


systemctl enable slapd.service
systemctl start slapd.service

Gardez à l’esprit que vous pouvez également désactiver, redémarrer ou arrêter le service avec systemctl :


systemctl disable slapd.service
systemctl restart slapd.service
systemctl stop slapd.service

3. Étant donné que le service slapd s'exécute en tant qu'utilisateur ldap (ce que vous pouvez vérifier avec ps -e -o pid,uname,comm | grep slapd ), cet utilisateur doit posséder le répertoire /var/lib/ldap pour que le serveur puisse modifier les entrées créées par les outils d'administration qui ne peuvent être exécutés qu'en tant que root (plus d'informations à ce sujet dans un minute).

Avant de modifier la propriété de ce répertoire de manière récursive, copiez-y l'exemple de fichier de configuration de base de données pour slapd :


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

4. Configurez un utilisateur administratif OpenLDAP et attribuez un mot de passe :


slappasswd

comme le montre l'image suivante :

et créez un fichier LDIF (ldaprootpasswd.ldif) avec le contenu suivant :


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

où :

  1. MOT DE PASSE est la chaîne hachée obtenue précédemment.
  2. cn=config indique les options de configuration globales.
  3. 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.

En référence au contexte théorique fourni précédemment, le fichier ldaprootpasswd.ldif ajoutera une entrée au répertoire LDAP. Dans cette entrée, chaque ligne représente une paire attribut : valeur (où dn, changetype, add et olcRootPW sont les attributs et les chaînes à droite de chaque deux-points sont leurs valeurs correspondantes).

Vous voudrez peut-être garder cela à l'esprit au fur et à mesure que nous avancerons, et veuillez noter que nous utilisons les mêmes noms communs (cn=) dans le reste de cet article, où chaque étape dépend de la précédente. .

5. Ajoutez maintenant l'entrée LDAP correspondante en spécifiant l'URI faisant référence au serveur ldap, où seuls les champs protocole/hôte/port sont autorisés.


ldapadd -H ldapi:/// -f ldaprootpasswd.ldif 

Le résultat devrait être similaire à :

et importez quelques définitions LDAP de base depuis le répertoire /etc/openldap/schema :


for def in cosine.ldif nis.ldif inetorgperson.ldif; do ldapadd -H ldapi:/// -f /etc/openldap/schema/$def; done

6. Demandez à LDAP d'utiliser votre domaine dans sa base de données.

Créez un autre fichier LDIF, que nous appellerons ldapdomain.ldif, avec le contenu suivant, en remplaçant votre domaine (dans le composant de domaine dc=) et votre mot de passe, le cas échéant :


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=mydomain,dc=com" read by * none

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

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=mydomain,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=mydomain,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=mydomain,dc=com" write by * read

Chargez-le ensuite comme suit :


ldapmodify -H ldapi:/// -f ldapdomain.ldif

7. Il est maintenant temps d'ajouter quelques entrées à notre annuaire LDAP. Les attributs et les valeurs sont séparés par deux points (:) dans le fichier suivant, que nous nommerons baseldapdomain.ldif :


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

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

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

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

Ajoutez les entrées à l'annuaire LDAP :


ldapadd -x -D cn=Manager,dc=mydomain,dc=com -W -f baseldapdomain.ldif

8. Créez un utilisateur LDAP appelé ldapuser (adduser ldapuser), puis créez les définitions d'un groupe LDAP dans ldapgroup.ldif.


adduser ldapuser
vi ldapgroup.ldif

Ajoutez le contenu suivant.


dn: cn=Manager,ou=Group,dc=mydomain,dc=com
objectClass: top
objectClass: posixGroup
gidNumber: 1004

gidNumber est le GID dans /etc/group pour ldapuser) et chargez-le :


ldapadd -x -W -D "cn=Manager,dc=mydomain,dc=com" -f ldapgroup.ldif

9. Ajoutez un fichier LDIF avec les définitions de l'utilisateur ldapuser (ldapuser.ldif) :


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

et chargez-le :


ldapadd -x -D cn=Manager,dc=mydomain,dc=com -W -f ldapuser.ldif

De même, vous pouvez supprimer l'entrée utilisateur que vous venez de créer :


ldapdelete -x -W -D cn=Manager,dc=mydomain,dc=com "uid=ldapuser,ou=People,dc=mydomain,dc=com"

10. Autoriser la communication via le pare-feu :


firewall-cmd --add-service=ldap

11. Enfin, permettez au client de s'authentifier à l'aide de LDAP.

Pour nous aider dans cette dernière étape, nous utiliserons l'utilitaire authconfig (une interface de configuration des ressources d'authentification du système).

À l'aide de la commande suivante, le répertoire personnel de l'utilisateur demandé est créé s'il n'existe pas une fois l'authentification réussie sur le serveur LDAP :


authconfig --enableldap --enableldapauth --ldapserver=rhel7.mydomain.com --ldapbasedn="dc=mydomain,dc=com" --enablemkhomedir --update

Résumé

Dans cet article, nous avons expliqué comment configurer l'authentification de base sur un serveur LDAP. Pour configurer davantage la configuration décrite dans le présent guide, veuillez vous référer au Chapitre 13 – Configuration LDAP du guide de l'administrateur système RHEL 7, en accordant une attention particulière aux paramètres de sécurité utilisant TLS.

N'hésitez pas à poser toutes vos questions en utilisant le formulaire de commentaires ci-dessous.