Red Hat et dérivées version SERVEUR

Red Hat, Alma Linux, CentOS : Faire adhérer son serveur à un domaine Active Directory

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières

rhel_ad
Cet article a été testé avec Red Hat Enterprise Linux 8 et 9, AlmaLinux 8 et 9




Introduction



Le domaine Windows Active Directory tourne sur Windows Server 2019 et le niveau fonctionnel est Windows 2016.
Le but final est de pouvoir se connecter sur notre système Linux grâce aux comptes présents dans l'annuaire de Microsoft.

Ici le domaine utilisé pour cette partie en ligne de commande est linuxtrickstest.lan.

Toutes les commandes sont réalisées avec les droits root.

On va voir 2 méthodes :
- En ligne de commande
- Via l'interface Cockpit

Préparer le système



Dans un premier temps, installer les paquets suivants :
Code BASH :
dnf install sssd realmd oddjob oddjob-mkhomedir adcli samba-common


Les paquets installés permettent de contacter l'annuaire LDAP, prendre en charge Kerberos, et des outils pour effectuer des actions sur l'AD.

Il faut aussi s'assurer que :
- le DNS est configuré, et pointe bien sur le contrôleur de domaine.
- le nom d'hôte est défini

Pour tester la résolution du nom de domaine et que ce dernier est bien joignable, on peut tester de le pinguer :

Code BASH :
ping -c 3 linuxtrickstest.lan

Code :
PING linuxtrickstest.lan (192.168.221.1) 56(84) octets de données.
64 octets de 192.168.221.1 (192.168.221.1) : icmp_seq=1 ttl=128 temps=0.362 ms
64 octets de 192.168.221.1 (192.168.221.1) : icmp_seq=2 ttl=128 temps=0.453 ms
64 octets de 192.168.221.1 (192.168.221.1) : icmp_seq=3 ttl=128 temps=0.795 ms
--- statistiques ping linuxtrickstest.lan ---
3 paquets transmis, 3 reçus, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 0.362/0.536/0.795/0.186 ms



Méthode ligne de commande



On va ajouter notre système au domaine via la commande realm :
Code BASH :
realm join --user=t0.linuxtricks linuxtrickstest.lan


Le mot de passe du compte AD est demandé.
Le compte AD utilisé doit posséder les droits de faire adhérer des machines au domaine.
Code TEXT :
Password for [email protected]: 


S'il nous manque des paquets (ou qu'on n'a pas installé les prérequis), ceux-ci sont installés automatiquement :
Code TEXT :
 * Installing necessary packages: oddjob oddjob-mkhomedir


Les fichiers /etc/sssd/sssd.conf , /etc/krb.conf et /etc/krb5.keytab seront configurés au petits oignons grâce à la commande ci-dessus.
Pour vérifier que tout est bon, on peut taper la commande :
Code BASH :
realm list


On voit ici qu'on est bien dans le domaine.
Code :
linuxtrickstest.lan
  type: kerberos
  realm-name: LINUXTRICKSTEST.LAN
  domain-name: linuxtrickstest.lan
  configured: kerberos-member
  server-software: active-directory
  client-software: sssd
  required-package: oddjob
  required-package: oddjob-mkhomedir
  required-package: sssd
  required-package: adcli
  required-package: samba-common-tools
  login-formats: %[email protected]
  login-policy: allow-realm-logins



Méthode cockpit



Après connexion à l'interface cockpit du serveur, avec des droits superutilisateur, cliquer sur Joindre au domaine sur le tableau de bord général (onglet Aperçu) :

rhel_ad_cockpit_dashboard



Saisir les informations du domaine, d'un compte AD possédant les droits de faire adhérer des machines au domaine et son mot de passe :

rhel_ad_cockpit_jonction



Le lien précédemment nommé Joindre au domaine indique le nom du domaine dans lequel la machine se trouve. En cliquant dessus, on retrouve les informations relatives au domaine :

rhel_ad_cockpit_domaineok



Vérification de l'adhésion



On peut constater que notre RHEL est bien adhéré au domaine depuis la console AD Windows :

rhel_ad_windows_ueto_ad



Pour vérifier les comptes qui peuvent se connecter à ce système on peut utiliser la commande id :
Code BASH :
id adrien.linuxtricks@linuxtrickstest.lan


On peut observer les groupes de l'utilisateur concerné.
Code :
uid=1037001103([email protected]) gid=1037000513(utilisateurs du [email protected]) groupes=1037000513(utilisateurs du [email protected])


