← Retour au portail

Fiche 6 - Intégration Debian dans Active Directory (SSSD/realmd)

Joindre une machine Debian 13 à un domaine Active Directory avec realmd et SSSD pour l'authentification centralisée.

Avancé — SISR 2ème année ⏱️ 25 min 📁 Windows Server

🎯 Objectifs de la fiche

  1. Prérequis et principe — Kerberos, LDAP, SSSD, realmd
  2. Préparer la machine Debian — DNS, NTP, hostname FQDN
  3. Joindre le domaine avec realmd — realm join, vérification
  4. Configurer SSSD — sssd.conf, répertoire home, sudo
  5. Connexion avec un compte AD — Tester, créer le home, droits sudo

Prérequis

Debian 13 avec accès root. Un domaine Active Directory fonctionnel (lycee.local). DNS pointant vers le contrôleur de domaine. Synchronisation NTP correcte.

ℹ️ SSSD (System Security Services Daemon) est le composant qui gère l'authentification contre AD. realmd est l'outil qui simplifie la jonction de domaine. Ensemble, ils permettent à un poste Linux de s'authentifier avec des comptes Active Directory.

1. Préparer la machine Debian

# Configurer le DNS vers le DC (IMPORTANT)
sudo nano /etc/resolv.conf
# nameserver 192.168.1.10   (IP du contrôleur de domaine)
# search lycee.local

# Définir un hostname FQDN
sudo hostnamectl set-hostname poste-linux.lycee.local

# Vérifier la résolution DNS du domaine
nslookup lycee.local
nslookup _ldap._tcp.lycee.local

# Synchroniser l'heure (CRITIQUE pour Kerberos — max 5 minutes de décalage)
sudo apt install chrony -y
sudo systemctl enable --now chrony
sudo chronyc tracking

2. Installer les paquets nécessaires

sudo apt update
sudo apt install realmd sssd sssd-tools sssd-ad \
  adcli packagekit samba-common-bin oddjob oddjob-mkhomedir \
  krb5-user libpam-sss libnss-sss -y

# Lors de l'installation de krb5-user :
# Realm par défaut : LYCEE.LOCAL  (en MAJUSCULES)
# Serveur KDC     : 192.168.1.10
# Serveur admin   : 192.168.1.10

3. Découvrir et rejoindre le domaine

# Découvrir le domaine
sudo realm discover lycee.local

# Rejoindre le domaine (avec le compte Administrateur du domaine)
sudo realm join -U Administrateur lycee.local

# Saisir le mot de passe Administrateur quand demandé

# Vérifier que la jonction a réussi
sudo realm list

# Résultat attendu :
# lycee.local
#   type: kerberos
#   realm-name: LYCEE.LOCAL
#   domain-name: lycee.local
#   configured: kerberos-member
#   server-software: active-directory
#   client-software: sssd
#   login-policy: allow-realm-logins

4. Configurer SSSD

sudo nano /etc/sssd/sssd.conf
[sssd]
domains = lycee.local
config_file_version = 2
services = nss, pam

[domain/lycee.local]
default_shell = /bin/bash
krb5_store_password_if_offline = True
cache_credentials = True
krb5_realm = LYCEE.LOCAL
realmd_tags = manages-system joined-with-adcli
id_provider = ad
fallback_homedir = /home/%u@%d
ad_domain = lycee.local
use_fully_qualified_names = False   # Connexion avec juste "adupont" au lieu de "adupont@lycee.local"
ldap_id_mapping = True
access_provider = ad
# Permissions strictes sur sssd.conf (obligatoire)
sudo chmod 600 /etc/sssd/sssd.conf
sudo systemctl restart sssd

# Activer la création automatique du home au login
sudo pam-auth-update --enable mkhomedir

5. Autoriser des groupes AD à se connecter

# Autoriser uniquement les membres d'un groupe AD
sudo realm permit -g "GRP-Etudiants@lycee.local"
sudo realm permit -g "Domain Admins@lycee.local"

# Autoriser tout le domaine (moins sécurisé)
sudo realm permit --all

# Vérifier les autorisations
sudo realm list

6. Donner les droits sudo à un groupe AD

# Créer un fichier sudoers pour le groupe AD
sudo visudo -f /etc/sudoers.d/domain-admins
# Donner sudo complet aux Domain Admins AD
%Domain\ Admins@lycee.local ALL=(ALL:ALL) ALL

# Donner sudo limité aux techniciens
%GRP-Techniciens@lycee.local ALL=(ALL) /usr/bin/systemctl, /usr/bin/apt

7. Tester la connexion

# Vérifier qu'un compte AD est reconnu
id adupont
# Résultat : uid=... gid=... groupes=...

# Tester l'authentification Kerberos
kinit adupont@LYCEE.LOCAL
klist

# Se connecter avec un compte AD (depuis SSH)
ssh adupont@poste-linux.lycee.local

# Vérifier la création du home
ls -la /home/adupont/
Pourquoi la synchronisation NTP est-elle critique pour rejoindre un domaine AD ?
  • Pour synchroniser les logs
  • Kerberos refuse l'authentification si le décalage horaire dépasse 5 minutes
  • Pour synchroniser les profils utilisateurs
  • Pour la résolution DNS

✅ Réponse : Kerberos refuse l'authentification si le décalage horaire dépasse 5 minutes

Quel outil simplifie la jonction d'une machine Linux à un domaine Active Directory ?
  • sssd
  • samba
  • realmd
  • krb5-user

✅ Réponse : realmd

Que fait le paramètre use_fully_qualified_names = False dans sssd.conf ?
  • Désactive la résolution DNS
  • Permet de se connecter avec juste adupont au lieu de adupont@lycee.local
  • Désactive Kerberos
  • Active le cache de credentials hors ligne

✅ Réponse : Permet de se connecter avec juste adupont au lieu de adupont@lycee.local

Quelle permission doit avoir le fichier sssd.conf ?
  • 644
  • 755
  • 600
  • 400

✅ Réponse : 600

Quelle commande vérifie qu'un compte AD est bien reconnu sur le système Linux ?
  • ldapsearch -x
  • realm list
  • id adupont
  • getent passwd adupont

✅ Réponse : id adupont