👤 C3.2.1 — Annuaires LDAP & AD · Séance 1/2
| Formation | BTS SIO option SISR — IRIS Mediaschool |
|---|---|
| Bloc | B3 — Cybersécurité des services informatiques |
| Module | M3.2 — Identité numérique et authentification |
| Cours | C3.2.1 — Gestion des identités et des comptes · Séance 1/2 |
| Compétence | B3.2 — Préserver l'identité numérique de l'organisation |
| Durée | 3h30 (10 min intro + 45 min LDAP + 30 min AD + 85 min TP + 10 min synthèse) |
| Contexte PME | InnovatTech SARL — Windows Server 2022 AD, 2 serveurs Debian 12, pfSense, NAS Synology |
Accroche (10 min)
Imaginez la situation suivante chez InnovatTech : chaque collaborateur utilise le même mot de passe pour son poste, sa messagerie et l'ERP. Les administrateurs ont créé 3 comptes différents par personne. Un employé quitte l'entreprise et, 6 mois plus tard, on découvre que son compte local VPN était toujours actif. Ce désordre provoque une perte de visibilité et des risques de fuite. L'annuaire centralisé est la réponse à ce chaos : une seule source de vérité pour l'authentification, l'autorisation et les informations de contact.
Section 1 — LDAP et OpenLDAP (~45 min)
Qu'est-ce qu'un annuaire ?
Un annuaire est un service optimisé pour la lecture d'informations structurées sur des objets (personnes, groupes, équipements). Le protocole LDAP (Lightweight Directory Access Protocol, RFC 4510) définit la manière standard d'interroger et modifier ces annuaires.
Structure DIT et Distinguished Name
Un annuaire LDAP est organisé en arbre hiérarchique appelé DIT (Directory Information Tree). Chaque entrée possède un DN (Distinguished Name) unique, formé d'une succession de RDN (Relative Distinguished Names) :
uid=lmartin,ou=commercial,dc=innovattech,dc=fr
Classes d'objets courantes
| Classe | Usage | Attributs clés |
|---|---|---|
inetOrgPerson | Comptes utilisateurs | uid, cn, sn, givenName, mail, userPassword |
organizationalUnit | Unités organisationnelles (OU) | ou, description |
groupOfNames | Groupes de membres | cn, member |
Commandes LDAP essentielles
# Rechercher tous les utilisateurs
ldapsearch -x -LLL -H ldap://localhost -b "dc=innovattech,dc=fr" "(objectClass=inetOrgPerson)"
# Sortie attendue :
# dn: uid=lmartin,ou=commercial,dc=innovattech,dc=fr
# cn: Léa Martin
# mail: lmartin@innovattech.fr
# Ajouter une entrée depuis un fichier LDIF
ldapadd -x -H ldap://localhost -D "cn=admin,dc=innovattech,dc=fr" -W -f utilisateur.ldif
# Sortie attendue : adding new entry 'uid=lmartin,ou=commercial,dc=innovattech,dc=fr'
# Modifier un attribut
ldapmodify -x -H ldap://localhost -D "cn=admin,dc=innovattech,dc=fr" -W -f modif.ldif
# Générer un mot de passe haché pour OpenLDAP
slappasswd -s "MotDePasse1!"
# Sortie : {SSHA}X5... (à utiliser dans userPassword)
Exemple de fichier LDIF — Créer un utilisateur
dn: uid=lmartin,ou=commercial,dc=innovattech,dc=fr
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: lmartin
cn: Léa Martin
sn: Martin
givenName: Léa
mail: lmartin@innovattech.fr
userPassword: {SSHA}VotreHashSlappasswd
Section 2 — Active Directory (~30 min)
Active Directory repose sur LDAP mais enrichit ce socle avec :
- Kerberos : authentification par tickets (évite la transmission du mot de passe)
- DNS intégré : résolution interne des noms
- GPO (Group Policy Objects) : configuration centralisée des postes
- Réplication multi-DC : haute disponibilité
Kerberos vs NTLM
| Critère | Kerberos | NTLM |
|---|---|---|
| Transmission du mot de passe | ❌ Jamais sur le réseau | ⚠️ Hash NTLM peut être intercepté |
| Mécanisme | Tickets TGT + tickets de service signés | Challenge/réponse |
| Tickets temporels | ✅ Limités dans le temps (réduit la fenêtre d'exploitation) | ❌ Pas de notion de validité temporelle |
| Recommandé | ✅ Oui — systèmes modernes Windows | ⚠️ Héritage uniquement |
Commandes PowerShell AD
# Créer un utilisateur AD
New-ADUser -Name "Léa Martin" -SamAccountName "lmartin" `
-UserPrincipalName "lmartin@innovattech.fr" `
-AccountPassword (ConvertTo-SecureString "MotDePasse1!" -AsPlainText -Force) `
-Enabled $true
# Lister les membres d'un groupe
Get-ADGroupMember -Identity "Commerciaux" | Select-Object Name, SamAccountName
# Désactiver un compte (départ employé)
Disable-ADAccount -Identity "mdupont"
# Vérifier les dernières connexions
Get-ADUser -Filter * -Properties LastLogonDate | `
Sort-Object LastLogonDate -Descending | `
Select-Object Name, LastLogonDate | `
Select-Object -First 10
Les rôles FSMO (Flexible Single Master Operations) uniques dans AD : Schema Master, Domain Naming Master, RID Master, PDC Emulator, Infrastructure Master. Ils doivent être surveillés et documentés pour la haute disponibilité.
TP — Déployer OpenLDAP et créer la structure InnovatTech (85 min)
Scénario : InnovatTech n'a pas d'annuaire centralisé. Votre mission : déployer OpenLDAP sur debian-srv01, créer la structure (4 OUs), ajouter 5 utilisateurs et 2 groupes.
Étape 1 — Installer OpenLDAP
sudo apt update && sudo apt install -y slapd ldap-utils
sudo dpkg-reconfigure slapd
# DNS domain: innovattech.fr | Organisation: InnovatTech | Admin password: (choisir)
Étape 2 — Vérifier l'installation
ldapsearch -x -LLL -H ldap://localhost -b "dc=innovattech,dc=fr"
Étape 3 — Créer les OUs (structure.ldif)
dn: ou=direction,dc=innovattech,dc=fr
objectClass: organizationalUnit
ou: direction
dn: ou=commercial,dc=innovattech,dc=fr
objectClass: organizationalUnit
ou: commercial
dn: ou=technique,dc=innovattech,dc=fr
objectClass: organizationalUnit
ou: technique
dn: ou=prestataires,dc=innovattech,dc=fr
objectClass: organizationalUnit
ou: prestataires
ldapadd -x -H ldap://localhost -D "cn=admin,dc=innovattech,dc=fr" -W -f structure.ldif
Étape 4 — Créer 5 utilisateurs (utilisateurs.ldif)
dn: uid=lmartin,ou=commercial,dc=innovattech,dc=fr
objectClass: inetOrgPerson
uid: lmartin
cn: Léa Martin
sn: Martin
mail: lmartin@innovattech.fr
userPassword: {SSHA}(généré par slappasswd)
ldapadd -x -H ldap://localhost -D "cn=admin,dc=innovattech,dc=fr" -W -f utilisateurs.ldif
Étape 5 — Créer 2 groupes (groupes.ldif)
dn: cn=techniciens,ou=technique,dc=innovattech,dc=fr
objectClass: groupOfNames
cn: techniciens
member: uid=adupond,ou=technique,dc=innovattech,dc=fr
member: uid=carnoux,ou=technique,dc=innovattech,dc=fr
Étape 6 — Vérifier la structure finale
# Vérifier les OUs
ldapsearch -x -LLL -H ldap://localhost -b "dc=innovattech,dc=fr" "(objectClass=organizationalUnit)"
# Vérifier les utilisateurs
ldapsearch -x -LLL -H ldap://localhost -b "dc=innovattech,dc=fr" "(objectClass=inetOrgPerson)"
# Vérifier les groupes
ldapsearch -x -LLL -H ldap://localhost -b "dc=innovattech,dc=fr" "(objectClass=groupOfNames)"
SSO, OAuth2, OpenID Connect (OIDC) et Keycloak : mise en place d'un fournisseur d'identité et intégration d'applications pour un SSO centralisé chez InnovatTech.
Synthèse (10 min)
Question : Expliquez en 2 phrases pourquoi Kerberos est plus sécurisé que NTLM pour l'authentification sur un réseau Windows.
🎮 Quiz — Testez vos connaissances
3 QCM · 1 Vrai/Faux · 1 Question ouverte
QCM 1 — Structure LDAP
Que signifie DN dans un annuaire LDAP ?
- Dynamic Name
- Distinguished Name
- Directory Node
- Domain Name
📋 Correction
B — Distinguished Name. Le DN est l'identifiant unique d'une entrée dans l'arbre de l'annuaire (DIT). Il est formé d'une succession de RDN (Relative Distinguished Names). Exemple : uid=lmartin,ou=commercial,dc=innovattech,dc=fr où chaque partie est un RDN.
QCM 2 — Classe d'objets utilisateurs
Quelle classe d'objets LDAP est la plus couramment utilisée pour représenter les comptes utilisateurs dans un annuaire d'entreprise ?
- organizationalUnit
- groupOfNames
- inetOrgPerson
- posixGroup
📋 Correction
C — inetOrgPerson. Cette classe hérite de person et organizationalPerson et ajoute des attributs utiles pour les annuaires d'entreprise (uid, mail, telephoneNumber…). Elle est définie dans la RFC 2798 et est très largement utilisée dans les environnements LDAP.
QCM 3 — Authentification Kerberos
Dans Kerberos, quel mécanisme permet d'éviter la transmission du mot de passe sur le réseau ?
- Chiffrement RSA symétrique des identifiants
- Système de tickets TGT et tickets de service signés par le KDC
- Utilisation de JWT (JSON Web Tokens)
- Certificats X.509 échangés lors de chaque connexion
📋 Correction
B. Kerberos utilise un système de tickets : à la connexion, l'utilisateur obtient un TGT (Ticket Granting Ticket) auprès du KDC. Pour accéder à une ressource, il demande un ticket de service qui prouve son identité sans renvoyer le mot de passe sur le réseau. Les tickets sont temporellement limités, réduisant la fenêtre d'exploitation en cas d'interception.
Vrai / Faux
⬜ Un fichier LDIF est utilisé pour importer ou exporter des entrées dans un annuaire LDAP.
📋 Correction
VRAI. LDIF (LDAP Data Interchange Format) est le format standard pour représenter les entrées d'un annuaire LDAP. Il est utilisé avec les commandes ldapadd (ajout), ldapmodify (modification) et ldapdelete (suppression). Chaque entrée commence par un dn: suivi des attributs de l'entrée.
Question ouverte
Expliquez la différence entre un DN et un RDN dans la structure d'un annuaire LDAP. Donnez un exemple complet avec la structure InnovatTech (DC=innovattech, DC=fr).
📋 Éléments de réponse
Le DN (Distinguished Name) est l'identifiant complet et unique d'une entrée dans l'arbre de l'annuaire. Il est composé de la concaténation de tous les RDN (Relative Distinguished Names) depuis la racine jusqu'à l'entrée, séparés par des virgules. Un RDN est le composant le plus local du DN, identifiant l'entrée dans son contexte parent immédiat. Exemple chez InnovatTech : pour l'utilisateur Léa Martin dans l'OU commercial, le DN complet est uid=lmartin,ou=commercial,dc=innovattech,dc=fr. Le RDN de cette entrée est uid=lmartin (relatif à l'OU parent). Le RDN de l'OU est ou=commercial (relatif à la racine du domaine).
