Red Hat, Alma Linux, CentOS : Faire adhérer son serveur à un domaine Active Directory
Table des matières
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
Dans un premier temps, installer les paquets suivants :
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 :
On va ajouter notre système au domaine via la commande realm :
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.
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 :
On voit ici qu'on est bien dans le domaine.
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) :
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 :
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 :
On peut constater que notre RHEL est bien adhéré au domaine depuis la console AD Windows :
Pour vérifier les comptes qui peuvent se connecter à ce système on peut utiliser la commande id :
On peut observer les groupes de l'utilisateur concerné.
Remarquez que pour se connecter au domaine, il faut en effet saisir le nom de l'utilisateur suivi de l'arobase et du domaine.
Cette étape n'est pas obligatoire. Cependant, si vous voulez éviter de vous connecter avec un login complet du style :
et n'utiliser que
On peut changer ce comportement en modifiant le fichier /etc/sssd/sssd.conf.
Par défaut :
On modifie en :
Si on souhaite prendre en compte le nouveau fichier de configuration de sssd il faut redémarrer le service :
Maintenant on vérifie que ça fonctionne avec un compte simple :
Pour se connecter :
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]
Une fois connecté, le dossier utilisateur est créé et on peut utiliser notre système :
On souhaite retirer le système du domaine, on utilisera la commande :
La machine sera retirée de l'AD et les fichiers de config seront remis à leur valeur par défaut.
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 :
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 :
Ensuite, on ajoute une une ligne de ce type :
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 :
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]:
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) :
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 :
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 :
Vérification de l'adhésion
On peut constater que notre RHEL est bien adhéré au domaine depuis la console AD Windows :
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]
Une fois connecté, le dossier utilisateur est créé et on peut utiliser notre système :
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 :
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