Vous êtes sur la page 1sur 42

SERVICE D'ANNUAIRE ET D'AUTHENTIFICATION:

Objectifs :

✓ Décrire les différentes entités du service Kerberos 5


✓ Comprendre les termes du service Kerberos 5
✓ Savoir utiliser LDAP comme base de données de Kerberos
✓ Savoir gérer une infrastructure à clé (Pki) (entités TLS, CA, certificats
clients, certificats serveurs, …)
✓ Savoir utiliser SSSD pour gestion des identités centralisées
✓ Pouvoir mettre en œuvre SSSD et LDAP et le coupler à Kerberos
pour l’authentification au lieu de mots de passe simples

1. service annuaire
une annuaire nous permet de stocker des informations ;

Objectifs spécifiques A la fin de ce cours, l’apprenant sera capable de :

1- Donner les cas d’utilisation des annuaires LDAP


o carnet d’adresses;
o annuaire téléphonique;
o répertoire des rues;
o base d’information stockant les utilisateurs d’un système Linux;

2- Faire la différence entre un annuaire LDAP et un SGBD

● Il n ‘y a pas de dépendances entre les objets stockés


● les objets peuvent être distribués sur plusieurs annuaires pour
assurer une meilleure disponibilité
● les applications de l’annuaire n’ont pas besoin de connaître la
structure interne des données stockées ldap

3- Décrire les concepts des annuaires en termes de


a. protocole (communication client-serveur, communication serveur
serveur, format de transport de données, mécanismes de sécurité,
opérations possibles)
b. modèle d’information
c. modèle de nommage
d. modèle fonctionnelle
e. modèle de sécurité
f. mode de duplication
g. des API pour développer des applications clientes
h. de format LDIF d’échange de données
4- Décrire la méthodologie de déploiement d’un annuaire LDAP dans
une organisation
5- Déployer un annuaire LDAP dans une organisation
6- Paramétrer le service NSS autorisant le système Unix à utiliser une
base de données non traditionnelle comme base d’info de manière à
utiliser LDAP
7- Paramétrer le module PAM de gestion de politique d’authentification
UNIX pour utiliser un annuaire LDAP
8- rattacher une branche d’un annuaire distant à son annuaire
9- Déployer et administrer un ensemble de serveurs LDAP redondants

Recherches pour demain sur le module annuaire


● Le dn:
Le Distinguished Name (DN) est un nom distinct qui permet d'identifier de
façon unique une entrée de l'annuaire électronique. Si on en revient à notre
comparaison avec les bases de données relationnelles, cette notion est très
proche de la notion de Primary Key.

● Class d’objet:
est un modèle qui définit les caractéristiques et le comportement d'un type
spécifique d'objet. Les objets sont des instances de classes, et les classes
définissent les propriétés (attributs) et les actions (méthodes) associées à ces
objets.
● Attribut:
Ce sont les variables qui stockent les données associées à un objet. Les attributs
représentent les caractéristiques de l'objet.
● Schéma:
Dans le domaine de l'informatique, le terme schéma est relatif à l'organisation
de données, en particulier dans les annuaires et les bases de données en général.
● Méthode à chaud OLC en ldap:
La méthode à chaud (en anglais "on-the-fly") pour la configuration LDAP (OLC
- OpenLDAP Configuration) permet de modifier la configuration du serveur
LDAP sans nécessiter un redémarrage du service. Cela permet d'apporter des
changements dynamiques, en temps réel, sans interruption de service.

La configuration OLC repose sur le fait que la configuration du serveur LDAP


est stockée dans l'annuaire lui-même, sous une entrée spéciale appelée
cn=config. Cette approche permet d'utiliser le protocole LDAP pour lire et écrire
la configuration du serveur.

● Définition d'un attribut name:

Dans le contexte LDAP, l'attribut "name" n'est pas un attribut standard.


Cependant, les entités dans un annuaire LDAP peuvent avoir des attributs
comme "cn" (Common Name) qui peuvent être assimilés au nom.

● Comparaison entre un annuaire ldap et un SGBD:

1. Structure des Données :

Caractéristique Annuaire LDAP SGBD (Tableaux)

Modèle de Données Arborescence, hiérarchique Relationnel, basé sur des tables

Organisation des Données Entrées et attributs Tables, lignes, colonnes

2 .Langage de Requête :

Caractéristique Annuaire LDAP SGBD (Tableaux)


Langage de LDAP Query Language SQL (Structured Query
Requête (filtrage) Language)

Simplifié pour les


Complexité des Peut être complexe avec des
recherches
Requêtes jointures, des filtres, etc.
hiérarchiques

Caractéristique Annuaire LDAP SGBD (Tableaux)

Utilisation
Gestion des identités, Gestion des données
authentification structurées
Principale

