# Joindre le poste Linux au domaine Objectif : configurer le client Debian `linux01` pour qu'il s'authentifie auprès de l'AD, et valider la résolution des utilisateurs et groupes AD. La stack utilisée est la stack standard sur Debian/Ubuntu/RHEL : - `realmd` : outil de découverte et d'adhésion à un domaine - `sssd` : démon qui gère l'intégration (cache, Kerberos, NSS, PAM) - `adcli` : client de bas niveau pour AD - `krb5` : couche Kerberos Tous ces paquets sont déjà présents dans l'image (voir `linux-client/Dockerfile`). ## Démarrer le conteneur ``` docker compose up -d linux01 docker exec -it lab-linux01 bash ``` Le point d'entrée configure automatiquement `/etc/resolv.conf` pour pointer vers l'IP du conteneur `DC01` et ajoute des entrées `hosts` pour les noms AD. Vérifie : ``` cat /etc/resolv.conf cat /etc/hosts | tail ping -c 2 corp.lab ``` ## Découverte du domaine Cmdlet clé : `realm discover`. ``` realm discover corp.lab ``` Tu dois voir une réponse structurée indiquant `type: kerberos` et `server-software: active-directory`. Si tu n'as rien, vérifie la résolution DNS : le DC doit répondre au port 53 sur l'IP utilisée. ## Jonction au domaine Cmdlet clé : `realm join`. ``` realm join -U Administrator corp.lab # Saisir le mot de passe de CORP\Administrator quand demandé ``` Sous le capot, `realmd` : 1. Crée un compte ordinateur `LINUX01` dans `CN=Computers` 2. Génère un keytab Kerberos dans `/etc/krb5.keytab` 3. Configure `/etc/sssd/sssd.conf` 4. Active `sssd` pour les bases NSS (passwd, group) et PAM ## Démarrer sssd Dans un conteneur, systemd n'est pas toujours disponible. On lance sssd directement : ``` sssd --daemon ``` ## Validation Résolution NSS : ``` id pmartin@corp.lab getent passwd pmartin@corp.lab getent group 'GG_Pedagogie@corp.lab' ``` Tu dois voir : - un UID attribué par sssd (grosse valeur, dérivée du SID) - la liste des groupes AD de l'utilisateur, incluant l'imbrication AGDLP Authentification Kerberos : ``` kinit pmartin@CORP.LAB klist ``` `klist` doit afficher un TGT (Ticket Granting Ticket) valide. ## Se connecter en SSH avec un compte AD Si tu as activé SSH dans le conteneur (c'est le cas par défaut avec le Dockerfile fourni), depuis l'hôte : ``` ssh pmartin@lab-linux01 # ou l'IP du conteneur ``` Le home directory est créé automatiquement au premier login grâce au module `pam_mkhomedir` configuré dans l'entrypoint. ## Limiter l'accès à certains groupes AD Par défaut, tous les utilisateurs AD peuvent se connecter. Pour restreindre : ``` realm permit -g "GG_Pedagogie@corp.lab" ``` ou l'inverse (tout interdire sauf exception) via le fichier `/etc/sssd/sssd.conf`. ## Points d'attention - `realm join` échoue si la résolution DNS est mauvaise ou si l'heure du client dérive de plus de 5 minutes par rapport au DC. Sur un conteneur fraîchement démarré, l'heure est celle de l'hôte, ça suffit. - Dans ce lab, la résolution DNS est rusée : le DC annonce une IP interne non routable. On contourne via `/etc/hosts`. En production, tu aurais le DC directement joignable sur le réseau. - `sssd` cache les utilisateurs pendant 6h par défaut. Si tu modifies un groupe côté AD et que l'effet ne se voit pas, lance `sss_cache -E` ou redémarre `sssd`. ## Quitter le domaine ``` realm leave corp.lab ``` Le compte ordinateur est supprimé côté DC, le keytab retiré, sssd désactivé. ## Étape suivante Le lab est complètement opérationnel. Consulte `troubleshooting.md` en cas de souci.