Samba version 4.0 (publiée en 2012) est capable de servir de contrôleur de domaine (DC) Active Directory (AD).
Samba peut fonctionner à un niveau fonctionnel de forêt de Windows Server 2008 R2, ce qui est plus que suffisant pour gérer des entreprises sophistiquées qui utilisent Windows 10/11 avec des exigences de conformité strictes.
La solution de Microsoft n’est donc pas le seul moyen d’y parvenir ; le logiciel libre Samba permet de déployer un contrôleur de domaine Active Directory (PDC).
Avec ce contrôleur, vous pouvez alors créer des utilisateurs, et même définir des politiques.
Dans ce tutoriel, nous allons déployer l’AD Samba sur une instance du serveur Ubuntu 20.04 ou Debian.

Table des matières
Introduction
Samba en tant que DC AD supporte :
- Le serveur LDAP intégré comme back end AD
- Le Centre de Distribution de Clés (KDC) Kerberos de Heimdal
- Samba fournit un support expérimental pour le MIT Kerberos KDC fourni par votre système d’exploitation si vous exécutez Samba 4.7 ou plus
- Hébergement et administration d’objets de stratégie de groupe à utiliser pour la gestion de flotte d’entreprise
Côté DNS, Samba fournit un support pour une gestion DNS (SAMBA_INTERNAL).
Il supporte aussi l’utilisation du serveur DNS BIND comme back end DNS sur un contrôleur de domaine (DC) Samba Active Directory (AD).
Le back-end BIND9_DLZ est recommandé pour les configurations DNS complexes que le serveur DNS interne de Samba ne prend pas en charge.
Dans ce tutoriel, la configuration du PDC et domaine sera la suivante :
- Le nom du domaine (REALM) : MAKDOMAINE.LOCAL
- Le nom du domaine (WORKGROUP) : MAKDOMAINE
- Le nom du PDC sera : dc1.makdomaine.local
- L’adresse IP : 10.0.0.254
- La résolution DNS sera interne : SAMBA_INTERNAL
Configurer Samba en contrôleur de domaine
Configurer le nom d’hôte
- Configurez le nom d’hôte :
sudo hostnamectl set-hostname dc1
- Facultatif, vous pouvez aussi éditer le fichier HOSTS afin d’ajouter le nom d’hôte dc1 mais bind9 doit déjà faire le boulot
sudo vim /etc/hosts
- Ajoutez l’entrée suivante dans le fichier HOSTS :
10.0.0.254 dc1 dc1.makdomaine.local
Installer Samba
Installez Samba avec APT :
sudo apt install samba smbclient winbind libpam-winbind libnss-winbind krb5-kdc libpam-krb5 -y
Au cours de l’installation, il vous sera demandé de saisir le royaume Kerberos version 5 par défaut. Ne tenez pas compte de cette demande (et des erreurs qui s’ensuivent), car nous la configurerons plus tard. Une fois le logiciel installé, vous êtes prêt à configurer votre contrôleur de domaine (DC).
Comment configurer Samba comme contrôleur AD
Puis on déplace les fichiers de configuration par défaut afin de les recréer :
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
sudo mv /etc/krb5.conf /etc/krb5.conf.bak
sudo samba-tool domain provision --use-rfc2307 --interactive
La commande devrait reprendre le REALM et le domaine par défaut du fichier de votre hôte, alors acceptez les valeurs par défaut. Vous voudrez accepter les valeurs par défaut pour les deux questions suivantes (Rôle du serveur, DNS Backend).
Lorsque vous atteignez l’adresse IP du transitaire DNS, utilisez un service DNS auquel vous faites confiance, comme Cloudflare, FAI ou Google. Enfin, il vous sera demandé de créer un mot de passe pour l’utilisateur Administrateur. Assurez-vous que ce mot de passe est fort et unique.
Si vous ne voulez pas utiliser le mode interactif, inspirez-vous de cette commande :
samba-tool domain provision --server-role=dc --use-rfc2307 --dns-backend=SAMBA_INTERNAL --realm=MAKDOMAINE.LOCAL --domain=MAKDOMAINE --adminpass=Passw0rd
Cela doit créer une entrée [global] dans /etc/samba/smb.conf avec la configuration suivante :
[global] netbios name = DC1 realm = MAKDOMAINE.LOCAL workgroup = MAKDOMAINE dns forwarder = 1.1.1.1 server role = active directory domain controller server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbindd, ntp_signd, kcc, dnsupdate idmap_ldb:use rfc2307 = yes
L’étape suivante consiste à copier le fichier de configuration Kerberos avec la commande :
sudo cp /var/lib/samba/private/krb5.conf /etc
Dernière configuration
Configurer les serveurs Samba pour qu’il se lance au démarrage du système via systemctl.
sudo systemctl mask smbd nmbd winbind
sudo systemctl disable smbd nmbd winbind
sudo systemctl stop smbd nmbd winbind
sudo systemctl unmask samba-ad-dc
sudo systemctl start samba-ad-dc
sudo systemctl enable samba-ad-dc
Editez le fichier /etc/resolv.conf pour modifier le serveur DNS avec l’adresse IP du PDC et ajoutez la directive search
nameserver 10.0.0.254
search MAKDOMAINE
Eventuellement désactiver systemd-resolved :
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
Enfin redémarrez le serveur :
sudo reboot
Tester et vérifier la configuration samba
Ensuite vérifiez que la résolution DNS fonctionne.
L’enregistrement SRV _ldap basé sur tcp dans le domaine :
host -t SRV _ldap._tcp.makdomaine.local.
L’enregistrement de ressource SRV _kerberos basé sur udp dans le domaine :
host -t SRV _kerberos._udp.makdomaine.local.
L’enregistrement A du contrôleur de domaine :
host -t A dc1.makdomaine.local.
Lister des tickets Kerberos mis en cache :
klist
Créer le compte administrateur du domaine
Une fois que le domaine Windows et le contrôleur de domaine Samba sont en place, vous pouvez créer le mot de passe du compte administrator.
Pour cela, utilisez la commande suivante :
kinit Administrator
Puis testez que vous pouvez vous connecter avec le compte administrator :
smbclient //localhost/netlogon -UAdministrator -c 'ls'
Voici la procédure pour créer un nouvel utilisateur dans le domaine Windows Samba.
Passez la commande suivante pour créer l’utilisateur mak :
sudo smbpasswd -a mak
Puis pour activer l’utilisateur :
sudo smbpasswd -e mak
Enfin pour accorder à l’utilisateur le droit de se connecter au PDC :
sudo net rpc rights grant "MAKDOMAINE" SeMachineAccountPrivilege SePrintOperatorPrivilege SeAddUsersPrivilege -U Administrator
sudo net groupmap add ntgroup="Administrator" unixgroup=root rid=512 type=d
Comment joindre le domaine Samba
Voici comment faire joindre un PC en Windows 10 ou Windows 11 le domaine Active Directory avec Samba en tant que contrôleur de domaine.
- Configurez le DNS de Windows avec l’adresse du contrôle de domaine Samba. Au besoin, aidez vous de ce tutoriel : Comment changer les DNS de Windows
- Puis allez dans les propriétés systèmes et Modifier
- Dans domaine, saisissez le nom du domaine
- Identifiez-vous avec le compte administrator ou tout autre compte qui l’est
- Au bout de quelques secondes, le PC joint le domaine
- Puis un redémarrage est nécessaire
- Enfin identifiez vous avec un compte du domaine
Liens
- Le protocole SMB (Server Message Block) : fonctionnement et versions
- Monter un partage Windows sous Linux avec Samba
- Configurer Samba en contrôleur de domaine (PDC)
- Samba : créer un partage invité/public sans mot de passe (guest)
- smb.conf : exemple et configuration
- Comment sécuriser Samba
- smbclient-ng : se connecter à un partage SMB facilement