Nous commencerons cet article en exposant quelques bases de l’LDAP (ce que c’est, où il est utilisé et pourquoi), et montrerons comment configurer un serveur LDAP et configurer un client pour s’authentifier contre celui-ci en utilisant des 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, veuillez garder à l’esprit qu’en raison de l’ampleur du sujet, nous ne couvrirons ici que ses bases, mais vous pouvez vous référer à la documentation indiquée dans le résumé pour plus de détails approfondis.
Pour la même raison, vous noterez que j’ai décidé de laisser de côté plusieurs références aux pages de manuel des outils LDAP pour des raisons de concision, mais les explications correspondantes sont à portée de main (man ldapadd, par exemple).
Cela dit, commençons.
Notre environnement de test
Notre environnement de test se compose de deux machines 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 RHEL 7 en utilisant Kickstart en tant que client.
Qu’est-ce que LDAP?
LDAP signifie Lightweight Directory Access Protocol et consiste en un ensemble de protocoles qui permet à un client d’accéder, via un réseau, à des informations stockées de manière centralisée (telles qu’un répertoire des shells de connexion, des chemins absolus vers les répertoires personnels et d’autres informations utilisateur système typiques, par exemple) qui devraient être accessibles depuis différents endroits ou disponibles à un grand nombre d’utilisateurs finaux (un autre exemple serait un répertoire des adresses personnelles et numéros de téléphone de tous les employés d’une entreprise).
Le fait de conserver de telles informations (et d’autres) de manière centralisée signifie qu’elles peuvent être plus facilement entretenues et accessibles par tous ceux qui ont reçu les autorisations pour les utiliser.
Le diagramme suivant offre un diagramme simplifié de LDAP et est décrit plus en détail ci-dessous :

Explication détaillée du diagramme ci-dessus.
- Une entrée dans un annuaire LDAP représente une unité d’information unique et est identifiée de manière unique par ce qu’on appelle un nom distinctif.
- Un attribut est une information associée à une entrée (par exemple, des adresses, des numéros de téléphone de contact disponibles et des adresses e-mail).
- Chaque attribut se voit assigner une ou plusieurs valeurs constituées d’une liste séparée par des espaces. Une valeur unique par entrée est appelée un nom distinctif relatif.
Cela étant dit, passons à l’installation 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, il y a quelques points à vérifier. Les étapes suivantes doivent être effectuées uniquement sur le serveur, sauf indication contraire :
1. Assurez-vous que SELinux ne gêne pas en activant de manière persistante les booléens suivants, à la fois sur le serveur et le client :
# setsebool -P allow_ypbind=0 authlogin_nsswitch_use_ldap=0
Où allow_ypbind est requis pour l’authentification basée sur LDAP, et authlogin_nsswitch_use_ldap peut être nécessaire pour 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 également :
# systemctl disable slapd.service # systemctl restart slapd.service # systemctl stop slapd.service
3. Comme 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 devrait être propriétaire du répertoire /var/lib/ldap afin que le serveur puisse modifier les entrées créées par des outils d’administration qui ne peuvent être exécutés qu’en tant que root (plus d’informations à ce sujet dans un instant).
Avant de changer la propriété de ce répertoire de manière récursive, copiez le fichier de configuration de base de données d’exemple pour slapd à l’intérieur :
# 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 indiqué dans 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ù :
- MOTDEPASSE est la chaîne hachée obtenue précédemment.
- cn=config indique les options de configuration globale.
- olcDatabase indique le nom d’une instance de base de données spécifique et peut généralement être trouvé à l’intérieur de /etc/openldap/slapd.d/cn=config.
En vous référant au fond 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 un couple attribut : valeur (où dn, changetype, add et olcRootPW sont les attributs et les chaînes situées à droite de chaque deux-points sont leurs valeurs correspondantes).
Vous voudrez peut-être garder cela à l’esprit alors que nous avançons davantage, et veuillez noter que nous utilisons les mêmes Noms Communs (cn=)
tout au long de cet article, où chaque étape dépend de la précédente.
5. Maintenant, ajoutez 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
La sortie devrait être similaire à :

et importer quelques définitions LDAP de base à partir du 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. Faites en sorte que LDAP utilise 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 Domain Component dc=) et le mot de passe comme il convient :
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
# ldapmodify -H ldapi:/// -f ldapdomain.ldif

7. Il est maintenant temps d’ajouter des entrées à notre annuaire LDAP. Les attributs et les valeurs sont séparés par un 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 pour 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
où 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 pour 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. Autorisez la communication à travers le pare-feu:
# firewall-cmd --add-service=ldap
11. Enfin, mais non des moindres, autorisez le client à s’authentifier en utilisant LDAP.
Pour nous aider dans cette dernière étape, nous utiliserons l’utilitaire authconfig (une interface pour configurer les ressources d’authentification système).
En utilisant la commande suivante, le répertoire personnel de l’utilisateur demandé est créé s’il n’existe pas après que l’authentification contre le serveur LDAP a réussi:
# authconfig --enableldap --enableldapauth --ldapserver=rhel7.mydomain.com --ldapbasedn="dc=mydomain,dc=com" --enablemkhomedir --update

Résumé
Dans cet article, nous avons expliqué comment configurer une authentification de base contre un serveur LDAP. Pour configurer davantage le setup décrit dans le guide actuel, veuillez vous référer au Chapitre 13 – Configuration LDAP dans le guide de l’administrateur système RHEL 7, en portant une attention particulière aux paramètres de sécurité utilisant le TLS.
N’hésitez pas à poser vos questions en utilisant le formulaire de commentaire ci-dessous.
Source:
https://www.tecmint.com/setup-ldap-server-and-configure-client-authentication/