Services d'annuaire, Applications d'entreprise,


Scénarios
authentification stockage de données,
d'Utilisation
d'utilisateurs rapports, etc.

Partie I : installation , configuration et requêtes LDAP

Paquets à installer slapd ldap-utils


si on veut reconfigurer on met la commande suivante:
dpkg-reconfigure nom du paquets
fig:la configuration du domaine

fig: paquet installé


fig:l'état du service

● Création des fichiers ldif pour sauvegarder les comptes sur linux

puis on alimente l’annuaire


# ldapadd -x -D "cn=admin,dc=ec2lt,dc=sn " -W -f docldaf.ldif

fig:alimentation de l’annuaire

Creons le fichier user2.ldif pour créer l’utilisateur bouki


#nano user2.ldif

fig:création de l’utilisateur bouki

Ajoutons bouki dans l’annuaire

fig:ajout de bouki dans l’annuaire

Ajoutons à bouki un numéro de téléphone 776700293


pour cela, on crée le fichier ajout.ldif

fig:

Puis on utilise la commande ldapmodify pour modifier le compte de


bouki

fig:modification du compte bouki


Faisons une recherche pour afficher le nom de famille et le numéro de
téléphone de bouki:

pour afficher les différentes attribut

Historique des commandes qui permet de faire des recherches:

On va essayer de remplacer bouki par maria

On a remplacer bouki par maria


A la fin on aura comme sortie:
on voit bien que bouki est bien remplacer par maria:

Supprimons le compte dont le dn uid=maria,ou=devops,dc=ec2lt,dc=sn

la sortie:
le compte maria a été bien supprimer

Exercice de recherches :

Q 1: Définition d un socket sous Linux


R1:Un socket sous Linux est un mécanisme de communication qui permet
l'échange des données entre des processus.
Q2 : lister l’ensemble des schémas par défaut d' un annuaire ldap
R2:Voici quelques-uns des schémas couramment utilisés dans un annuaire LDAP :

Top (top) : Un objet racine pour toutes les entrées LDAP.

Person (person) : Représente une personne.

OrganizationalPerson (organizationalPerson) : Une extension de la classe


Person avec des attributs organisationnels.

InetOrgPerson (inetOrgPerson) : Une extension de OrganizationalPerson avec


des attributs Internet.

Organization (organization) : Représente une organisation.

OrganizationalUnit (organizationalUnit) : Représente une unité organisationnelle.

GroupOfNames (groupOfNames) : Représente un groupe d'entités avec des noms


distincts.

Domain (dcObject) : Représente un domaine.

Q3 : Ecrire l’ensemble des options des commandes ldapadd,


ldapsearch,ldapmodify,ldapdelete

R3:
Les commandes LDAP telles que ldapadd, ldapsearch, ldapmodify, et ldapdelete
sont utilisées pour manipuler des données dans un annuaire LDAP. Voici un
aperçu des options couramment utilisées pour chacune de ces commandes :

ldapadd
La commande ldapadd est utilisée pour ajouter de nouvelles entrées dans un
annuaire LDAP.

Options courantes :

● -x : Utilise le mode simple. Il s'agit d'une méthode d'authentification simple.


● -D : Spécifie le DN (Distinguished Name) de l'utilisateur pour l'authentification.
● -W : Demande le mot de passe de l'utilisateur lors de l'exécution de la commande.
● -f : Spécifie un fichier LDIF (LDAP Data Interchange Format) contenant les données
à ajouter.
ldapsearch
La commande ldapsearch est utilisée pour rechercher des informations dans un
annuaire LDAP.

Options courantes :

● -x : Utilise le mode simple.


● -D : Spécifie le DN de l'utilisateur pour l'authentification.
● -W : Demande le mot de passe de l'utilisateur.
● -b : Spécifie la base de recherche.
● -s : Spécifie la portée de la recherche (base, un niveau, ou sous-arbre).
● -a : Spécifie le format de sortie (par exemple, base64 ou json).
● -f : Filtre les résultats selon une expression de recherche LDAP.

ldapmodify
La commande dapmodify est utilisée pour modifier des entrées existantes dans
un annuaire LDAP.

Options courantes :

● -x : Utilise le mode simple.


● -D : Spécifie le DN de l'utilisateur pour l'authentification.
● -W : Demande le mot de passe de l'utilisateur.
● -f : Spécifie un fichier LDIF contenant les modifications à apporter.

ldapdelete
La commande ldapdelete est utilisée pour supprimer des entrées de l'annuaire
LDAP.

Options courantes :

● -x : Utilise le mode simple.


● -D : Spécifie le DN de l'utilisateur pour l'authentification.
● -W : Demande le mot de passe de l'utilisateur.
● -r : Supprime récursivement toutes les entrées dans la base spécifiée.

