Active Directory Authentication avec Samba
Prérequis¶
- Connaissances de base de Active Directory
- Connaissances de base de LDAP
Introduction¶
Active Directory (AD) de Microsoft est, dans la plupart des entreprises, le système d'authentification standard pour les systèmes Windows et pour les applications externes connectées à LDAP. Il permet de configurer les utilisateurs et les groupes, le contrôle d'accès, les permissions, le montage automatique, etc.
Alors que la connexion de Linux à un cluster AD ne peut pas prendre en charge toutes les fonctionnalités mentionnées, elle peut gérer les utilisateurs, les groupes et le contrôle d'accès. Il est même possible (grâce à quelques ajustements de configuration du côté Linux et à certaines options côté AD) de distribuer des clés SSH à l'aide d'Active Directory.
La manière par défaut d'utiliser Active Directory sur Rocky Linux utilise SSSD mais Samba offre une alternative plus complète. Par exemple, le partage de fichiers peut se faire avec Samba mais pas avec SSSD. Ce guide, cependant, couvrira uniquement la configuration de l'authentification sur Active Directory à l'aide de Samba et n'inclura aucune configuration supplémentaire du côté Windows.
Découvrir et joindre AD en utilisant Samba¶
Remarque
Le nom de domaine `ad.company.local` dans ce guide représentera le domaine Active Directory. Pour suivre ce guide, remplacez-le par le nom de votre domaine AD.
La première étape pour relier un système GNU/Linux à AD consiste à connecter votre Cluster AD, pour s'assurer que la configuration réseau est correcte des deux côtés.
Préparations¶
- Assurez-vous que les ports suivants sont ouverts sur votre hôte GNU/Linux dans le contrôleur de domaine :
Service | Port(s) | Notes |
---|---|---|
DNS | 53 (TCP+UDP) | |
Kerberos | 88, 464 (TCP+UDP) | Utilisé par kadmin pour définir et mettre à jour les mots de passe |
LDAP | 389 (TCP+UDP) | |
LDAP-GC | 3268 (TCP) | Catalogue global LDAP - vous permet de trouver des identifiants d'utilisateur à partir d'Active Directory |
- Assurez-vous d'avoir configuré votre contrôleur de domaine AD en tant que serveur DNS sur votre hôte Rocky Linux :
Avec NetworkManager :
# where your primary NetworkManager connection is 'System eth0' and your AD
# server is accessible on the IP address 10.0.0.2.
[root@host ~]$ nmcli con mod 'System eth0' ipv4.dns 10.0.0.2
- Assurez-vous que les horloges sont synchronisées des deux côtés (hôte AD et système GNU/Linux)
Vérifier l'heure sur Rocky Linux :
[user@host ~]$ date
Wed 22 Sep 17:11:35 BST 2021
- Installez les paquets nécessaires pour la connexion à AD côté GNU/Linux :
[user@host ~]$ sudo dnf install samba samba-winbind samba-client
Connexion automatique¶
Maintenant, vous devriez être en mesure de vous connecter avec succès à votre ou vos serveur(s) AD à partir de votre hôte Linux.
[user@host ~]$ realm discover ad.company.local
ad.company.local
type: kerberos
realm-name: AD.COMPANY.LOCAL
domain-name: ad.company.local
configured: no
server-software: active-directory
client-software: sssd
required-package: oddjob
required-package: oddjob-mkhomedir
required-package: sssd
required-package: adcli
required-package: samba-common
Cela sera découvert à l'aide des enregistrements SRV pertinents stockés dans votre service DNS d'Active Directory.
Connexion¶
Une fois que vous avez découvert avec succès votre installation Active Directory à partir de l'hôte Linux, vous devriez pouvoir utiliser realmd
pour rejoindre le domaine, qui orchestrera la configuration de Samba à l'aide de adcli
et d'autres outils similaires.
[user@host ~]$ sudo realm join -v --membership-software=samba --client-software=winbind ad.company.local
Vous serez invité à saisir le mot de passe administrateur de votre domaine, alors tapez-le.
Si ce processus affiche un problème de chiffrement comme KDC has no support for encryption type
, essayez de mettre à jour la stratégie de chiffrement globale pour autoriser les algorithmes de chiffrement plus anciens :
[user@host ~]$ sudo update-crypto-policies --set DEFAULT:AD-SUPPORT
Si ce processus réussit, vous devriez maintenant pouvoir extraire les informations passwd
pour un utilisateur Active Directory.
[user@host ~]$ sudo getent passwd administrator@ad.company.local
AD\administrator:*:1450400500:1450400513:Administrator:/home/administrator@ad.company.local:/bin/bash
Remarque
`getent` récupère les entrées des bibliothèques Name Service Switch (NSS). Cela signifie que, contrairement à `passwd` ou `dig` par exemple, il interrogera différentes bases de données, y compris `/etc/hosts` pour `getent hosts` ou depuis `samba` dans le cas `getent passwd`.
realm
propose quelques options intéressantes que vous pouvez utiliser :
Option | Observation |
---|---|
--computer-ou='OU=LINUX,OU=SERVERS,dc=ad,dc=company.local' | Le OU où stocker le compte du serveur |
--os-name='rocky' | Spécifie le nom du système d'exploitation stocké dans Active Directory |
--os-version='8' | Indique la version de l'OS stockée dans Active Directory |
-U admin_username | Indique un compte administrateur |
Tentative d'Authentification¶
Now your users should be able to authenticate to your Linux host against Active Directory.
Sous Windows 10 : (qui fournit sa propre copie d'OpenSSH)
C:\Users\John.Doe> ssh -l john.doe@ad.company.local linux.host
Password for john.doe@ad.company.local:
Activate the web console with: systemctl enable --now cockpit.socket
Last login: Wed Sep 15 17:37:03 2021 from 10.0.10.241
[john.doe@ad.company.local@host ~]$
If this succeeds, you have successfully configured Linux to use Active Directory as an authentication source.
Suppression du nom de domaine dans les noms d'utilisateurs¶
Dans une configuration complètement par défaut, vous devrez vous connecter avec votre compte AD en spécifiant le domaine dans votre nom d'utilisateur (par exemple, « john.doe@ad.company.local »). Si ce n'est pas le comportement souhaité et que vous souhaitez plutôt pouvoir omettre le nom de domaine par défaut au moment de l'authentification, vous pouvez configurer Samba pour qu'il utilise par défaut un domaine spécifique.
This is a relatively straightforward process, requiring a configuration tweak in your SSSD configuration file.
[user@host ~]$ sudo vi /etc/samba/smb.conf
[global]
...
winbind use default domain = yes
En ajoutant le winbind use default domain
, vous demandez à Samba de déduire que l'utilisateur tente de s'authentifier en tant qu'utilisateur du domaine « ad.company.local ». This allows you to authenticate as something like john.doe
instead of john.doe@ad.company.local
.
Pour que cette modification de configuration prenne effet, vous devez redémarrer les services smb
et winbind
avec systemctl
.
[user@host ~]$ sudo systemctl restart smb winbind
De la même manière, si vous ne souhaitez pas que vos répertoires personnels soient suffixés avec le nom de domaine, vous pouvez ajouter ces options dans votre fichier de configuration /etc/samba/smb.conf
:
[global]
template homedir = /home/%U
N'oubliez pas de redémarrer les services smb
et winbind
.
Author: Neel Chauhan
Contributors: Steven Spencer