Table des matières
Version : 2021.01
Dernière mise-à-jour : 2021/02/03 14:29
SER701 - Présentation, Installation et Activation d'OpenLDAP
Contenu du Module
- SER701 - Présentation, Installation et Activation d'OpenLDAP
- Contenu du Module
- Présentation
- Qu’est-ce que LDAP ?
- Le Protocole X.500
- LDAP v3
- Comment fonctionne LDAP ?
- Le Modèle d'Information de LDAP
- Les DN et les RDN
- La Structure d’un annuaire LDAP
- Les Attributs
- Les Attributs Utilisateur
- Les Attributs Opérationnels
- Les Classes d'Objets
- Les Types de Classe d'Objets
- Les OID
- Les Schémas de l'Annuaire
- LAB #1 - Installation et Activation du serveur OpenLDAP sous CentOS 7
Présentation
Qu’est-ce que LDAP ?
LDAP est une abbréviation de Lightweight Directory Access Protocol. Comme son nom indique, LDAP est un service d'annuaire.
Un service d'annuaire est une base de données spécialisée optimisée pour la consultation. Certains services d'annuaire peuvent être locaux tandis que d'autres sont appellés distribués. Un bon exemple d'une service d'annuaire distribué est le DNS.
Plusieurs points sont à retenir :
- LDAP est un adaptation TCP/IP du protocole DAP (Directory Access Protocol),
- LDAP et DAP sont des protocoles d'interrogation des annuaires au format X.500,
- LDAP utilise TCP/IP au lieu de parcourir les sept couches du modèle OSI, d'où la notion de Lighweight,
- LDAP emploie une approche client/serveur en mode connecté sur le port 389/tcp,
- LDAPS emploie une approche client/serveur sécurisée via SSL en mode connecté sur le port 636/tcp. Il utilise aussi TLS et SASL,
- LDAP utilise le codage Basic Encoding Rule au lieu d'ASCII. Cette approche consiste en un codage en hexadécimal d'un code en décimal correspondant à une action spécifique. Par exemple, l'opération Search Request correspond au code 63,
- LDAP prévoit la réplication des données :
- La réplication Maître > Esclave appelée push-based ou encore SIR (Server Initiated Replication),
- La réplication Esclave > Maître appelée pull-based ou encore CIR (Consumer Initiated Replication),
Le Protocole X.500
X.500 est un ensemble de normes qui s'appuie sur le modèle OSI :
- X.509 - mécanismes d'authentification par clefs publiques,
- X.511 - services offerts par X.500 tels les recherches et les modifications,
- X.519 - protocoles de communication, y compris le DAP, entre deux serveurs X.500 et entre un client et serveur X.500.
LDAP v3
LDAP est actuellement à la version 3. Cette version est notamment définie par :
Comment fonctionne LDAP ?
Le protocole LDAP définit neuf opérations divisées en trois catégories :
- Accès à l'annuaire - bind, unbind, abandon,
- Interrogation - search, compare,
- Mise à jour - add, delete, modify, modifyDN.
Le Modèle d'Information de LDAP
Le modèle d'information de LDAP est basé sur des entrées :
- L'ensemble des entrées est contenu dans un DIT (Directory Information Tree),
- Chaque entrée représente une instance d'une classe d'objets contenant une collection d'attributs qui possède un nom unique appelé le Distinguished Name et un nom relatif appelé le Relative Distinguished Name.
Deux structures classiques des entrées sont :
- l'organisation géographique
- l'organisation Internet
Les DN et les RDN
Un DN est l'ensemble des RDN des noeuds supérieurs :
- cn=hugh norris,ou=formation,dc=i2tch,dc=com
Un RDN est un couple composé d'un attribut et un valeur, par exemple :
- mail=info@i2tch.com
Dans le cas de plusieurs couples, ceux-ci sont séparés par le caractère + :
- mail=info@i2tch.com+cn=info
Le format des valeurs de attributs ne doit pas contenir :
- Le caractère # ou un espace au début de la chaîne,
- Un espace à la fin de la chaîne.
En plus des ces restrictions, les caractères suivants doivent être protégés par le caractère \ :
- ,
- +
- “
- \
- <
- >
- ;
La Structure d’un annuaire LDAP
Les Attributs
Un attribut est défini par un ensemble d'informations :
- Un ou plusieurs noms,
- Des règles de comparaison telles EQUALITY, ORDERING, SUBSTR,
- Une syntaxe définie par un OID,
- Un indicateur de multivaluation tel SINGLE-VALUE,
- Un indicateur de modification par l'utilisateur tel NO-USER-MODIFICATION,
- Un indicateur d'usage USAGE qui indique le type de l'attribut soit utilisateur ou opérationnel.
Les Attributs Utilisateur
Ce sont des attributs pouvant être modifiés par des utilisateurs ayant le droit d'écriture.
Les Attributs Opérationnels
Ce sont de attributs stockant les information sur le statut de l'annuaire.
Les Classes d'Objets
Une classe d'objets est définie par :
- Un OID,
- Un nom,
- Une hiérarchie de classes supérieurs,
- Un type, soit Abstract, Structural ou Auxiliary,
- Une liste d'attributs obligatoires,
- Une liste d'attributs facultatifs.
Les Types de Classe d'Objets
Le type de classe d'objets peut être :
- Abstract - une classe abstraite dont d'autres classes vont pouvoir hériter,
- Structural - un objet réel. Chaque entrée de l'annuaire n'a qu'une seule classe d'objets structurelle,
- Auxiliary - une classe d'objets auxiliaire qui sert à compléter un objet structurel :
- extensibleObject - ne contenant aucun attribut obligatoire, elle contient en tant qu'attributs facultatifs tous les attributs définis dans le schéma de l'annuaire,
- subschema - ne contenant aucun attribut obligatoire, elle contient l'ensemble des classes d'objets de l'annuaire, les règles de comparaison, les attributs et les syntaxes.
Les OID
Chaque attribut et chaque classe d'objets est décrit par un OID (Oject IDentifier) :
- Les OID sont attibués par IANA (Internet Assigned Numbers Authority),
- LDAP contient les OID suivants :
- 2.5.4 - attributs utilisateurs,
- 2.5.18 - attributs opérationnels,
- 1.3.6.1.4.1.1466.115.121.1 - syntaxe des attributs,
- 2.5.6 - classes d'objets.
Les Schémas de l'Annuaire
Un schéma regroupe les informations suivantes :
- Les classes d'objets,
- Les attributs,
- La syntaxe des attributs,
- Les règles de comparaison.
Un schéma doit contenir au moins une classe d'objets.
Les schémas les plus utilisés sont :
Schéma | Description |
---|---|
core.schema | Obligatoire. Permet de stocker dans l'annuaire les Common Attribute Object Classes. C'est le noyau OpenLDAP. |
cosine.schema | Utile - Permet le support des annuaires cosine et X.500. |
inetorgperson.schema | Utile - Permet de stocker dans l'annuaire les informations concernant les personnes. |
bind.schema | Permet de stocker dans l'annuaire des objets DNS. |
dhcp.schema | Permet de stocker dans l'annuaire des objets DHCP. |
nis.scema | Permet de stocker dans l'annuaire les utilisateurs UNIX et les paramètres associés. |
samba3.schema | Permet l'intégration de samba et LDAP. |
cobra.schema | Permet de stocker dans l'annuaire des objets COBRA (Common Object Broker Request Architecture). |
openldap.schema | Expérimental. Concerne le projet OpenLDAP Project. |
dyngroup.schema | Expérimental. Dynamic Group - utilisé avec le Netscape Enterprise Server. |
collective.schema | Expérimental. Permet de stocker dans l'annuaire des objets collectifs. |
java.schema | Expérimental. Permet de stocker dans l'annuaire des objets java. |
misc.schema | Expérimental. Permet le routage des messages électroniques (emails). |
ppolicy.schema | Expérimental. Schéma de stratégie de mots de passe. |
LAB #1 - Installation et Activation du serveur OpenLDAP sous CentOS 7
Avant d'installer OpenLDAP, passez SELinux en mode permissive :
[root@centos7 ~]# setenforce permissive [root@centos7 ~]# vi /etc/sysconfig/selinux [root@centos7 ~]# cat /etc/sysconfig/selinux # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=permissive # SELINUXTYPE= can take one of three two values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted
Ensuite désactivez le pare feu firewalld :
[root@centos7 ~]# systemctl stop firewalld [root@centos7 ~]# systemctl disable firewalld Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service. [root@centos7 ~]# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1) Jan 10 08:25:43 centos7.fenestros.loc systemd[1]: Starting firewalld - dynamic firewall daemon... Jan 10 08:25:44 centos7.fenestros.loc systemd[1]: Started firewalld - dynamic firewall daemon. Jan 10 12:15:48 centos7.fenestros.loc systemd[1]: Stopping firewalld - dynamic firewall daemon... Jan 10 12:15:48 centos7.fenestros.loc systemd[1]: Stopped firewalld - dynamic firewall daemon.
Pour installer le serveur OpenLDAP sous GNU/Linux ou Unix vous pouvez soit utiliser la version binaire fournie par les dépôts de paquets de votre distribution GNU/Linux ou Unix soit télécharger la dernière version à compiler du site d'OpenLDAP.
Dans notre cas, nous allons installer OpenLDAP à partir des dépôts sur un système RHEL / CentOS. Commencez par mettre à jour le système :
[trainee@centos7 ~]$ su - Mot de passe : fenestros [root@centos7 ~]# yum update ... [root@centos7 ~]# reboot
Puis installez OpenLDAP :
[root@centos7 ~]# yum install openldap-servers openldap-clients openldap
Sous RHEL / CentOS le service OpenLDAP s'appelle slapd. Une vérification de son état démontre qi'il n'est pas activé :
[root@centos7 ~]# systemctl status slapd ● slapd.service - OpenLDAP Server Daemon Loaded: loaded (/usr/lib/systemd/system/slapd.service; disabled; vendor preset: disabled) Active: inactive (dead) Docs: man:slapd man:slapd-config man:slapd-hdb man:slapd-mdb file:///usr/share/doc/openldap-servers/guide.html
Il convient donc d'activer le service sans le démarrer :
[root@centos7 ~]# systemctl enable slapd Created symlink from /etc/systemd/system/multi-user.target.wants/slapd.service to /usr/lib/systemd/system/slapd.service. [root@centos7 ~]# systemctl status slapd ● slapd.service - OpenLDAP Server Daemon Loaded: loaded (/usr/lib/systemd/system/slapd.service; enabled; vendor preset: disabled) Active: inactive (dead) Docs: man:slapd man:slapd-config man:slapd-hdb man:slapd-mdb file:///usr/share/doc/openldap-servers/guide.html
<html>
Copyright © 2020 Hugh Norris.<br><br>
</html>