Q4 : Les méthodes utilisées pour communiquer avec un serveur ldap


R4:
Pour communiquer avec un serveur LDAP (Lightweight Directory Access
Protocol), les applications utilisent généralement des bibliothèques ou des API
LDAP. Ces bibliothèques offrent des fonctions et des méthodes pour établir des
connexions, effectuer des opérations de recherche, ajouter, modifier ou
supprimer des entrées dans l'annuaire LDAP

Q5 : définir sasl et montrer son cas d utilisation sur un annuaire ldap


R5:

SASL, qui signifie Simple Authentication and Security Layer, est un framework
d'authentification standardisé permettant aux protocoles de communication de
réaliser des échanges sécurisés sans avoir à modifier le protocole sous-jacent

Utilisation de SASL dans LDAP :

Dans le contexte de LDAP, SASL permet d'ajouter des mécanismes


d'authentification sécurisée au-dessus du protocole LDAP de base

Q6 : faire une étude comparative sur la méthode de configuration de l'


annuaire à plat et la méthode à chaud et donner l’ arborescence
R6:
Généralement, dans le contexte des annuaires et des bases de données, "à plat"
se réfère souvent à une structure simple, tandis que "à chaud" peut faire
référence à des modifications dynamiques en temps réel.

Q7 : décrire le DIT de cn config


R7:
Le DIT est une structure arborescente qui représente l'organisation des données dans
un annuaire LDAP (Lightweight Directory Access Protocol).

Recherche:
● donner la signification de ces différentes règles
Pour plus d’information lisez le document
https://www.openldap.org/doc/admin23/slapdconf2.html

1. Principaux Paramètres du serveur slapd


2. Break et Continue Installons l’utilitaire tree
permettant d’afficher l’arbre d’un dossier

Gestion de clés et certificat

Prérequis:
● Outils de gestion securité : openssl, certtool, tinyca openssl :
clé privée et clé publique
1. Je fixe le nom de mon serveur à mamaec2lt.sn

2. On affiche notre adresse IP

3. On installe les outils de gestion de certificats


Pour cela on va installer le paquet suivant:
#apt install gnutls-bin ssl-cert

4. On génère la clé privée pour l’autorité de Certification


CA
5. On crée le template d’info pour le CA

Une fois là bas on colle ça dans ce fichier

cn = Universite de Dakar
ca cert_signing_key expiration_days = 3650

6. On crée le certificat auto-signé du CA


Fig 1 : Génération du certificat auto-signé du CA

7. On ajoute le nouveau certificat sur la liste des


certificats approuvés par notre machine

8. génération de la clé privé pour notre serveur ldap

fig:génération de la clé privé

9. Création du fichier template pour le certificat du


serveur ldap

root@mama-VirtualBox:/etc/ldap/ldap# nano /etc/ssl/ldaf.info


A l'intérieur on met:
fig:fichier de configuration de ldap

10. Génération du certificat du serveur ldap


certtool --generate-certificate \
--load-privkey /etc/ldap/ldap01_slapd_key.pem \
--load-ca-certificate /etc/ssl/certs/mycacert.pem \
--load-ca-privkey /etc/ssl/private/mycakey.pem \
--template /etc/ssl/ldap01.info \
--outfile /etc/ldap/ldap01_slapd_cert.pem

fig:génération du certificat

11. on change les permissions de la clé privée du serveur


ldap

fig:changement des permissions

Voici le contenu actuel du répertoire /etc/ldap


fig:liste des fichiers

Partie II : Paramétrage du serveur ldap pour qu’il utilise TLS

1. On crée le fichier config.ldif qui sera utilisé pour passer les


paramètres TLS au serveur ldap

2. On ajoute la configuration du serveur au DIT cn=config

fig: Ajout des paramètres de TLS dans le DIT cn=config

3. On active la prise en compte de ldaps par le serveur ldap:


On édite le fichier /etc/default/default pour décommenter et modifier
la ligne.
SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///"
fig:activation de TLS sur le serveur LDAP
On redémarre le serveur ldap

fig:redémarrage et l'état de service

Test de connection TLS


Avant cela, on fait la correspondance entre le nom du serveur
mama.ec2lt.sn et l’adresse IP du serveur qui 192.168.1.102 dans le
fichier /etc/hosts
192.168 .1.102 mama.ec2lt.sn

fig:la correspondance

On édite le fichier du client pour autoriser la connexion via tls ;


fig4 : activation de TLS au niveau client

Test de TLS :

fig:on a vu l'apparition de “anonymous”

fig:résultats 1 de test de certificats


suite des resultat de la commande précédente

On a des informations telles que :


