Administration de Réseaux Informatiques
- Open Source-
Configurer un service d'annuaire LDAP.
Introduction
C’est quoi un annuaire électronique ?
Un annuaire électronique est une solution permettant la création
d'une collection d'objets. Dans les réseaux, les annuaires
permettent à l'échelle d'une entreprise de déclarer tous les objets
(utilisateurs, applications, équipements matériels...), et pour
chaque objet de définir ses propriétés (attributs).
Introduction
LDAP (Light Directory Access Protocol) est un service d'annuaire
dérivé de la norme X.500. La norme X.500 est très lourde, LDAP
en est une version allégée ("light").
Introduction
Un serveur LDAP permet de centraliser des informations très diverses. Il offre de nombreux
avantages :
• un serveur d'annuaire (recensement de tous les objets d'un système) : c'est la fonction la plus
connue.
• Information sur les utilisateurs (nom, prénom...), et données d'authentification pour les utilisateurs :
cela permet aussi la définition de droits.
• Information pour les applications clientes et fonctions de serveur d'accès itinérant : cela permet de
stocker ses informations personnelles sur un serveur et de les récupérer lors de la connexion;
• bien d'autres choses...
Le modèle de données
LDAP fournit un modèle d'organisation des données. Ces
données sont organisées sous forme hiérarchique. L'arbre est
nommé Directory Information Tree (DIT). Le sommet (racine),
contient le "suffixe". Chaque noeud représente une "entrée" ou
"Directory Entry Service" (DSE). Les données sont stockées sur un
format de base de données hiérarchique de type "dbm".
Le modèle de données
Une entrée (DSE) dans le DIT correspond à un objet abstrait
(organisation, ressource) ou concret (personne, équipement...).
Les objets possèdent une description dans une "classe d'objet".
Une classe d'objet donne une représentation modélisée des
objets qu'elle représente en caractérisant tous les attributs des
objets.
Le modèle de données
Entrées
Chaque entrée correspond à une seule unité (objet) dans un répertoire LDAP.
Chaque entré est identifié de manière unique par sont nom distinctif ou DN
(Distinguished Name).
Attributs
Les entrées peuvent êtres considérés comme des objets possédant certains
attributs. Par exemple, un employé pourrait être représenté par une entrée
LDAP. Parmi les attributs associé à un employé on pourrait retrouvé le nom, le
prénom, l’âge… Il est possible de définir des attributs obligatoire et optionnel.
Classes d'objet
On regroupe les objets qui sont du même domaine dans une classe d'objet, celle-ci est caractérisée
par des attributs obligatoires ou optionnels et un type. Les types de classe d'objet sont:
• type structurel : classes d'objets concrets de l'annuaire (personnes, groupes de personnes, ...).
• type auxiliaire : classes d'objets permettant d’ajouter des informations (attributs)
supplémentaires à des classes d'objet de type structurel déjà existantes.
• type abstraire : classes d'objet qui existent par défaut et qui n'ont pas de signification concrète,
par exemple la classe top est la classe d'objet générique, toutes les autres 0classes dérivent de cette
classe.
Schémas
Un schéma décrit toutes les règles qu'utilisent le serveur LDAP pour décrire les
classes d'objets (attributs, syntaxe, ...).
Fichiers de configuration
Les fichiers de configuration des serveurs OpenLDAP se trouvent dans
/etc/openldap/slapd.d/.
Utiliser la commande ldapmodify pour pousser la configuration sur le
serveur /etc/openldap/slapd.d (Ces fichiers ne peuvent pas être modifié
manuellement)
Le format d'échange de donnée LDIF
Le format d'échange permet l'import/export de données des bases, mais sert
également pour l'ajout ou la modification. Les données sont en ASCII codées
en UTF-8, sauf pour le binaire qui est codé en base64 (images par exemple).
Le format d'échange de donnée LDIF
Syntaxe générale :
dn: <distinguished name
objectClass: <object class
objectClass: <object class
...
<attribute type:<attribute value
<attribute type:<attribute value
...
Exemple :
dn: cn= Manon Des Sources, ou= compta, dc=mydomain, dc=org
objectClass: person
objectClass: organization
cn: user1 USER1
sn: USER1
givenName: AM
userPassword: {sha}KDIE3AL9DK
Configuration openldap
Le premier fichier va mettre à jour les variables
olcSuffix ,il s'agit du nom de domaine pour lequel le serveur LDAP fournit les
informations. En termes simples, il devrait être changé pour votre domaine.
olcRootDN , Entrée Distinguished Name (DN) racine pour l'utilisateur qui a
l'accès illimité pour effectuer toutes les activités d'administration sur LDAP,
comme un utilisateur root.
olcRootPW , Mot de passe pour le RootDN ci-dessus.
Configuration openldap
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=2tri,dc=local
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=ldapadm,dc=2tri,dc=local
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Configuration openldap
Pousser ensuite la configuration:
ldapmodify -Y EXTERNAL -H ldapi:/// -f [Link]
Configuration openldap
Restreindre ensuite l’accès au compte utilisateur ldapadm:
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by
[Link]="gidNumber=0+uidNumber=0,cn=peercred,cn=external,
cn=auth" read by [Link]="cn=ldapadm,dc=2tri,dc=local" read by * none
Configuration openldap
Pousser ensuite le changement:
ldapmodify -Y EXTERNAL -H ldapi:/// -f [Link]
Configuration openldap
Dans l’ordre, afin de sécuriser la communication avec votre serveur
LDAP, vous avez besoin d’un certificat et de sa clé privé.
Vous pouvez l’obtenir via votre administrateur de votre PKI de
l’environnement de production.
Mais le certificat auto signé et sa clé privé peuvent être créé dans
l’environnement de développement
Configuration openldap
Nous pouvons maintenant faire la configuration initial de la base de donnée
LDAP
Premièrement copier le fichier d’exemple de configuration de la base de donnée
dans /var/lib/ldap puis mettre à jour les fichiers de permissions
1. cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
2. chown ldap:ldap /var/lib/ldap/*
Configuration openldap
Ensuite ajouter les schémas cosine et LDAP
1. ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/[Link]
2. ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/[Link]
3. ldapadd -Y EXTERNAL -H ldapi:/// -f
/etc/openldap/schema/inetorgperson
Configuration openldap
Enfin, générer le fichier de base ldif pour votre domaine
dn: dc=test,dc=2tri,dc=local
dc: field
objectClass: top
objectClass: domain
dn: cn=ldapadm,dc=test,dc=2tri,dc=local
objectClass: organizationalRole
cn: ldapadm
description: LDAP Manager
dn: ou=People,dc=test,dc=2tri,dc=local
objectClass: organizationalUnit
ou: People
dn: ou=Group,dc=test,dc=2tri,dc=local
objectClass: organizationalUnit
ou: Group
Configuration openldap
Poussez maintenant le changement pour OpenLdap en utilisant le compte
utilisateur ldapadm :
. ldapadd -x -W -D "cn=ldapadm,dc=test,dc=2tri,dc=local" -f [Link]
On vous demande ensuite le mot de passe root
TP