Remarquez que pour se connecter au domaine, il faut en effet saisir le nom de l'utilisateur suivi de l'arobase et du domaine.

Paramétrer sssd pour ne pas utiliser le nom pleinement qualifié



Cette étape n'est pas obligatoire. Cependant, si vous voulez éviter de vous connecter avec un login complet du style :
Code TEXT :


et n'utiliser que
Code TEXT :
adrien.linuxtricks


On peut changer ce comportement en modifiant le fichier /etc/sssd/sssd.conf.
Par défaut :
Code BASH :
use_fully_qualified_names = True
fallback_homedir = /home/%u@%d


On modifie en :
Code BASH :
use_fully_qualified_names = False
fallback_homedir = /home/%u


Si on souhaite prendre en compte le nouveau fichier de configuration de sssd il faut redémarrer le service :
Code BASH :
systemctl restart sssd


Maintenant on vérifie que ça fonctionne avec un compte simple :
Code BASH :
id adrien.linuxtricks


Code BASH :
uid=1037001103(adrien.linuxtricks@linuxtrickstest.lan) gid=1037000513(utilisateurs du domaine@linuxtrickstest.lan) groupes=1037000513(utilisateurs du domaine@linuxtrickstest.lan)



Connexion avec son compte LDAP



Pour se connecter :
Code BASH :
su - adrien.linuxtricks@linuxtrickstest.lan

Utiliser le mot de passe du compte Active Directory.

En graphique, sur l'écran de connexion GDM, on saisi dans le champ utilisateur : [email protected]

rhel_ad_gdm



Si GDM affiche des utilisateurs locaux, on peut forcer la saisie du nom d'utilisateur.
Se connecter en utilisateur gdm :
Code BASH :
su - gdm -s /bin/bash


Lancer une session dbus :
Code BASH :
export $(dbus-launch)


Changer la configuration de gdm via gsettings :
Code BASH :
gsettings set org.gnome.login-screen disable-user-list true


Une fois connecté, le dossier utilisateur est créé et on peut utiliser notre système :

rhel_ad_session_ouverte



Par défaut, tous les utiliateurs peuvent se connecter mais n'ont pas les droits de super utilisateur et ne peuvent pas utiliser la commande sudo.

Si on a configuré précédemment sssd pour que le nom pleinement qualifié ne soit pas utilisé, on saisira uniquement le nom d'utilisateur, sans le @linuxtrickstest.lan

Quitter le domaine



Méthode ligne de commande



On souhaite retirer le système du domaine, on utilisera la commande :
Code BASH :
realm leave --user=t0.linuxtrcicks linuxtrickstest.lan


La machine sera retirée de l'AD et les fichiers de config seront remis à leur valeur par défaut.

Méthode cockpit



On peut retirer le système du domaine avec cokpit. Sur le tableau de bord général (Aperçu), cliquer sur le nom du domaine dans le pavé Configuration.
Développer le menu "Quitter le domaine" puis Quitter le domaine :

rhel_ad_cockpit_domainequitter



La méthode avec cockpit ne demande pas d'identifiant. Par conséquent, même su le système n'a plus d'information sur le domaine, l'objet Ordinateur reste dans l'annuaire et il faudra le supprimer à la main.


Configurer des groupes comme sudoers



Il suffit de créer un groupe de domaine local sur le domaine AD qui s'appelle par exemple GDL-SUDOERS. (on pourra créer un groupe par serveur si on veut plus de granularité, à adapter en fonction de votre cas d'usage)
On y ajoute les utilisateurs qui ont besoin d'avoir accès à la commande sudo.
Ensuite sur le système on configure sudo :
Code BASH :
visudo


Ensuite, on ajoute une une ligne de ce type :
Code BASH :
%GDL-SUDOERS@linuxtrickstest.lan    ALL=(ALL)       ALL


Le mot de passe demandé lors de l'exécution de sudo sera bien entendu celui de votre compte AD.

Il est possible d'utiliser un groupe par défaut déjà présent dans Active Directory.
Si vous avez un nom de groupe avec des espaces, on échappe les espaces avec l'antislash :
Code BASH :
%admins\ du\ domaine@linuxtrickstest.lan    ALL=(ALL)       ALL


Si on a configuré précédemment sssd pour que le nom pleinement qualifié ne soit pas utilisé, on devra saisir uniquement le nom du groupe, sans le @linuxtrickstest.lan