• le nom complet du proprietaire de la clé CN ldap.ist.cf
• la version du protocole TLS ici TLS1.3
• l’algorithme de chiffrement utilisé ici
TLS_AES_256_GCM_SHA384
• la longueur de la clé publique du serveur ici 2048 bit

#ldapsearch -x -D cn=admin,dc=ist,dc=cf -b dc=ist,dc=cf -W -ZZ


fig : Accès à l’annuaire via la connexion ldap

Lançons wireshark en tâche de fond

# wireshark &
Analyse des transactions via l’outil wireshark

fig:on choisit d'écouter sur toutes les interfaces ( any)

On lance une recherche par :


# ldapsearch -x -D cn=admin,dc=ec2lt,dc=sn -b dc=ec2lt,dc=sn -W
-ZZ

fig : on constate des échanges TLS

fig:les données sont chiffrées


On constate que les données sont chiffrées : encrypted application
data

Actualisons la capture:
fig:réactualisées en cliquant sur l’icône verte

testons la recherche dans l’annuaire sans TLS


# ldapsearch -x -D cn=admin,dc=ec2lt,dc=sn -b dc=ec2lt,dc=sn -W

fig:en faisant un filtre sur ldap on voit des données concernant bouki

Ajoutons ZZ pour utiliser TLS


● L’option -ZZ: on sollicite start tls
● ldaps:sollicite tls

# ldapsearch -x -D cn=admin,dc=ist,dc=cf -b dc=ist,dc=cf -W -ZZ


fig: on constate la connexion ldap sur TLS

Les données ne sont pas visibles

Fig : en filtrant sur tls, on constate que les messages ldap sont encapsulés
dans TLS ( voir 2 ème fenêtre de la capture)

NB:
fig:connexion à distance

fig:connexion reussi

On test sur le navigateur sur wireshark


fig: on voit le mot de passe en claire de la machine à distance

Pour se connecter au serveur, le client doit ajouter l’option TLS_RQCERT


allow dans le fichier /etc/ldap/ldap.conf

Connexion avec l’option -ZZ

Connexion avec Ldaps

exercice: trouver un moyen pour que apache exécute le ou.


Partie 3 Quelques cas d’utilisation d’un annuaire LDAP 4.1 :

Accès réglementé à un site web hébergé sous apache


● Installation d’apache2 s’il n’est pas déjà installé

fig:apache est bien installé

● Puis on va dans le dossier du serveur web d’apache2:

fig:sous dossiers d’apache2

Configurons un site virtuel par nom

Rappel du principe de mise en place d’un site virtuel


• on crée le fichier de configuration dans /etc/apache2/sites-available
• on active le site en utilisant la commande a2ensite
• on recharge la configuration du site par la commande systemctl reload
apache2
• si on n’a pas de DNS, on édite le fichier /etc/hosts pour faire la
correspondance entre le nom d’accès au site et l’adresse du serveur web

Mise en oeuvre:
Allons dans le répertoire
/var/www/html

fig:création du page html

fig:voici la page

Création du site virtuel

créons le fichier de configuration de notre site dont le nom d’acces est


:mama.ec2lt.sn

fig:le contenu du site page.conf


Comme on veut utiliser une authentification ldap, il faut activer le
module permettant à apache2 d’utiliser ldap

fig:activation du module ldap

On va redemarre le service apache2

fig:

On fait la correspondance:
#nano /etc/hosts

fig:

On utilise un navigateur pour accéder à l’url:mama.ec2lt.sn

fig:Demande d'authentification
Créons 4 comptes utilisateurs directement à la racine de notre annuaire :

root@mama-VirtualBox:/home/mama# nano /etc/ldap/ldap/mardi.ldif

fig:création des comptes

On va alimenter l’annuaire
fig:on voit les compte creer

Maintenant on va essayer de se connecter

fig:avnt connexion

fig:la connexion a réussi

NB:
On pose la question pourquoi les comptes qui ont été spécifié par
l’unité organisationnelle ’ou’ n’arrivent pas à se connecter?

Pour résoudre cela on se rend dans notre site virtuel ,et modifier le
paramètre “AuthLDAPURL ldap:”

La modification consiste à ajouter une unité organisationnelle qui a ete


definie dans notre annuaire

fig:ajout de “ou=devops” dans le site

Ainsi,cela est faite on pourra se connecter avec les comptes dans “ou”

On test

fig:

L’annuaire peut être dans une autre machine


Preuve:
fig:on a utilisé une autre annuaire

fig:contenu
fig:accès avec un bon mot de passe

fig:affichage du mot de passe


fig:on change ldap par ldaps

fig:on desactive puis activer le site

On test sur le navigateur:


fig:on voit que la page est bien securisé

fig:communication ldap et apache2 sécurisé


fig:

Vous aimerez peut-être aussi