Présentation de SAMBA
Samba, en tant que Contrôleur de Domaine (DC), est une alternative open-source à
Microsoft Active Directory, permettant l’interopérabilité entre Windows et Linux. Il offre
plusieurs fonctionnalités essentielles telles qu’un annuaire LDAP intégré, une authentification
sécurisée via Kerberos, un service DNS indispensable au bon fonctionnement d’Active Directory,
ainsi que la gestion centralisée des utilisateurs et des stratégies de groupe (GPO). Grâce à ces
capacités, il facilite l’accès aux fichiers et imprimantes partagés tout en assurant un contrôle
précis des droits d’accès. De plus, Samba se distingue par sa flexibilité et son coût nul, ce qui en
fait une solution avantageuse pour les entreprises souhaitant éviter les licences Microsoft tout en
maintenant une gestion efficace de leur réseau. Cependant, bien qu’il prenne en charge
l’essentiel des fonctionnalités d’Active Directory, il présente certaines limitations, notamment un
support partiel des stratégies GPO avancées et une configuration parfois plus complexe.
Néanmoins, avec une installation bien maîtrisée impliquant l’ajout des paquets nécessaires, la
configuration de Kerberos et DNS, ainsi que l’intégration des postes clients, Samba s’impose
comme une solution fiable et performante pour la gestion des utilisateurs et des ressources réseau
dans un environnement hétérogène.
INTRODUCTION
Dans un environnement réseau, la gestion des utilisateurs, des permissions et des
ressources partagées est essentielle. Active Directory (AD) de Microsoft est une
solution largement utilisée pour centraliser cette gestion. Toutefois, une alternative
open-source existe : SAMBA, qui permet aux systèmes Linux/Unix de fonctionner
comme un contrôleur de domaine Active Directory compatible avec Windows.
Ce rapport détaille l’installation et la configuration de SAMBA 4 en tant que
contrôleur de domaine sous Linux. Nous verrons comment installer SAMBA,
configurer ses services, gérer les utilisateurs et intégrer des clients Linux et
Windows dans le domaine.
I. Présentation des services SAMBA
SAMBA est une suite logicielle open-source qui permet l’interopérabilité entre les systèmes
Linux et Windows en utilisant le protocole SMB/CIFS (Server Message Block/Common Internet
File System). Il permet de partager des fichiers et des imprimantes, d’authentifier les utilisateurs
et de servir de Contrôleur de Domaine Active Directory (AD).
Dans un environnement réseau, SAMBA peut être configuré pour différentes utilisations :
➢ Serveur de fichiers et d’imprimantes.
➢ Authentification et gestion des utilisateurs via un domaine Active Directory.
➢ Contrôleur de domaine pour la gestion centralisée des utilisateurs et des machines.
II. Installation de SAMBA
Avant d’installer SAMBA, il est nécessaire de mettre à jour le système et d’installer les
prérequis :
➢ sudo apt update
➢ sudo apt install samba smbclient winbind libnss-winbind libpam-winbind krb5-user
samba-vfs-modules
Lors de l’installation des dépendances nécessaires pour un bon fonctionnement de SAMBA DC
il va falloir :
1. Choisir d'abord un nom pour ton royaume, en majuscules, basé sur ton domaine, comme
[Link]. Assure-toi que les horloges de tous les appareils sont synchronisées.
Enfin, définis les politiques de mot de passe et de gestion des tickets.
2. Vérifie que tous les serveurs et clients du royaume ont des horloges synchronisées.
Kerberos fonctionne avec des tolérances de temps strictes pour la sécurité.
3. Définir des politiques de mot de passe et de gestion des tickets adaptées à ta sécurité. Ça
peut inclure la durée de vie des tickets et les exigences de complexité des mots de passe.
NB : Un nom de domaine DNS pour Kerberos doit être unique et facilement résolvable. Il peut
se terminer par .com, .net, .org, ou même par .local ou .lan pour les utilisations internes.
L'essentiel est qu'il soit conforme aux normes DNS et qu'il soit représentatif de ton réseau. Le
nom du serveur Kerberos, appelé aussi KDC (Key Distribution Center), doit être un nom
d'hôte DNS entièrement qualifié (FQDN), unique sur le réseau, comme
"[Link]". Assure-toi aussi qu'il correspond à l'adresse IP du serveur dans ton
système DNS.
Le FQDN (nom d'hôte DNS entièrement qualifié) est le nom complet du serveur, incluant tous
les niveaux de sous-domaines. Par exemple, "[Link]" est un FQDN. C'est
comme l'adresse complète du serveur sur le réseau, au lieu d'un simple prénom.
"[Link]" est un exemple typique d'un FQDN pour un serveur Kerberos. Il suit la
structure "nomd'hô[Link]". Dans cet exemple, "kdc" est le nom d'hôte,
"mondomaine" est le domaine, et ".com" est l'extension de domaine de premier niveau (TLD).
L’installation de ces paquets permet d’intégrer Linux dans un domaine Active Directory et
d’assurer la communication avec les machines Windows.
III. Configuration des services de SAMBA
Configuration du fichier [Link]
SAMBA nécessite un DNS fonctionnel. Il est important de configurer /etc/[Link] pour
pointer vers un serveur DNS interne :
sudo nano /etc/[Link]
Ajouter les lignes suivantes :
nameserver [Link]
search [Link]
Le fichier /etc/[Link] est utilisé sous Linux pour configurer la résolution DNS (Domain
Name System). Voici l'explication de chaque ligne de votre configuration :
1. nameserver [Link]
Cela indique que le premier serveur DNS utilisé est [Link], qui est une adresse locale.
Sous certaines distributions Linux (notamment Ubuntu avec systemd-resolved), cette adresse
correspond à un service local de résolution DNS qui agit comme un cache DNS et redirige les
requêtes vers d'autres serveurs configurés.
2. nameserver [Link]
Ce deuxième serveur DNS est situé sur le réseau local ([Link]).
Il s'agit probablement du routeur ou d'un serveur DNS interne chargé de la résolution des noms
de domaine.
3. search [Link]
Cela définit un domaine de recherche : lorsqu'un nom de domaine est résolu sans spécifier un
domaine complet, le système ajoutera automatiquement .[Link] à la requête.
Exemple : Si vous tapez server1, le système essaiera de résoudre [Link].
4. option edns0 trust-ad
edns0 active l'extension EDNS0 (Extension Mechanisms for DNS), qui permet d'envoyer des
paquets DNS plus grands et d'améliorer certaines fonctionnalités de résolution DNS.
trust-ad signifie que le résolveur local fait confiance au bit AD (Authenticated Data), qui
indique si la réponse DNS est validée par DNSSEC (DNS Security Extensions).
5. search.
Cela signifie que le domaine de recherche inclut la racine (.), ce qui signifie que les requêtes
seront résolues en utilisant des noms de domaine complets en dernier recours.
En général, cette ligne n’est pas nécessaire, car le DNS fonctionne déjà en cherchant d’abord les
domaines locaux définis dans search, puis en interrogeant les serveurs DNS pour les domaines
externes.
En résumé, cette configuration indique que le système utilise un service DNS local ([Link]),
un serveur DNS sur le réseau ([Link]), applique des domaines de recherche ([Link]),
supporte EDNS0 et DNSSEC, et inclut la racine dans les recherches DNS.
IV. Configurer hostname et hosts
Lors de la configuration d'un contrôleur de domaine Windows (Active Directory) sur un serveur
Linux (via Samba AD DC, par exemple), la configuration correcte du nom d'hôte (hostname) est
cruciale. Voici pourquoi on utilise la commande :
sudo hostnamectl set-hostname [Link]
1. Cohérence avec le domaine Active Directory : Le contrôleur de domaine (DC) fait partie du
domaine [Link], et son nom doit refléter cette appartenance.
[Link] signifie que ce serveur est un contrôleur de domaine (DC1) pour le domaine
[Link]. Cela permet une identification claire dans le réseau.
2. Compatibilité DNS et Kerberos
DNS : Active Directory repose sur le DNS pour localiser les services (LDAP, Kerberos, etc.). Un
hostname bien défini permet une résolution correcte des noms.
Kerberos : Ce service d’authentification basé sur des tickets utilise le nom d’hôte complet
(FQDN - Fully Qualified Domain Name). Un mauvais hostname peut causer des erreurs
d'authentification.
3. Bonne configuration de Samba AD DC
Samba, lorsqu'il est configuré en tant que contrôleur de domaine Active Directory, a besoin d'un
nom d'hôte pleinement qualifié (FQDN). Sans cela, les services AD tels que LDAP, DNS et
Kerberos risquent de ne pas fonctionner correctement.
Assurez-vous que votre serveur a un nom d'hôte correct :
sudo hostnamectl set-hostname [Link]
4. Synchronisation avec le fichier /etc/hosts
Avec la commande :
sudo nano /etc/hosts
Ajouter :
[Link] localhost
[Link] [Link] joker
Le fichier /etc/hosts est utilisé pour associer des adresses IP à des noms d’hôte de manière locale,
avant d’interroger un serveur DNS. Voici l’explication de chaque ligne de votre fichier :
Lignes IPv4
1. [Link] localhost : [Link] est l’adresse de loopback (boucle locale) qui permet à la
machine de se référencer elle-même et localhost est le nom d’hôte associé à cette adresse.
2. [Link] Scylla : [Link] est souvent utilisé sur les machines qui n’ont pas d’adresse IP
réseau fixe (exemple : stations de travail). Scylla est le nom d’hôte attribué à la machine
localement. Cette ligne est souvent ajoutée automatiquement par certaines distributions Linux
(comme Debian et Ubuntu).
3. [Link] [Link] joker : [Link] est l’adresse IP locale du serveur
(probablement sur le réseau interne) et [Link] est le nom d’hôte complet (FQDN -
Fully Qualified Domain Name) du contrôleur de domaine, joker est un alias (nom court) pour le
même serveur. Cette ligne est essentielle pour que la machine puisse se reconnaître correctement
dans un environnement Active Directory ou Samba AD DC.
Lignes IPv6
Ces lignes sont utilisées pour la compatibilité avec IPv6.
4. ::1 ip6-localhost ip6-loopback : ::1 est l’équivalent IPv6 de [Link] en IPv4 (loopback). Et
ip6-localhost et ip6-loopback sont des alias pour cette adresse.
5. fe00::0 ip6-localnet : fe00::0 représente une adresse IPv6 réservée pour le réseau local (non
routable sur Internet).
6. ff00::0 ip6-mcastprefix : ff00::0 est une adresse de multidiffusion IPv6 (utilisée pour envoyer
un message à plusieurs hôtes).
7. ff02::1 ip6-allnodes : ff02::1 est une adresse IPv6 qui atteint tous les nœuds (hosts) du réseau
local.
8. ff02::2 ip6-allrouters : ff02::2 est une adresse IPv6 qui atteint tous les routeurs du réseau
local.
En résumé, ce fichier permet à la machine de se reconnaître et de résoudre localement certains
noms d’hôte sans interroger un serveur DNS. La ligne [Link] [Link] DC1
est cruciale pour que le serveur puisse fonctionner correctement en tant que contrôleur de
domaine. Les entrées IPv6 assurent la compatibilité avec les environnements réseau modernes.
V. Configuration de Kerberos
Modifier le fichier /etc/[Link] pour permettre l’authentification des utilisateurs via Kerberos
avec la commande :
sudo nano /etc/[Link]
Ajouter cette configuration :
[libdefaults]
default_realm = [Link]
dns_lookup_realm = false
dns_lookup_kdc = true
Le fichier /etc/[Link] est la configuration principale du protocole Kerberos, qui est utilisé
pour l’authentification sécurisée dans un environnement Active Directory ou un domaine
Kerberos.
Voici une explication détaillée des paramètres présents dans votre fichier :
Section [libdefaults] : Paramètres généraux
1.default_realm = [Link] : Définit le domaine Kerberos (Realm) par défaut, ici
[Link]. Tous les utilisateurs et services utiliseront ce domaine s’ils ne spécifient pas de
realm explicitement.
2. default_lookup_realm = false : Désactive la recherche automatique du realm Kerberos en
fonction du domaine DNS. Cela force le système à utiliser le default_realm défini ci-dessus.
3. default_lookup_kdc = true : Active la recherche automatique du serveur KDC (Key
Distribution Center) dans les enregistrements DNS.
4. kdc_timesync = 1 : Synchronise l'horloge locale avec celle du serveur KDC pour éviter les
erreurs d’authentification (Kerberos est sensible aux différences d’horloge).
5. Ccache type = 4 : Définit le type de cache des tickets Kerberos (CCache). La valeur 4
correspond au format utilisé par MIT Kerberos.
6. forwardable = true : Permet aux tickets d’être transférés vers d’autres machines sans
nécessiter une nouvelle authentification. Très utile pour les connexions SSH avec Kerberos.
7. proxiable = true : Permet d’obtenir des tickets de procuration pour déléguer des droits à
d’autres services.
8. rdns = false : Désactive l’inversion des résolutions DNS pour Kerberos. Cela évite les
problèmes si le DNS inverse est mal configuré.
9. fcc-mit-ticketflags = true : Active les indicateurs de ticket au format MIT Kerberos. Requis
si vous utilisez Heimdal Kerberos au lieu de MIT Kerberos.
Section [realms] : Définition des serveurs KDC
1. [Link] = {
Définit la configuration du domaine Kerberos (Realm) [Link].
2. kdc = [Link] : [Link] est le serveur KDC (Key Distribution Center). C'est
lui qui délivre les tickets Kerberos pour les utilisateurs et les services.
3. admin_server = [Link] : [Link] est également le serveur d’administration
(Admin Server). Il est utilisé pour gérer les bases de données Kerberos (création, suppression
d’utilisateurs, gestion des tickets, etc.).
En résumé, le fichier /etc/[Link] est configuré pour utiliser Kerberos avec le domaine
[Link], en désactivant certaines fonctionnalités automatiques (résolution inverse DNS)
et en optimisant la synchronisation et la délégation des tickets. Cette configuration est typique
d’un environnement Active Directory basé sur Samba, où Kerberos est utilisé pour authentifier
les utilisateurs et les machines du domaine.
VI. Initialisation Du Domaine Samba Ad
Lancez la commande suivante pour initialiser le domaine Active Directory :
bash
sudo mv /etc/samba/[Link] /etc/samba/[Link]
sudo samba-tool domain provision --use-rfc2307 –interactive
Realm: [Link] :
Domain: SCYLLA :
Server Role: dc :
DNS Backend: SAMBA_INTERNAL :
Administrator Password : Choisissez un mot de passe fort.
VII. Configurer Samba Pour Demarrer Comme Controleur De Domaine
Modifiez le fichier /etc/samba/[Link] généré lors de l'initialisation :
Bash : sudo nano /etc/samba/[Link]
Le fichier doit ressembler à ceci :
Le fichier /etc/samba/[Link] est la configuration principale de Samba, un service qui permet
de partager des fichiers, d'agir en tant que contrôleur de domaine Active Directory (AD DC) et
de gérer l'authentification des utilisateurs dans un réseau Windows/Linux.
Section [global] : Paramètres globaux
1. dns forwarder = [Link] : Configure le redirecteur DNS pour envoyer les requêtes DNS
qu’Active Directory ne peut pas résoudre à un serveur externe. Le [Link] est l’IP du routeur
ou d’un serveur DNS local.
2. netbios name = JOKER : Définit le nom NetBIOS du serveur, qui est JOKER. C’est le nom
que les machines Windows utiliseront pour trouver le serveur via NetBIOS.
3. realm = [Link] : Définit le domaine Kerberos pour l’authentification. Il doit
correspondre exactement au domaine Active Directory ([Link]).
4. server role = active directory domain controller : Indique que Samba fonctionne comme un
contrôleur de domaine (AD DC). Cela signifie qu’il gère l’authentification, les comptes
utilisateurs et les machines du domaine.
5. workgroup = SCYLLA : Définit le nom du groupe de travail NetBIOS. Il doit correspondre
au domaine AD (SCYLLA).
6. idmap_ldb:use rfc2307 = yes : Active la prise en charge des extensions RFC 2307 pour
stocker les UID/GID Unix dans Active Directory. Cela permet une meilleure gestion des
utilisateurs et groupes Linux dans AD.
Section [sysvol] : Répertoire SYSVOL
[sysvol]
path = /var/lib/samba/sysvol
read only = No
sysvol est un dossier partagé utilisé par Active Directory pour stocker des politiques de groupe
(GPO) et scripts de connexion.
path = /var/lib/samba/sysvol : définit son emplacement sur le serveur.
read only = No : permet aux administrateurs AD de modifier son contenu.
Section [netlogon] : Répertoire NETLOGON
[netlogon]
path = /var/lib/samba/sysvol/[Link]/scripts
read only = No
netlogon est un dossier partagé où sont stockés les scripts de connexion exécutés par les
utilisateurs lors de l’ouverture de session.
path = /var/lib/samba/sysvol/ [Link]/scripts : emplacement du dossier netlogon.
read only = No : permet aux administrateurs de modifier les scripts.
En résumé, la configuration Samba définit un contrôleur de domaine Active Directory (AD DC)
nommé DC1 pour le domaine [Link], avec :
✅ Un serveur DNS qui redirige vers [Link].
✅ Le support des identifiants UNIX (RFC 2307).
✅ Les partages obligatoires SYSVOL et NETLOGON pour les stratégies de groupe et scripts
de connexion.
Cette configuration est essentielle pour que Samba fonctionne comme un remplaçant de
Windows Server Active Directory.
VIII. Démarrer Et Activer Les Services Samba
Démarrez les services Samba et configurez-les pour démarrer automatiquement :
Pour que SAMBA fonctionne correctement en tant que contrôleur de domaine, certains services
doivent être arrêtés et désactivés :
sudo systemctl stop smbd nmbd winbind systemd-resolved
sudo systemctl disable smbd nmbd winbind systemd-resolved
Ensuite, activer le service samba-ad-dc :
sudo systemctl unmask samba-ad-dc
sudo systemctl start samba-ad-dc
sudo systemctl enable samba-ad-dc
Ces commandes sont essentielles après l'installation et la configuration de Samba en tant que
contrôleur de domaine (AD DC). Elles permettent d'éviter des conflits entre services et de
s'assurer que Samba fonctionne correctement en mode Active Directory Domain Controller.
1. Arrêter les services inutiles : sudo systemctl stop smbd nmbd winbind systemd-resolved
Arrête les services smbd, nmbd, winbind et systemd-resolved pour éviter les conflits avec
samba-ad-dc. Car smbd et nmbd sont utilisés pour le partage de fichiers et l'exploration du
réseau en mode serveur de fichiers classique, mais ne doivent pas être exécutés sur un AD DC,
winbind est remplacé par le module interne de Samba AD. Et systemd-resolved peut entrer en
conflit avec le service DNS intégré de Samba.
2. Désactiver ces services au démarrage : sudo systemctl disable smbd nmbd winbind
systemd-resolved
Empêche ces services de se lancer automatiquement au redémarrage du serveur. Cela garantit
que seul samba-ad-dc gère les services AD et DNS.
3. Déverrouiller le service Samba AD DC : sudo systemctl unmask samba-ad-dc
unmask signifie réactiver un service qui a été explicitement désactivé. Dans certaines
distributions Linux, samba-ad-dc peut être masqué (masked), ce qui l’empêche de démarrer.
4. Démarrer le service Samba AD DC : sudo systemctl start samba-ad-dc
Lance le service samba-ad-dc, qui prend en charge Active Directory, LDAP, Kerberos, DNS et le
partage SYSVOL.
5. Activer Samba AD DC au démarrage : sudo systemctl enable samba-ad-dc
Configure samba-ad-dc pour se lancer automatiquement à chaque redémarrage du serveur.
Après l’installation de Samba ces commandes sont exécuter pour :
✅ Évite les conflits entre les services Samba traditionnels (smbd, nmbd, winbind) et le mode
AD DC.
✅ Garantit que seul samba-ad-dc gère les rôles Active Directory, DNS et Kerberos.
✅ Permet à Samba de fonctionner comme un contrôleur de domaine complet et fiable.
✅ Assure que le service Samba AD DC redémarre automatiquement après un reboot du serveur.
En résumé,ces commandes désactivent les services obsolètes, activent le bon service Samba
(samba-ad-dc) et s'assurent qu'il fonctionne correctement au redémarrage. Elles sont
indispensables pour garantir la stabilité et la bonne configuration de Samba en tant que
contrôleur de domaine Active Directory.
Vérifier son état :
sudo systemctl status samba-ad-dc
IX. Tester l'installation
Vérifiez que le contrôleur de domaine Samba est bien configuré :
Bash : sudo samba-tool domain level show
• Testez Kerberos en obtenant un ticket pour l'administrateur : Un client Linux peut
rejoindre le domaine et s’authentifier via Kerberos. Vérifier l’obtention d’un ticket
Kerberos :
Bash : kinit administrator@[Link]
• Modification mot de passe Administrator
sudo samba-tool user setpassword administrator
• Désactivation expiration mot de passe pour Administrator
sudo samba-tool user setexpiry administrator --noexpiry
X. Création d’un utilisateur SAMBA
[Link]éation d’un utilisateur agent dans le domaine : sudo samba-tool user create agent
2.Désactiver l’expiration du mot de passe de cet utilisateur : sudo samba-tool user setexpiry
agent --noexpiry
[Link] l’utilisateur agent au groupe des administrateurs du domaine :
sudo samba-tool group addmembers "Domain Admins" agent
Puis redémarrer samba et vérifier le son état :
sudo systemctl restart samba-ad-dc
sudo systemctl enable samba-ad-dc
sudo systemctl status samba-ad-dc
klist : Si la commande klist affiche un ticket valide, Kerberos fonctionne correctement.
Si un ticket est valide, l’authentification fonctionne correctement.
XI. Intégrer Des Machines Windows Dans Le Domaine
Accès depuis un client Windows
Tout d’abord que les machines clientes pointent vers le DNS du serveur Samba AD et procédez à
l'intégration via les paramètres réseau sur Windows.
1. Assurez-vous que le serveur DNS du client Windows pointe vers le contrôleur de domaine
SAMBA.
2. Ouvrez "Paramètres > Système > Informations système".
3. Cliquez sur "Modifier les paramètres" et "Rejoindre un domaine".
4. Entrez "[Link]" comme nom de domaine.
5. Saisissez les informations d’identification de l’administrateur du domaine.
6. Redémarrez la machine pour finaliser l’intégration.
XII. Gestion Via Rsat (Rsat Full Download) Search Server Management
Vous pouvez utiliser les outils RSAT sur Windows pour gérer le domaine Samba depuis une
machine cliente.
Cela devrait vous permettre de configurer Samba 4 comme contrôleur de domaine Active
Directory pour votre domaine [Link].
CONCLUSION
En somme, l’installation et la configuration de Samba en tant que controleur de
Domaine permettent de créer un environnement d’authentification centralisé,
similaire à Active Directory, sous un système Linux. Grâce à Samba, il est possible
de gérer les utilisateurs, les groupes, les permissions et les ressources partagées de
manière efficace et sécurisée.
Cette solution open-source offre une alternative robuste aux infractructures
Windows Server, avec l’avantage de la flexibilité et de la réduction des coûts liés
aux licences. Cependant, sa mise en place exige une bonne maîtise des
configurations réseau, des protocoles d’authentification (LDAP, Kerberos) et des
stratégies de sécurité.
Samba en contrôleur de Domaine constitue un excellent choix pour les entreprises
ou institutions souhaitant un système d’administration centralisé et interopérable
avec les environnements Windows, tout en bénéficiant de la stabilité et de la
personnalisation d’un serveur Linux.