Cours B2-19 - Debian dans un domaine AD, LDAP
Cours · Fiche de cours

B2-19 - Debian dans un domaine AD, LDAP

B2-19 Debian dans un domaine AD, LDAP

🎓 SIO2 · semestre 3 ⏱️ 3 h (cours + TP) 🎯 Bloc 2 – SISR Comprendre l'annuaire LDAP et l'authentification Kerberos, puis faire entrer un serveur Debian 13 dans le domaine Active Directory pour que les utilisateurs s'y connectent avec leur compte habituel.

🎯 Objectifs

  • Expliquer ce qu'est un annuaire LDAP et lire un nom distinctif (DN).
  • Décrire le principe de Kerberos : tickets, KDC, importance de l'horloge.
  • Vérifier les enregistrements DNS dont dépend un domaine Active Directory.
  • Joindre une Debian 13 au domaine avec realmd et SSSD, ouvrir une session avec un compte du domaine.
  • Donner les droits sudo à un groupe AD et accéder à un partage SMB depuis Linux.
  • Diagnostiquer une intégration qui échoue.

📋 Prérequis

🧭 Référentiel

  • B2.2 Installer, tester et déployer une solution d'infrastructure : intégrer un serveur à un annuaire.
  • B2.3 Exploiter, dépanner : diagnostiquer une authentification.
  • B3 Gérer les identités et les habilitations de façon centralisée.
Test express des prérequis 3 questions · 2 minutes · conseillé avant de commencer

1. Dans Active Directory, à quoi sert une unité d'organisation (UO) ?

L'UO est un conteneur de l'annuaire : on y range les objets et on y lie des stratégies de groupe. À revoir : B2-17 · Active Directory.

2. Quel fichier indique à une Debian quel serveur DNS interroger ?

Les lignes nameserver et search de /etc/resolv.conf fixent le DNS utilisé et le suffixe ajouté aux noms courts. À revoir : B2-14 · Debian 13.

3. Quel type d'enregistrement DNS associe un nom à une adresse IPv4 ?

A : nom → adresse IPv4. MX désigne le serveur de messagerie ; PTR fait le chemin inverse (adresse → nom). À revoir : B2-11 · DNS.
lea.martinpaul.leroyl.martin ? lea.martinadminancien.st 60 comptesdu domainebroceliande SRV-LINUXSRV-WEBSRV-01 (AD) ! 3 serveurs, 3 listes de comptes : laquelle est à jour ?

