Introduction
IntĂ©grer une machine Linux dans un domaine Active Directory est un petit chef-dâĆuvre dâĂ©quilibre entre protocoles : LDAP pour lire les donnĂ©es, Kerberos pour sâauthentifier, DNS pour trouver le domaine, et SSSD pour tout relier.
Dans ce projet, on passe Ă la pratique totale : configuration, jonction au domaine, audit LDAP, montage SMB en SSO et scripts dâautomatisation Bash.
Voir l’article correspondant : ICI
đŻ Objectifs du projet
- Joindre une machine Linux Ă un domaine Active Directory.
- Authentifier des utilisateurs AD via SSSD.
- Interroger LDAP pour auditer les comptes et groupes.
- Monter un partage SMB/CIFS avec Kerberos.
- Ăcrire des scripts Bash dâaudit Active Directory.
âïž PrĂ©-requis
| Concept | Exemple concret / commande |
|---|---|
| Paquets nécessaires | dnf install realmd sssd adcli samba-common-tools cifs-utils oddjob-mkhomedir openldap-clients |
| Services Ă activer | systemctl enable --now sssd oddjobd |
| Synchronisation NTP | timedatectl set-ntp true |
| Résolution DNS | /etc/resolv.conf doit pointer vers un DC (nameserver 192.168.1.10) |
| Compte AD disposant du droit âJoin computersâ | ex : admin-join@exemple.com |
đ Ătape 1 â Kerberos cĂŽtĂ© Linux
Kerberos gĂšre toute la confiance entre le poste Linux et le domaine.
| Concept | Exemple concret / commande |
|---|---|
| Fichier de configuration | /etc/krb5.conf :[libdefaults]default_realm = EXEMPLE.COMdns_lookup_kdc = true |
| Test dâobtention de ticket | kinit admin-join@EXEMPLE.COM |
| VĂ©rification | klist â doit afficher un TGT valide |
| Révocation du ticket | kdestroy |
| Astuce admin | Activez KRB5_TRACE=/dev/stdout pour tracer la négociation Kerberos |
Pourquoi ?
Kerberos permet le SSO (Single Sign-On) sécurisé : plus besoin de mot de passe en clair, tout passe par un ticket chiffré temporaire.
đ§© Ătape 2 â SSSD : authentifier les utilisateurs AD
SSSD (System Security Services Daemon) est la brique dâintĂ©gration entre Linux et Active Directory.
Il interagit avec PAM (authentification) et NSS (résolution des identités).
| Concept | Exemple concret / configuration |
|---|---|
| Fichier principal | /etc/sssd/sssd.conf |
| Exemple minimal | ini<br>[sssd]<br>services = nss, pam<br>domains = exemple.com<br><br>[domain/exemple.com]<br>id_provider = ad<br>access_provider = ad<br>use_fully_qualified_names = False<br>fallback_homedir = /home/%u<br>default_shell = /bin/bash<br>cache_credentials = True |
| Permissions | chmod 600 /etc/sssd/sssd.conf |
| Activation | systemctl restart sssd |
| VĂ©rification | id alice â affiche lâUID/GID issus dâAD |
Pourquoi ?
SSSD interroge LDAP pour les identitĂ©s et Kerberos pour lâauthentification.
Il garde un cache local, utile si le DC devient temporairement inaccessible.
đ§ Ătape 3 â Joindre le domaine Active Directory
Deux approches existent : realmd/adcli (moderne) et Samba/net ads join (classique).
a) Via realmd/adcli (recommandé)
| Concept | Exemple concret / commande |
|---|---|
| Découverte du domaine | realm discover exemple.com |
| Jonction | realm join --user=admin-join@EXEMPLE.COM exemple.com |
| Vérification | realm list |
| Test utilisateur AD | su - alice@exemple.com |
| Délégation sudo | realm permit --groups 'LinuxAdmins' |
b) Via Samba net ads join (optionnel)
| Concept | Exemple concret / commande |
|---|---|
Fichier smb.conf minimal | ini<br>[global]<br>workgroup = EXEMPLE<br>security = ads<br>realm = EXEMPLE.COM<br>kerberos method = secrets and keytab |
| Commande de jonction | net ads join -k |
| Vérification | wbinfo -u, wbinfo -g |
Astuce :
Le fichier /etc/krb5.keytab contient le ticket machine.
Ne jamais le copier ni le partager.
đ Ătape 4 â Interroger Active Directory via LDAP
Une fois joint au domaine, on peut auditer AD directement en ligne de commande.
| Concept | Exemple concret / commande |
|---|---|
| RequĂȘte LDAP avec Kerberos | ldapsearch -Y GSSAPI -b "DC=exemple,DC=com" "(objectClass=user)" sAMAccountName |
| Utilisateurs désactivés | ldapsearch -Y GSSAPI -b "DC=exemple,DC=com" "(userAccountControl:1.2.840.113556.1.4.803:=2)" sAMAccountName |
| Machines inactives (>90j) | ldapsearch -Y GSSAPI -b "DC=exemple,DC=com" "(&(objectClass=computer)(pwdLastSet<=132542400000000000))" cn pwdLastSet |
| Groupes & membres | ldapsearch -Y GSSAPI -b "OU=Groupes,DC=exemple,DC=com" "(objectClass=group)" cn member |
Pourquoi ?
Ces commandes permettent dâauditer lâĂ©tat rĂ©el du domaine sans console graphique.
Parfait pour les scripts dâaudit ou de conformitĂ©.
đ Ătape 5 â Monter un partage SMB/CIFS avec Kerberos
Grùce à la jonction Kerberos, Linux peut accéder à des partages Windows en SSO.
| Concept | Exemple concret / commande |
|---|---|
| Obtenir un ticket Kerberos | kinit alice@EXEMPLE.COM |
| Monter un partage SMB sécurisé | sudo mount -t cifs //srvad/partage /mnt/share -o sec=krb5,cruid=$(id -u alice) |
| Vérifier le montage | `df -h |
| Démonter proprement | umount /mnt/share |
| Astuce | Pour dépanner : smbclient -k //srvad/partage (mode interactif) |
đ§ź Ătape 6 â Scripts dâaudit Active Directory en Bash
Ces scripts sâexĂ©cutent depuis nâimporte quelle machine Linux membre du domaine.
đč Exemple 1 : lister les utilisateurs dĂ©sactivĂ©s
#!/bin/bash
ldapsearch -Y GSSAPI -b "DC=exemple,DC=com" \
"(userAccountControl:1.2.840.113556.1.4.803:=2)" \
sAMAccountName | grep sAMAccountName | awk '{print $2}' > users_disabled.csv
echo "Export terminé : $(wc -l < users_disabled.csv) utilisateurs désactivés."
đč Exemple 2 : dĂ©tecter les ordinateurs inactifs
#!/bin/bash
THRESHOLD=120 # jours
NOW=$(date +%s)
ldapsearch -Y GSSAPI -b "DC=exemple,DC=com" "(objectClass=computer)" cn pwdLastSet |
while read -r line; do
# Conversion de pwdLastSet en secondes
if [[ "$line" =~ pwdLastSet:\ ([0-9]+) ]]; then
FILETIME=${BASH_REMATCH[1]}
LASTSET=$(( (FILETIME/10000000)-11644473600 ))
AGE=$(( (NOW - LASTSET)/86400 ))
if (( AGE > THRESHOLD )); then
echo "Machine inactive : $AGE jours"
fi
fi
done
Pourquoi ?
Ces scripts automatisent les audits rĂ©currents sans dĂ©pendre dâoutils tiers.
đ§± Ătape 7 â SĂ©curitĂ© et durcissement
| Concept | Recommandation |
|---|---|
| LDAPS obligatoire | Activez le port 636 et validez le certificat CA |
| Permissions keytab | chmod 600 /etc/krb5.keytab |
| Rotation machine | Vérifiez via net ads changesecret ou cron Ansible |
| AccĂšs restreint | simple_allow_groups = LinuxAdmins dans sssd.conf |
| Audit | Activez la journalisation SSSD (debug_level = 9) pour traquer les authentifications |
đ§© Ătape 8 â DĂ©pannage rapide
| SymptĂŽme | Cause probable / solution |
|---|---|
kinit: Clock skew too great | NTP dĂ©synchronisĂ©, corrigez lâheure |
Cannot contact any KDC | DNS mal configuré, vérifiez _kerberos._tcp |
Permission denied aprĂšs join | compte AD sans droit âJoin computersâ |
sss_cache incohérent | Purgez le cache : sss_cache -E |
ldap_sasl_interactive_bind_s failed | ticket expirĂ© â refaites kinit |
⥠Cas avancés
- Sudo via groupes AD :
Ajoutezsudo_provider = addanssssd.confet définissez les rÚgles via GPO ou sudoers.d. - Création automatique de home :
Activezpam_mkhomedir.sopour créer/home/%uà la premiÚre connexion. - Automount NFS avec identités AD :
Possible viaautofset Kerberos (intégration avancée).
đŹ Retour dâexpĂ©rience du lecteur
Vous avez intégré des serveurs Linux à AD dans des environnements multi-domaines ?
Vos retours sur les performances de SSSD ou les problÚmes de cache sont précieux : partagez-les en commentaire !
đ§Ș Exercices pratiques
| Exercice | Description |
|---|---|
| E1 â Kerberos | Configurer /etc/krb5.conf et valider lâobtention dâun TGT (klist) |
| E2 â Join AD | Joindre le domaine EXEMPLE.COM et vĂ©rifier la connexion dâun utilisateur AD |
| E3 â Audit LDAP | CrĂ©er un script Bash exportant la liste des utilisateurs dĂ©sactivĂ©s |
| E4 â SMB SSO | Monter un partage Windows via Kerberos (mount.cifs sec=krb5) |
đ§© Conclusion
LâintĂ©gration Linux â Active Directory repose sur quatre piliers : Kerberos, LDAP, SSSD et SMB.
Bien configurĂ©e, elle permet dâutiliser les identitĂ©s AD de maniĂšre fluide dans Bash et dâautomatiser les audits via scripts.
Cette approche unifie lâadministration des systĂšmes hybrides et prĂ©pare le terrain pour des environnements cross-platform sĂ©curisĂ©s et maintenables.
Et vous, comment avez-vous intégré vos serveurs Linux à Active Directory ?
Partagez votre expérience et vos astuces !
â Solutions des exercices

E1 â Kerberos :kinit alice@EXEMPLE.COM && klist doit afficher un ticket valide.
E2 â Join AD :realm join --user=admin-join@EXEMPLE.COM exemple.com puis id alice â UID/GID renvoyĂ©s.
E3 â Audit LDAP :
Utiliser ldapsearch -Y GSSAPI "(userAccountControl:1.2.840.113556.1.4.803:=2)".
E4 â SMB SSO :sudo mount -t cifs //srvad/share /mnt/share -o sec=krb5,cruid=$(id -u alice) puis df -h.
đ§ Pour aller plus loin avant ou aprĂšs ce projet :
Avant de plonger dans les tableaux et structures, jette un Ćil Ă ces articles complĂ©mentaires :
- đ§ Bases du scripting Bash â comprendre le shebang, les variables et la structure dâun script.
- âïž Variables et opĂ©rateurs en Bash â tout sur les variables spĂ©ciales, dâenvironnement et les opĂ©rateurs.
- đ Boucles et conditions en Bash â la logique rĂ©pĂ©titive : for, while, if, case.
- đ§© Tableaux, dictionnaires – structures avancĂ©es en Bash – Part 4
- đ§ Gestion des erreurs et dĂ©bogage en Bash – maĂźtriser la gestion des erreurs Bash, du
set -eautrap ERR– Part 5 - đ§Ÿ Fichiers, logs et flux en Bash (Audit & Maintenance) – Savoir les lire, les transformer, les filtrer – Part 6
- đ§° Services, rĂ©seau et supervision sous Linux – Du systemctl au monitoring Bash – Part 7
Liens externes recommandés :
