Tu en as marre de jongler entre des comptes utilisateurs sur chaque machine Linux de ton infra ? LDAP + SSSD, c’est la solution pour centraliser l’authentification, que tu sois team LDAP Linux classique ou Active Directory.

Alors accroche ta ceinture, on va voir comment transformer ton réseau en un paradis de l’authentification centralisée, où chaque utilisateur peut se connecter avec son mot de passe LDAP, sans que tu aies besoin de créer un compte local à chaque fois.


Pourquoi LDAP et SSSD ?

LDAP (Lightweight Directory Access Protocol)

C’est l’annuaire qui stocke les comptes utilisateurs, groupes, et tout ce qui va avec. Deux options :

LDAP “classique” (OpenLDAP ou 389-DS) → Pour les puristes Linux.

Active Directory (AD) → Pour ceux qui veulent centraliser leur infra et s’aligner avec les standards Windows.

SSSD (System Security Services Daemon)

Le client magique qui permet à ta machine Linux de parler avec LDAP/AD, de mettre en cache les identités et d’authentifier les utilisateurs sans perdre l’accès en cas de panne du serveur LDAP.

Gère LDAP et AD sans prise de tête

Permet la mise en cache des identifiants (SSO possible)

Autorise l’auto-création du home directory


Déploiement de SSSD avec LDAP Linux Classique ou Active Directory

1. Installer SSSD et les Outils LDAP

Sur Debian / Ubuntu, installe les paquets nécessaires :

sudo apt update && sudo apt install -y sssd libnss-sss libpam-sss ldap-utils adcli realmd krb5-user samba-common-bin packagekit

Petite dose d’humour geek : On ne peut pas encore installer l’intelligence collective de Stack Overflow par apt install, mais promis, ça viendra…


2. Configurer SSSD pour LDAP

🟢 Cas 1 : LDAP Linux Classique (OpenLDAP, 389-DS, etc.)

Crée le fichier /etc/sssd/sssd.conf :

sudo nano /etc/sssd/sssd.conf

Ajoute cette configuration :

[sssd]
services = nss, pam
config_file_version = 2
domains = home.stranix.net

[domain/home.stranix.net]
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
cache_credentials = true

ldap_uri = ldap://ldap.home.stranix.net
ldap_search_base = dc=home,dc=stranix,dc=net
ldap_default_bind_dn = cn=admin,dc=home,dc=stranix,dc=net
ldap_default_authtok_type = password
ldap_default_authtok = supermotdepasseultrasecurisé123

ldap_user_search_base = ou=users,dc=home,dc=stranix,dc=net
ldap_group_search_base = ou=groups,dc=home,dc=stranix,dc=net
enumerate = true

🔵 Cas 2 : Active Directory (AD)

Si tu es sous Active Directory, c’est un peu plus “automagique”. Vérifie que ton serveur Linux peut joindre l’AD :

realm discover domain.local

Si c’est bon, rejoins le domaine :

sudo realm join --user=Administrateur domain.local

Génère une configuration SSSD spécifique à AD :

[sssd]
services = nss, pam
config_file_version = 2
domains = domain.local

[domain/domain.local]
id_provider = ad
access_provider = ad
cache_credentials = true
enumerate = false

ad_server = dc1.domain.local,dc2.domain.local
ad_domain = domain.local
ldap_id_mapping = true

3. Protéger le Fichier de Config (Parce que Sécurité)

sudo chmod 600 /etc/sssd/sssd.conf
sudo chown root:root /etc/sssd/sssd.conf

4. Activer et Lancer SSSD

sudo systemctl enable --now sssd

Vérifie que SSSD tourne bien :

systemctl status sssd

Si problème, on fouille les logs (et on sort le café) :

journalctl -xe | grep sssd

5. Vérifier l’Authentification LDAP/AD

Liste les utilisateurs LDAP/AD :

getent passwd utilisateur_ldap

Si tu vois une ligne du genre :

utilisateur_ldap:x:1001:1001:Nom Utilisateur:/home/utilisateur_ldap:/bin/bash

C’est que ton LDAP fonctionne ! 🚀

Testons maintenant une connexion avec :

su - utilisateur_ldap

6. Configurer PAM pour que tout soit Smooth

Ajoute sss dans /etc/nsswitch.conf :

passwd:         files systemd sss
group:          files systemd sss
shadow:         files sss

Et dis à PAM de créer automatiquement le home directory des utilisateurs LDAP/AD lors de leur première connexion :

echo "session required pam_mkhomedir.so skel=/etc/skel umask=0077" | sudo tee -a /etc/pam.d/common-session

7. Activer le SUDO pour les Groupes LDAP/AD

Si tu veux que tes utilisateurs LDAP/AD puissent utiliser sudo, modifie /etc/sudoers :

sudo visudo

Ajoute cette ligne (pour LDAP classique) :

%admins  ALL=(ALL) ALL

Ou pour Active Directory (le groupe Domain Admins) :

%Domain\ Admins ALL=(ALL) ALL

8. Bonus : Gérer les Routes pour un Accès Restreint

Si ton serveur LDAP/AD est sur un réseau spécifique, assure-toi d’ajouter une route correcte :

sudo ip route add 192.168.1.0/24 via 10.8.0.1 dev eth0

Ainsi, ton Linux saura comment joindre le serveur LDAP/AD.


Conclusion

Tu es maintenant un authentificateur ninja ! 🎩

Tous tes utilisateurs sont centralisés dans LDAP/AD

Un seul compte pour toutes les machines Linux

Connexion et sudo possibles sans création manuelle de comptes

Gestion propre avec SSSD et mise en cache

Si ça marche du premier coup, tu peux t’auto-attribuer un achievement geek 🏆.

Si ça ne marche pas, souviens-toi :

🛠️ Regarde les logs.

🛠️ Teste avec ldapsearch ou getent passwd.

🛠️ Reboote SSSD avec systemctl restart sssd.

Et si vraiment, ça ne fonctionne pas… tu peux toujours prétendre que c’était prévu et refiler ça à ton collègue. 😏

À bientôt pour de nouvelles aventures d’admin barbu !