Brocéliande Logistique (entreprise fictive) a un domaine Active Directory broceliande.lan sur SRV-01, mais ses deux serveurs Debian (SRV-LINUX pour les fichiers, SRV-WEB pour l'intranet) gèrent encore leurs propres comptes locaux. Quand un salarié quitte l'entreprise, il faut penser à supprimer son compte à trois endroits ; un ancien stagiaire peut toujours se connecter à SRV-WEB.

Le responsable informatique veut que chacun se connecte aux serveurs Linux avec son compte du domaine, que seuls les membres du groupe GG_Admins_Linux puissent les administrer, et qu'un compte désactivé dans l'AD le soit partout. Tu es chargé de l'intégration.

Le coursL'annuaire LDAP, l'authentification Kerberos et le DNS du domaine, puis l'intégration d'une Debian avec realmd et SSSD, les droits et le dépannage.

1. Pourquoi faire entrer Linux dans le domaine ?

Dans un réseau d'entreprise, les identités (comptes, mots de passe, groupes) sont rangées dans un annuaire unique. Les postes Windows en profitent naturellement : un salarié ouvre sa session sur n'importe quel poste avec le même compte. Un serveur Linux laissé à part, lui, garde ses fichiers /etc/passwd et /etc/shadow : chaque compte doit y être créé, modifié et supprimé à la main.

Intégrer une machine Linux à un domaine AD, c'est lui permettre d'identifier (qui est cet utilisateur, quel est son UID, ses groupes ?) et d'authentifier (son mot de passe est-il juste ?) les utilisateurs en interrogeant le contrôleur de domaine, au lieu de ses fichiers locaux. Un compte créé, désactivé ou supprimé dans l'AD l'est donc aussi sur le serveur Linux.

Clique sur « Comptes locaux » puis sur « Domaine AD » pour comparer les deux organisations.

Comptes locaux Domaine AD SRV-LINUXSRV-WEBPC-COMPTA-01SRV-01 · AD lea.martin (1) lea.martin (2) lea.martin (3) lea.martin : 1 seul compte

Choisis une organisation pour voir où vit le compte de lea.martin.

Un seul compte, vérifié partout : c'est l'intérêt de l'annuaire centralisé.
AvantageConséquence pour Brocéliande Logistique
Un seul mot de passeLe salarié utilise le même compte sur son poste, l'intranet et le serveur de fichiers.
Départs maîtrisésDésactiver le compte dans l'AD coupe tous les accès, y compris sur les serveurs Linux.
Droits par groupeLes administrateurs Linux sont les membres d'un groupe AD : on ajoute ou retire une personne à un seul endroit.
Politique communeLongueur et expiration des mots de passe, verrouillage après échecs : la stratégie du domaine s'applique aussi aux connexions Linux.

2. LDAP : un annuaire rangé en arbre

LDAP (Lightweight Directory Access Protocol, port 389, ou 636 en LDAPS chiffré) est le protocole qui permet de lire et d'écrire dans un annuaire. Active Directory le parle : un serveur Linux peut donc l'interroger. L'annuaire est rangé comme une arborescence : le domaine en haut, puis des unités d'organisation, puis les objets (utilisateurs, groupes, ordinateurs).

broceliande.lan DC=broceliande,DC=lan OU=Utilisateurs,OU=Siege OU=Compta OU=Entrepot OU=Serveurs CN=SRV-LINUX CN=Léa Martin sAMAccountName : lea.martin CN=Léa Martin,OU=Compta,OU=Utilisateurs,OU=Siege,DC=broceliande,DC=lan
Un DN se lit de droite à gauche comme un chemin : domaine, puis UO, puis objet.
  • DC (Domain Component)Un morceau du nom de domaine DNS : broceliande.lan devient DC=broceliande,DC=lan. C'est la base de recherche (base DN).
  • OU (Organizational Unit)Unité d'organisation : un dossier de l'annuaire. On y range les objets et on y lie des GPO.
  • CN (Common Name)Nom de l'objet lui-même : un utilisateur, un groupe, un ordinateur. Aussi utilisé pour les conteneurs par défaut (CN=Users, CN=Computers).
  • DN (Distinguished Name)Chemin complet et unique d'un objet, de l'objet jusqu'à la racine. Deux objets ne peuvent pas avoir le même DN.

2.1 Les attributs d'un utilisateur

Chaque objet porte des attributs (nom = valeur). Ceux-ci servent directement à Linux :

Attribut ADExempleRôle pour Linux
sAMAccountNamelea.martinIdentifiant de connexion (le « login »)
userPrincipalNamelea.martin@broceliande.lanIdentifiant au format courriel, utilisé par Kerberos
objectSidS-1-5-21-…-1107Identifiant unique : SSSD en calcule l'UID Linux
memberOfCN=GG_Compta,OU=Groupes,…Groupes de l'utilisateur, donc ses droits
userAccountControl512 (actif) / 514 (désactivé)Compte actif ou non : un compte désactivé est refusé
uidNumber, loginShellsouvent videsAttributs POSIX facultatifs ; sans eux, SSSD calcule l'UID et utilise un shell par défaut
Debian 13 interroger l'annuaire avec ldapsearchpaquet ldap-utils
$ kinit lea.martin # obtenir un ticket Kerberos (partie 3)
$ ldapsearch -Y GSSAPI -H ldap://srv-01.broceliande.lan -b "DC=broceliande,DC=lan" "(sAMAccountName=lea.martin)" memberOf mail
# dn: CN=Léa Martin,OU=Compta,OU=Utilisateurs,OU=Siege,DC=broceliande,DC=lan
# memberOf: CN=GG_Compta,OU=Groupes,DC=broceliande,DC=lan
# (valeurs décodées : ldapsearch affiche les valeurs accentuées en base64, après « :: »)

Le filtre de recherche s'écrit entre parenthèses : (sAMAccountName=lea.martin), (objectClass=group), ou combiné (&(objectClass=user)(memberOf=CN=GG_Compta,…)). Sur le serveur Windows, le même annuaire se parcourt avec Utilisateurs et ordinateurs Active Directory, onglet Éditeur d'attributs (fonctionnalités avancées activées).

3. Kerberos : un ticket plutôt que le mot de passe

LDAP sait qui est l'utilisateur. Pour vérifier son mot de passe sans le faire circuler sur le réseau, Active Directory utilise Kerberos (port 88). Le contrôleur de domaine joue le rôle de KDC : il délivre des tickets chiffrés, limités dans le temps, que l'utilisateur présente ensuite aux services.

ACCUEIL (KDC) MANÈGE = SERVICE(SSH, partage, intranet) bracelet = TGT ticket = TGS Bracelet valable la journée · un ticket par manège

Pour bien comprendre : la fête foraine

À l'entrée de la fête, tu montres ta pièce d'identité une seule fois à l'accueil, qui te remet un bracelet daté : c'est le TGT, délivré par le KDC après vérification de ton mot de passe.

Pour chaque manège, tu montres ton bracelet au guichet et tu reçois un ticket pour ce manège : c'est le ticket de service (TGS). Le forain contrôle le ticket sans jamais voir ta pièce d'identité : le serveur SSH ou le partage ne voit jamais ton mot de passe.

Le bracelet expire le soir (10 h par défaut sur AD) ; un bracelet daté de demain ou d'hier est refusé : d'où l'importance de l'horloge.

SRV-LINUXclient Kerberos (SSSD) SRV-01 · KDC Partage SMB\\srv-01\compta AS-REQ demande chiffrée avec le mot de passe, qui ne circule pas TGT ticket d'accès général, valable 10 h (klist pour le voir) TGT + « cifs/srv-01 » demande d'un ticket pour le service voulu ticket service accès accordé
Le mot de passe sert une seule fois, localement, à obtenir le TGT ; tout le reste se fait avec des tickets.

Kerberos refuse tout ticket si l'écart d'heure entre le client et le contrôleur de domaine dépasse 5 minutes (message Clock skew too great). Une VM Debian restaurée d'un instantané ou sans synchronisation NTP échoue donc à se connecter, alors que tout le reste est juste. Debian 13 synchronise son heure avec systemd-timesyncd (ou chrony) : on lui donne le contrôleur de domaine comme serveur de temps.

Terme KerberosSignification
Royaume (realm)Le domaine Kerberos, toujours écrit en majuscules : BROCELIANDE.LAN.
PrincipalUne identité Kerberos : lea.martin@BROCELIANDE.LAN (utilisateur), host/srv-linux.broceliande.lan (machine).
KeytabFichier /etc/krb5.keytab qui contient la clé du compte ordinateur SRV-LINUX : il prouve que la machine fait bien partie du domaine. À protéger comme un mot de passe.
kinit / klist / kdestroyObtenir un TGT, lister ses tickets, les supprimer (paquet krb5-user).

4. Le DNS, condition indispensable

Un client ne trouve pas son contrôleur de domaine par son adresse IP, mais en interrogeant le DNS : Active Directory publie dans sa zone des enregistrements SRV qui indiquent où sont les services LDAP et Kerberos. Si la Debian interroge un autre DNS (celui de la box ou un DNS public), elle ne trouvera jamais le domaine.

EnregistrementRéponse attendueSert à
srv-01.broceliande.lan (A)172.16.50.10Joindre le contrôleur de domaine
_ldap._tcp.broceliande.lan (SRV)srv-01.broceliande.lan, port 389Trouver l'annuaire LDAP
_kerberos._tcp.broceliande.lan (SRV)srv-01.broceliande.lan, port 88Trouver le KDC
srv-linux.broceliande.lan (A)172.16.50.11Nom du serveur Linux, créé à la jonction
Debian 13 vérifier le DNS avant toute jonctionSRV-LINUX
$ cat /etc/resolv.conf # nameserver 172.16.50.10 · search broceliande.lan
$ host -t SRV _ldap._tcp.broceliande.lan
# _ldap._tcp.broceliande.lan has SRV record 0 100 389 srv-01.broceliande.lan.
$ host -t SRV _kerberos._tcp.broceliande.lan
$ hostnamectl set-hostname srv-linux.broceliande.lan # nom complet (FQDN)

Avant de joindre une machine au domaine, trois contrôles : le DNS est celui du contrôleur de domaine (et les enregistrements SRV répondent), l'heure est synchronisée avec lui, le nom de la machine est unique et complet. La grande majorité des échecs de jonction viennent de l'un de ces trois points.

5. Joindre la Debian au domaine : realmd et SSSD

Sous Debian, deux outils font tout le travail. realmd (commande realm) découvre le domaine, crée le compte ordinateur dans l'AD et écrit la configuration. SSSD (System Security Services Daemon) tourne ensuite en permanence : il répond aux questions du système (« qui est lea.martin ? », « son mot de passe est-il bon ? ») en interrogeant le contrôleur de domaine, et garde un cache pour continuer à fonctionner si celui-ci est momentanément injoignable.

lea.martinssh srv-linux SRV-LINUX · Debian 13 sshdservice PAMmot de passe NSSidentité SSSD+ cache SRV-01LDAP 389Kerberos 88 connexion SSH PAM et NSS demandent à SSSD LDAP + KRB identité + mot de passe vérifiés session ouverte · /home/lea.martin créé
SSH ne connaît pas l'AD : c'est SSSD, branché sur PAM et NSS, qui fait le lien.

5.1 Les commandes de la jonction

Debian 13 joindre SRV-LINUX à broceliande.lanen root ou avec sudo
$ sudo apt install -y realmd sssd sssd-tools libnss-sss libpam-sss adcli samba-common-bin krb5-user packagekit
$ realm discover broceliande.lan # le domaine est-il trouvé ? quels paquets manquent ?
$ sudo realm join -U Administrateur --computer-ou="OU=Serveurs,DC=broceliande,DC=lan" broceliande.lan
# mot de passe d'un compte autorisé à joindre des machines au domaine
$ sudo pam-auth-update --enable mkhomedir # dossier personnel créé à la 1re connexion
$ realm list # configured: kerberos-member · login-policy
$ id lea.martin@broceliande.lan # l'utilisateur du domaine est connu

La jonction a créé l'objet ordinateur CN=SRV-LINUX dans l'UO Serveurs, le fichier /etc/krb5.keytab et le fichier de configuration /etc/sssd/sssd.conf, que l'on ajuste ensuite :

Fichier /etc/sssd/sssd.confdroits 600, propriétaire root
[sssd]
domains = broceliande.lan
services = nss, pam

[domain/broceliande.lan]
ad_domain = broceliande.lan
krb5_realm = BROCELIANDE.LAN
id_provider = ad
access_provider = ad
cache_credentials = True
ldap_id_mapping = True
use_fully_qualified_names = False
fallback_homedir = /home/%u
default_shell = /bin/bash
  • id_provider = adLes identités (utilisateurs, groupes) viennent de l'AD par LDAP.
  • ldap_id_mapping = TrueSSSD calcule l'UID Linux à partir du SID Windows : le même utilisateur a le même UID sur tous les serveurs, sans rien saisir dans l'AD.
  • use_fully_qualified_namesÀ True, il faut se connecter en lea.martin@broceliande.lan ; à False, simplement lea.martin. On choisit False quand il n'y a qu'un domaine.
  • fallback_homedirChemin du dossier personnel : /home/%u donne /home/lea.martin (%u = nom, %d = domaine).
  • cache_credentialsGarde une empreinte du mot de passe pour se connecter même si SRV-01 est arrêté. Pratique, mais un compte désactivé dans l'AD reste utilisable hors ligne jusqu'au retour du contrôleur.

Après toute modification de sssd.conf, il faut redémarrer SSSD et vider son cache : sudo systemctl restart sssd puis sudo sss_cache -E. Sinon, l'ancien comportement continue. Si les droits du fichier ne sont pas 600, SSSD refuse même de démarrer.

6. Qui peut se connecter, qui peut administrer

Par défaut, tous les comptes du domaine peuvent ouvrir une session sur la Debian jointe : y compris un stagiaire ou un compte de service. On restreint l'accès à des groupes AD, puis on donne sudo aux seuls administrateurs.

Clique sur chaque utilisateur pour savoir ce qu'il peut faire sur SRV-LINUX.

SRV-LINUX · règles d'accès realm permit -gGG_Utilisateurs_LinuxGG_Admins_Linux /etc/sudoers.d/admins-ad%gg_admins_linux ALL=(ALL:ALL) ALL lea.martinGG_Utilisateurs_Linux adm.jbernardGG_Admins_Linux yann.kerjeanaucun groupe Linux ✔ connexion✘ sudo ✔ connexion✔ sudo ✘ Permission denied

Choisis un utilisateur à gauche.

Deux règles distinctes : realm permit décide qui entre, sudoers décide qui administre.
Debian 13 restreindre l'accès et donner sudoSRV-LINUX
$ sudo realm deny --all # plus personne…
$ sudo realm permit -g GG_Utilisateurs_Linux GG_Admins_Linux # …sauf ces deux groupes
$ echo '%gg_admins_linux ALL=(ALL:ALL) ALL' | sudo tee /etc/sudoers.d/admins-ad
$ sudo chmod 440 /etc/sudoers.d/admins-ad && sudo visudo -c # vérifier la syntaxe

Dans sudoers, un groupe s'écrit précédé de % et exactement comme le renvoie id : en minuscules avec SSSD, sans @broceliande.lan si use_fully_qualified_names = False. On évite les espaces dans les noms de groupes AD destinés à Linux.

6.1 Accéder à un partage Windows depuis Linux

Une fois le serveur dans le domaine, un utilisateur qui possède un ticket Kerberos accède aux partages SMB de SRV-01 sans retaper son mot de passe.

Debian 13 lire et monter un partage SMBpaquets smbclient et cifs-utils
lea.martin$ klist # un TGT est présent depuis la connexion
lea.martin$ smbclient --use-kerberos=required //srv-01.broceliande.lan/compta -c 'ls'
$ sudo mount -t cifs //srv-01.broceliande.lan/compta /mnt/compta -o sec=krb5,cruid=lea.martin,multiuser
# sans Kerberos : -o username=lea.martin,domain=BROCELIANDE (le mot de passe est demandé)

Le compte qui joint les machines au domaine ne doit pas être l'administrateur du domaine au quotidien : on crée un compte délégué, autorisé seulement à créer des objets ordinateurs dans l'UO Serveurs. Le fichier /etc/krb5.keytab est une preuve d'identité de la machine : droits 600, jamais copié. Enfin, désactiver (plutôt que supprimer) un compte AD au départ d'un salarié suffit à couper ses accès Linux, sauf pour une connexion hors ligne depuis le cache (fiches B3-05 et B3-11).

7. Vérifier et dépanner

7.1 Les commandes de vérification

CommandeCe qu'elle montreCe qu'on y cherche
realm listDomaines joints et politique d'accèsconfigured: kerberos-member, groupes autorisés
id lea.martin / getent passwd lea.martinIdentité vue par Linux (UID, groupes)Réponse = SSSD et LDAP fonctionnent
kinit lea.martin puis klistObtention d'un TGTRéponse = Kerberos, horloge et mot de passe OK
sudo sssctl domain-status broceliande.lanÉtat du domaine pour SSSDOnline status: Online, contrôleur trouvé
timedatectlHeure et synchronisationSystem clock synchronized: yes
journalctl -u sssd, /var/log/sssd/Journaux de SSSDErreurs d'accès, contrôleur injoignable (ajouter debug_level = 6 pour plus de détails)

7.2 La démarche de dépannage

Un compte du domaine ne peut pas se connecter Réponds en lançant chaque commande sur la Debian

« realm list » affiche-t-il broceliande.lan configuré ?Sinon, la machine n'est pas (ou plus) membre du domaine.

« id lea.martin » renvoie-t-il un UID et des groupes ?C'est la partie LDAP : SSSD trouve-t-il l'utilisateur ?

« kinit lea.martin » obtient-il un ticket ?C'est la partie Kerberos : mot de passe, horloge, compte actif.

Refais la jonction : vérifie d'abord le DNS (host -t SRV _ldap._tcp.broceliande.lan) et l'heure, puis realm join. Si l'objet ordinateur a été supprimé dans l'AD, il faut aussi realm leave avant de rejoindre.

Regarde SSSD : systemctl status sssd, droits 600 de sssd.conf, sssctl domain-status (contrôleur joignable ?), puis vide le cache avec sss_cache -E si le compte vient d'être créé.

Lis le message de kinit : Clock skew too great → synchroniser l'heure ; Preauthentication failed → mot de passe faux ; Client's credentials have been revoked → compte désactivé ou verrouillé dans l'AD.

L'utilisateur est reconnu et authentifié : le refus vient de l'autorisation. Vérifie les groupes autorisés (realm list, ligne permitted-groups), puis journalctl -u sssd (« Access denied ») et la création du dossier personnel.

7.3 Entraîne-toi : les tickets du support

Tu es de permanence au support de Brocéliande Logistique pendant l'intégration des serveurs Linux. Six tickets arrivent : lis le message, observe le relevé et choisis la cause. Applique la démarche de la partie 7.2.

File d'attente du support6 tickets · un à la fois · l'explication s'affiche après ta réponse
Ticket n° 1De : technicienPriorité haute
« Je n'arrive même pas à découvrir le domaine depuis SRV-WEB. Pourtant SRV-01 répond au ping. »
Debian 13 SRV-WEB · relevé
$ realm discover broceliande.lan
realm: No such realm found
$ cat /etc/resolv.conf
nameserver 192.168.1.1

Quelle est la cause la plus probable ?

Cause : le domaine se découvre par les enregistrements SRV de la zone broceliande.lan, que seul SRV-01 connaît. Le DNS 192.168.1.1 ne les a pas. Correction : nameserver 172.16.50.10 et search broceliande.lan (dans la configuration réseau, pour que ce soit permanent), puis host -t SRV _ldap._tcp.broceliande.lan.

Ticket n° 2De : technicienPriorité haute
« J'ai restauré la VM SRV-LINUX depuis un instantané d'il y a deux semaines. Depuis, plus personne ne peut se connecter avec un compte du domaine. »
Debian 13 SRV-LINUX · relevé
$ kinit lea.martin
kinit: Clock skew too great while getting initial credentials
$ timedatectl | grep synchronized
System clock synchronized: no

Quelle est la cause ?

Cause : l'instantané a ramené la VM à une heure ancienne et la synchronisation est arrêtée ; Kerberos refuse les tickets au-delà de 5 minutes d'écart. Correction : régler NTP=172.16.50.10 dans /etc/systemd/timesyncd.conf, sudo timedatectl set-ntp true, vérifier avec timedatectl, puis réessayer kinit.

Ticket n° 3De : comptabilitéPriorité moyenne
« Je me connecte bien à SRV-LINUX, mais j'ai un message d'erreur au début et je ne peux enregistrer aucun fichier dans mon dossier. »
Debian 13 session de lea.martin
Could not chdir to home directory /home/lea.martin: No such file or directory
lea.martin@srv-linux:/$

Quelle est la cause ?

Cause : l'utilisateur du domaine existe pour le système, mais rien n'a créé son dossier /home/lea.martin. Correction : sudo pam-auth-update --enable mkhomedir ; le dossier sera créé à la prochaine connexion, à partir de /etc/skel.

Ticket n° 4De : Jules Bernard (adm.jbernard)Priorité moyenne
« Je suis bien dans GG_Admins_Linux, mais sudo me refuse. Le fichier sudoers a été créé hier. »
Debian 13 SRV-LINUX · relevé
$ id adm.jbernard
uid=1278401115(adm.jbernard) gid=1278400513(domain users)
groups=1278400513(domain users),1278401120(gg_admins_linux)
$ sudo cat /etc/sudoers.d/admins-ad
%GG_Admins_Linux@BROCELIANDE.LAN ALL=(ALL:ALL) ALL

Quelle est la cause ?

Cause : id montre le groupe sous la forme gg_admins_linux, en minuscules et sans domaine (use_fully_qualified_names = False). La ligne de sudoers désigne un groupe qui n'existe pas pour Linux. Correction : %gg_admins_linux ALL=(ALL:ALL) ALL, puis visudo -c.

Ticket n° 5De : ressources humainesPriorité basse
« Le compte de notre nouvelle assistante a été créé ce matin dans l'AD et ajouté à GG_Utilisateurs_Linux. Elle se connecte à son poste Windows, mais SRV-LINUX lui répond "utilisateur inconnu". »
Debian 13 SRV-LINUX · relevé
$ id nlefevre
id: 'nlefevre': no such user
$ id lea.martin
uid=1278401107(lea.martin) gid=1278400513(domain users) ...

Quelle est la cause la plus probable ?

Cause : les autres comptes répondent, donc la jonction et SSSD fonctionnent. Un essai avant la création du compte a été mis en cache comme « inexistant » (cache négatif). Correction : sudo sss_cache -E (ou -u nlefevre), puis id nlefevre.

Ticket n° 6Alerte sécuritéSécurité
« Un ancien stagiaire de l'équipe web, dont le contrat est terminé, a réussi à se connecter à SRV-WEB cette nuit avec son compte du domaine. »
Debian 13 SRV-WEB · relevé
$ realm list | grep -E 'login-policy|permitted'
  login-policy: allow-realm-logins

Quelles sont les deux erreurs ?

Cause : allow-realm-logins signifie que n'importe quel compte du domaine peut se connecter. Correction : désactiver le compte dans l'AD (procédure de départ), puis realm deny --all et realm permit -g GG_Utilisateurs_Linux GG_Admins_Linux sur chaque serveur Linux. Vérifier les journaux de connexion de la nuit.

8. À l'examen et en entreprise

  • Documentation attendue : schéma montrant les flux (DNS 53, Kerberos 88, LDAP 389, SMB 445), arborescence des UO et des groupes, extrait commenté de sssd.conf et de sudoers.
  • Cahier de recette : un utilisateur autorisé se connecte, un utilisateur non autorisé est refusé, un administrateur obtient sudo, un compte désactivé dans l'AD est refusé sur Linux.
  • Justifier ses choix : pourquoi realmd/SSSD (plutôt que Winbind), pourquoi ldap_id_mapping, comment est géré le départ d'un salarié. Le jury demande souvent ce qui se passe si le contrôleur de domaine tombe (cache SSSD).
  • En entreprise : les mêmes principes s'appliquent avec FreeIPA (annuaire libre) ou Entra ID ; on retrouve toujours LDAP pour l'identité et Kerberos ou un jeton pour l'authentification.

9. L'essentiel

  1. Intégrer Linux à l'AD : un seul compte par personne, vérifié partout ; un compte désactivé l'est aussi sur Linux.
  2. LDAP (389, 636 en LDAPS) décrit les identités ; l'annuaire est un arbre de DC, OU et CN.
  3. Un DN se lit de l'objet vers la racine : CN=Léa Martin,OU=Compta,…,DC=broceliande,DC=lan.
  4. Kerberos (88) authentifie par tickets : TGT puis ticket de service ; le mot de passe ne circule pas.
  5. Écart d'heure maximal : 5 minutes ; royaume en majuscules : BROCELIANDE.LAN.
  6. Le domaine se trouve par le DNS (enregistrements SRV) : la Debian doit utiliser le DNS du contrôleur.
  7. realm join crée le compte ordinateur, le keytab et sssd.conf ; SSSD répond ensuite à PAM et NSS, avec un cache.
  8. pam-auth-update --enable mkhomedir crée le dossier personnel à la première connexion.
  9. realm permit -g choisit qui se connecte ; %groupe dans /etc/sudoers.d/ choisit qui administre.
  10. Dépanner dans l'ordre : realm list, id, kinit, puis autorisations et journaux SSSD.
Debiandans l'AD LDAParbre DC · OU · CN, DNport 389 · identités KerberosKDC · TGT · ticket serviceport 88 · horloge ±5 min DNSDNS du contrôleurSRV _ldap · _kerberos Jonctionrealm discover · joinkeytab · compte ordinateur SSSDPAM + NSS · cachesssd.conf 600 · mkhomedir Droitsrealm permit -g%groupe dans sudoers
La fiche en une image : à refaire de mémoire, sur une feuille, avant de passer aux exercices.

Les commandes clés

Pour…Commandes (Debian 13)
Vérifier DNS et heurehost -t SRV _ldap._tcp.broceliande.lan · timedatectl
Découvrir et joindrerealm discover broceliande.lan · sudo realm join -U Administrateur broceliande.lan
Dossier personnelsudo pam-auth-update --enable mkhomedir
Appliquer sssd.confsudo systemctl restart sssd · sudo sss_cache -E
Restreindre l'accèssudo realm deny --all · sudo realm permit -g GG_Admins_Linux
Donner sudo%gg_admins_linux ALL=(ALL:ALL) ALL dans /etc/sudoers.d/ · visudo -c
Vérifierrealm list · id lea.martin · kinit lea.martin · klist

Tout cela tient sur une page : utilise le bouton Mémo à imprimer en haut de la fiche.

La pratiqueLe quiz noté pour vérifier tes acquis, les exercices à rendre à ton professeur, puis le TP au labo pour faire entrer ta Debian dans le domaine.

10. Quiz noté

8 questions · 10 minutesRéponds à toutes les questions, puis valide. Seule ta première tentative est enregistrée : elle compte dans ton suivi. Ensuite, tu peux t'entraîner autant que tu veux.

1. Quel est le DN de l'ordinateur SRV-LINUX rangé dans l'UO Serveurs, placée directement sous le domaine ?

2. Quel port utilise Kerberos ?

3. Un client Debian a 8 minutes d'avance sur le contrôleur de domaine. Que se passe-t-il ?

4. Quel enregistrement DNS permet à la Debian de trouver le KDC du domaine ?

5. Quel service tourne en permanence sur la Debian pour interroger l'AD et garder un cache ?

6. Tu modifies use_fully_qualified_names dans sssd.conf. Que faut-il faire ensuite ?

7. Comment réserver les connexions aux membres du groupe AD GG_Admins_Linux ?

8. À quoi sert le fichier /etc/krb5.keytab créé par la jonction ?

11. Exercices : à toi de répondre

Écris ta réponse sous chaque énoncé et envoie-la à ton professeur. Quand il l'a validée, le corrigé s'affiche à la place du cadenas ; s'il te la renvoie « à revoir », lis son commentaire et corrige.

Exercice 1 – Comprendre (SIO2)

Le groupe GG_Admins_Linux est rangé dans l'UO Groupes, placée directement sous le domaine broceliande.lan. Écris son DN. Puis décompose le DN CN=PC-COMPTA-01,OU=Postes,OU=Siege,DC=broceliande,DC=lan : quel est l'objet, où est-il rangé, dans quel domaine ?

Le corrigé s'affichera ici dès que ton professeur aura validé ta réponse. Cherche d'abord par toi-même : c'est en se trompant qu'on retient.

Exercice 2 – Configurer (SIO2)

SRV-WEB vient d'être joint au domaine. Le responsable veut : se connecter sans @broceliande.lan, dossiers personnels en /home/nom, accès réservé aux groupes GG_Utilisateurs_Linux et GG_Admins_Linux, sudo pour GG_Admins_Linux seulement. Écris les lignes à modifier dans sssd.conf et toutes les commandes nécessaires, dans l'ordre.

Le corrigé s'affichera ici dès que ton professeur aura validé ta réponse. Cherche d'abord par toi-même : c'est en se trompant qu'on retient.

Exercice 3 – Dépanner (SIO2)

Un technicien tente de joindre une nouvelle Debian. Voici ce qu'il obtient : realm discover broceliande.lan trouve bien le domaine, mais realm join échoue avec Couldn't authenticate to active directory: SASL(-1): generic failure: GSSAPI Error … Clock skew too great. date affiche 10:52 alors que l'horloge de SRV-01 indique 10:41. Explique la cause et donne la correction complète, y compris pour que le problème ne revienne pas.

Le corrigé s'affichera ici dès que ton professeur aura validé ta réponse. Cherche d'abord par toi-même : c'est en se trompant qu'on retient.

Exercice 4 – Concevoir (SIO2)

Brocéliande Logistique prévoit une dizaine de serveurs Linux d'ici deux ans (web, supervision, sauvegardes, conteneurs). Propose une organisation de l'annuaire et des droits pour ces serveurs : UO, groupes, règles d'accès et d'administration, compte utilisé pour les jonctions, procédure de départ d'un salarié. Justifie en une dizaine de lignes.

Le corrigé s'affichera ici dès que ton professeur aura validé ta réponse. Cherche d'abord par toi-même : c'est en se trompant qu'on retient.

12. Au labo : faire entrer SRV-LINUX dans le domaine

Objectif

Sur ton pool Proxmox (page Mes serveurs et VM), tu joins la VM Debian 13 au domaine broceliande.lan porté par ta VM Windows Server 2025. À la fin, un utilisateur du domaine ouvre une session SSH sur la Debian, un administrateur y obtient sudo, et un compte non autorisé est refusé.

MachineSystèmeRôle dans le TP
SRV-01Windows Server 2025, AD DS et DNSContrôleur du domaine broceliande.lan, 172.16.50.10/24
SRV-LINUXDebian 13 (vue en B2-14)Serveur à joindre : 172.16.50.11/24, DNS 172.16.50.10
PC-COMPTA-01Windows 11 Pro, membre du domainePoste de test : connexion SSH avec un compte du domaine
SRV-01 · 172.16.50.10AD DS · DNS · KDC SRV-LINUX · .11 PC-COMPTA-01 DNS 53 · LDAP 389Kerberos 88SSH 22 : ssh lea.martin@srv-linux
La Debian n'a besoin que de trois flux vers le contrôleur : DNS, LDAP et Kerberos.

Ce que tu ajoutes à cette étape

  • Dans l'AD : l'UO Serveurs, les groupes GG_Utilisateurs_Linux et GG_Admins_Linux, les comptes de test de B2-17.
  • Sur la Debian : DNS, nom complet et heure alignés sur le contrôleur.
  • La jonction avec realmd, puis SSSD réglé et le dossier personnel automatique.
  • Les droits : accès réservé aux deux groupes, sudo pour les administrateurs.

1 Préparer l'annuaire sur SRV-01

Les UO Serveurs et Groupes (directement sous le domaine) et les trois comptes de test viennent du TP de la fiche B2-17 : lea.martin (UO Compta), adm.jbernard (compte d'administration de Jules Bernard, UO Admins) et yann.kerjean (UO Entrepot). S'il en manque, refais les étapes 5 et 6 de ce TP : elles ne recréent pas ce qui existe déjà. Crée ensuite les groupes globaux de sécurité GG_Utilisateurs_Linux (membre : lea.martin) et GG_Admins_Linux (membre : adm.jbernard) ; yann.kerjean ne reçoit aucun groupe Linux. En PowerShell, sans erreur si un groupe existe déjà :

Windows Server 2025 PowerShell en administrateurSRV-01
PS> Get-ADUser -Filter "SamAccountName -eq 'lea.martin' -or SamAccountName -eq 'adm.jbernard' -or SamAccountName -eq 'yann.kerjean'" | Select-Object SamAccountName, DistinguishedName # les trois comptes de B2-17
PS> "GG_Admins_Linux","GG_Utilisateurs_Linux" | ForEach-Object { if (-not (Get-ADGroup -Filter "Name -eq '$_'")) { New-ADGroup -Name $_ -GroupScope Global -GroupCategory Security -Path "OU=Groupes,DC=broceliande,DC=lan" } }
PS> Add-ADGroupMember GG_Admins_Linux -Members adm.jbernard
PS> Add-ADGroupMember GG_Utilisateurs_Linux -Members lea.martin
PS> Get-DnsServerResourceRecord -ZoneName broceliande.lan -RRType SRV | Select-Object -First 5 # les SRV existent

2 Aligner DNS, nom et heure sur la Debian

Vérifie que /etc/resolv.conf pointe vers 172.16.50.10 avec search broceliande.lan (dans la configuration réseau vue en B2-14, pour que ce soit permanent). Donne le nom complet à la machine, puis synchronise son heure sur le contrôleur :

Debian 13 SRV-LINUX
$ sudo hostnamectl set-hostname srv-linux.broceliande.lan
$ sudo sed -i 's/^#\?NTP=.*/NTP=172.16.50.10/' /etc/systemd/timesyncd.conf
$ sudo systemctl restart systemd-timesyncd && timedatectl # synchronized: yes
$ host -t SRV _kerberos._tcp.broceliande.lan # srv-01.broceliande.lan, port 88

3 Installer les outils et joindre le domaine

Complète les commandes de la jonction (paquets déjà installés avec la commande de la partie 5.1). Le compte utilisé est Administrateur, l'objet ordinateur doit aller dans l'UO Serveurs. Vérifie chaque ligne avec ✓.

découvrir le domaine $
joindre $
dossier personnel $
tout refuser $
autoriser 2 groupes $

Sur SRV-01, vérifie que l'objet SRV-LINUX est apparu dans l'UO Serveurs, et dans la zone DNS que l'enregistrement srv-linux a été créé.

4 Régler SSSD

Dans /etc/sssd/sssd.conf, passe use_fully_qualified_names à False et fallback_homedir à /home/%u (partie 5.1), puis applique :

Debian 13 SRV-LINUX
$ sudo nano /etc/sssd/sssd.conf
$ sudo systemctl restart sssd && sudo sss_cache -E
$ id lea.martin # uid=… groups=…gg_utilisateurs_linux
$ realm list # permitted-groups: GG_Utilisateurs_Linux, GG_Admins_Linux

5 Donner sudo aux administrateurs

Debian 13 SRV-LINUX
$ echo '%gg_admins_linux ALL=(ALL:ALL) ALL' | sudo tee /etc/sudoers.d/admins-ad
$ sudo chmod 440 /etc/sudoers.d/admins-ad && sudo visudo -c

6 Tester depuis PC-COMPTA-01

  1. Utilisateur autorisé : ssh lea.martin@srv-linux.broceliande.lan, puis pwd (/home/lea.martin) et klist (un TGT est présent).
  2. Administrateur : ssh adm.jbernard@srv-linux.broceliande.lan, puis sudo whoami (réponse root).
  3. Compte non autorisé : ssh yann.kerjean@srv-linux.broceliande.lan doit être refusé ; lis la ligne correspondante avec sudo journalctl -u sssd -n 20 et sudo journalctl -u ssh -n 20.
  4. Désactivation : désactive lea.martin dans l'AD, attends quelques secondes, puis réessaie : la connexion est refusée. Réactive-la ensuite (Enable-ADAccount lea.martin) : les autres TP utilisent ce compte.

7 Valider : le cahier de recette

N°TestCommandeRésultat attenduOK
1La Debian est membre du domainerealm listconfigured: kerberos-member
2Un utilisateur du domaine est connuid lea.martinUID et groupe gg_utilisateurs_linux
3Kerberos fonctionnekinit adm.jbernard puis klistUn TGT krbtgt/BROCELIANDE.LAN
4Connexion SSH d'un utilisateur autoriséssh lea.martin@srv-linux.broceliande.lanSession ouverte dans /home/lea.martin
5Un compte non autorisé est refuséssh yann.kerjean@srv-linux…Refus attendu (Permission denied)
6sudo réservé aux administrateurssudo whoami (adm.jbernard, puis lea.martin)root pour adm.jbernard, refus pour lea.martin
7Un compte désactivé dans l'AD est refuséssh lea.martin@… après désactivationConnexion refusée
Suis ta progressionConnecte-toi pour marquer les ressources comme terminées et retrouver ton avancement.
Se connecter