Installer Samba 4 – Active Directory sous Linux


Présentation

Nous allons, dans ce tutoriel, créer un Contrôleur de Domaine Active Directory sous Linux.
Pour cela, nous allons installer et configurer Samba 4.
Nous verrons également comment intégrer des machines à ce domaine.

Ce tutoriel a été prévu pour Debian 11, Debian 12 et Ubuntu Server 22.04.
Dans ce tutoriel, Samba 4 est installé sur un serveur virtuel Proxmox VE (PVE).


1) Installation de Samba 4

1.1) Les Versions de Samba 4

A la date à laquelle j’écris ce tutoriel, le dépôt officiel d’Ubuntu 20.04 propose Samba 4.11 (4.7 pour Ubuntu 18.04).
Il y a une nouvelle version de Samba tous les 6 mois.
Mais ce n’est pas pour autant qu’elle sera disponible sur le Dépôt d’Ubuntu.

A ce rythme, la version Samba 4.11 sera abandonnée vers Mars 2021 par la Samba Team.
Cela signifie qu’elle ne recevra plus de mise à jour pour corriger les bugs, la sécurité et apporter des évolutions.

J’ai donc choisi de récupérer les versions de Samba directement à la source.
Nous aurons ainsi une meilleure maîtrise des mises à jour et bénéficierons des nouvelles fonctionnalités.

1.2) Préparation de l’environnement :

Important : A partir d’ici, toutes les commandes seront exécutées en tant que root.
Avant d’installer Samba 4 et de créer un Contrôleur de Domaine, il faut s’assurer que le système est correctement configuré.

1.2.1) Configurer une IP statique :

Il est important de désactiver le DHCP sur le serveur et de configurer l’interface principale avec une IP statique.

1.2.2) Configuration de l’heure :

Vous pouvez obtenir la liste des fuseaux horaires acceptés en utilisant la commande : timedatectl list-timezones

1.2.3) Modification du fichier « hosts » :

Ajouter une ligne semblable à 172.27.1.210 dc1.jjworld.lan dc1

Enregistrer les modifications : Ctrl + S
Quitter nano : Ctrl + X
Si les modifications n’ont pas été enregistrées, la question vous sera posée.



1.3) Installation de Samba 4

1.3.1) Mise à jour du dépôt et des paquets :
1.3.2) Installation des paquets nécessaires à la compilation de Samba 4 :
Uniquement Ubuntu 20.04 :
1.3.3) Nettoyage des fichiers résiduels :
1.3.4) Téléchargement et extraction de Samba 4 :
1.3.5) Configuration du compilateur :

Attention : Le répertoire samba-4.xx.x sera différent en fonction de la version téléchargée.


1.3.6) Compilation et Installation de Samba :


1.3.7) Verrouillage du paquet Samba :

Cette étape est importante pour éviter d’installer accidentellement Samba en provenance du dépôt officiel (plus ancien).

1.3.8) Vérifications installation :
1.3.9) Affichage des fichiers et répertoires de Samba :
1.3.10) Redémarrage de Samba 4 (Uniquement en cas de Mise à jour) :

Se rendre à l’étape Redémarrage de Samba après Mise à jour


2) Création d’un domaine avec Samba 4

2.1) Nettoyage de l’environnement

2.2) Promouvoir le serveur en Contrôleur de Domaine

Remarque : Pour ajouter un contrôleur de domaine à un domaine existant passer directement à l’étape 2.7.

Les 2 derniers paramètres sont à modifier en fonction du contexte :
--realm : Nom du royaume Kerberos en MAJUSCULE. Ex : JJWORLD.LAN
--domain : Nom du domaine. Exemple : JJWORLD
--option="dns forwarder=xx.xx.xx.xx" : IP du serveur DNS pour les résolutions de domaines externes

Autres paramètres :
--password : Mot de passe du compte administrator. (Volontairement omis)

2.3) Modification mot de passe Administrator

Un mot de passe complexe est exigé.

2.4) Désactivation expiration mot de passe pour Administrator

2.5) Création d’un nouvel Administrateur

Création :
Désactivation expiration mot de passe :
Ajout dans le groupe Administrators :

2.7) Intégrer un contrôleur de domaine supplémentaire

jjworld.lan : Nom du domaine à rejoindre.
--option="dns forwarder=172.27.1.1" : IP du serveur DNS de résolution externe.
--server=DC1 : Contrôleur de domaine existant sur lequel s’authentifier.
-U"JJWORLD\administrator" : Nom de l’utilisateur ayant le droit d’intégrer un nouveau contrôleur de domaine.

2.8) Récupération configuration Kerberos

2.9) Configuration DNS

2.9.1) Serveur de résolution des domaines externes
Modifier ou ajouter une ligne « dns forwarder = «  avec l’Adresse IP de votre serveur DNS capable de résoudre des nom de domaine externes. (Ex : votre Box opérateur).
2.9.2) Serveur de résolution DNS et domaine par défaut
Ajouter des lignes semblables à :
nameserver 172.27.1.210
search jjworld.lan
domain jjworld.lan

Il s’agit de l’IP du serveur AD lui même.

Important : Seul le serveur lui même doit figurer dans la liste des serveurs DNS nameserver.
Après cette modification, nous ne pouvons plus résoudre les noms des domaines externes.
Il sera donc impossible d’installer des paquets par exemple.
La résolution DNS sera rétablie dans les étapes suivantes.

2.9.3) Vérification port DNS non-utilisé

Remarque : Inutile sur Debian 12.

Dans mon cas, le programme systemd-resolve utilise déjà le port 53.
Cela posera problème car Samba utilise son propre serveur DNS.
Nous allons donc arrêter et désactiver systemd-resolve.

2.9.4) Désactivation systemd-resolve

Remarque : Inutile sur Debian 12.

Désactivation du Listener :
Décommenter la ligne DNSStubListener et position la valeur no.
Arrêt et désactivation du service :

2.10) Démarrage Samba

2.10.1) Arrêt et Désactivation des anciens services

Des erreurs peuvent survenir car certains services ne sont pas présents.
Le but ici est d’arrêter tous les services connus qui pourraient interférer avec Samba 4.

2.10.2) Activation et Démarrage du Service Samba

Note : La résolution DNS devrait être rétablie.

2.11) Création d’une zone de recherche inversée

DC1 : Nom de votre serveur
1.27.172.in-addr.arpa : Adresse du sous réseau inversée. (Le sous réseau était 172.27.1.0).
–username : Compte ayant l’autorisation de créer la zone
Un mot de passe sera demandé.


3) Test de l’installation Samba 4

3.1) Test ACLs

3.2) Test des attributs étendus

3.3) Test DNS

3.3.1) Résolutions internes :
Contrôleur de Domaine :
Serveur Kerberos :
Serveur LDAP :
3.3.2) Résolution externe :

3.4) Test Kerberos

Récupération d’un ticket Kerberos :
Affichage des tickets Kerberos :

3.5) Test de SMB

Un mot de passe sera demandé.

3.6) Vérification de la réplication


4) Installation d’un serveur NTP

Cette étape est importante si vous souhaitez intégrer un serveur FreeNAS au Domaine.

4.1) Installation

Désactivation du service NTP par défaut
Mise à jour du dépôt et des paquets
Installation du paquet NTP

4.2) Configuration

4.2.1) Modification fichier ntp.conf
Sauvegarde de l’ancien fichier :
Modification du fichier :

Remarque : Pour Debian 11 et Ubuntu 22.04, /etc/ntp.conf

Il faudra ajouter les lignes :
tinker panic 0 : Uniquement si votre serveur est une Machine Virtuelle
logfile /var/log/ntp
ntpsigndsocket /var/lib/samba/ntp_signd

Il faudra ajouter mssntp à la fin des lignes « restrict … »
4.2.2) Redémarrage du service NTP
4.2.3) Corriger les permissions du répertoire ntp_signd

Cette correction m’a permis de résoudre un problème de décalage horaire entre mon contrôleur de domaine et mon ordinateur


5) Intégration d’une machine Windows au Domaine

5.1) Configuration DNS

Renseigner l’adresse IP du nouveau contrôleur de domaine ou d’un autre serveur capable de résoudre le nom de domaine.

5.2) Intégration au Domaine

Un utilisateur et un mot de passe seront demandés.
Un redémarrage sera nécessaire.

5.3) Ouverture de session avec un compte AD

5.4) Installation des Outils RSAT

Ouvrir Powershell en tant qu’Administrateur et exécuter le code suivant :

Remarque : La sécurité Windows bloque certaines actions avec le compte administrator (Ou Administrateur) que ce soit en ligne de commande ou via l’interface graphique.
C’est la raison pour laquelle j’ai crée un utilisateur jean membre du groupe Administrateurs du Domaine.

Cependant, si vous souhaitez désactiver cette sécurité, il faudra au préalable exécuter le code suivant dans Powershell :

Il faudra ensuite fermer puis rouvrir la session administrator et ré-exécuter le premier code Powershell.


6) Intégration d’un serveur FreeNAS au Domaine

6.1) Configuration DNS

Domain : Renseigner le domaine par défaut
Nameserver : Renseigner l’adresse IP du Contrôleur de Domaine

6.2) Intégration au Domaine

Domain Name : jjworld.lan
Domain Account Name : Utilisateur ayant le droit d’intégrer une machine au domaine
Domain Account Password : Mot de passe de l’utilisateur

6.3) Vérification

En ligne de Commande :

Se connecter en SSH au serveur FreeNAS et lancer les commandes suivantes :

Lister les utilisateurs du domaine :
Lister les groupes du domaine :


8) Sauvegarde de Samba

Votre domaine sous Samba 4 est maintenant fonctionnel.
Il va falloir mettre en place une tâche afin que son état soit régulièrement sauvegardé.
En cas de panne, cela permet de restaurer l’Active Directory dans un état antérieur à la panne.

Vérification de l’intégrité de la base de données :

Si des erreurs sont présentes, il est possible de tenter une réparation en exécutant la commande suivante :
samba-tool dbcheck --cross-ncs --fix

Il est recommandé d’effectuer une sauvegarde de samba avant de lancer cette commande.

Sauvegarde de la base de données :

–targetdir : Répertoire de destination de la sauvegarde (Si le répertoire n’existe pas, il sera créé).
Note : Bien que la commande spécifie un argument « offline », il n’est pas nécessaire d’arrêter le service samba.service

Planification de la sauvegarde :

Il ne reste plus qu’à créer une tâche Cron pour effectuer une sauvegarde périodiquement.

Lancement de crontab :
Ajout de la ligne suivante :

L’exemple précédent effectuera une sauvegarde tous les dimanches à 20H00.

Lister les taches :


9) Mise à jour de Samba 4

1) Recommandations

Avant d’effectuer une Mise à jour, il est vivement recommandé de faire une sauvegarde de Samba et de lire attentivement la note d’informations relative à la nouvelle version.
Sources : Upgrading a Samba AD DC

2) Téléchargement et extraction de la nouvelle version de Samba

Une fois que le service Samba sera arrêté, il ne sera plus possible de résoudre le nom de domaine (si Samba a été configuré pour utiliser le serveur DNS interne).

3) Arrêter le service Samba

Il faudra arrêter le Service Samba sur l’ensemble des Contrôleurs de Domaine.

4) Désinstaller Samba

5) Compiler et Installer Samba

Compiler et Installer la nouvelle version de Samba à partir de l’étape Configuration du compilateur.

6) Démarrer le service Samba

Démarrage du service samba

Voilà ! C’est terminé !

Vous avez enfin créé votre contrôleur de domaine grâce à Samba AD.
Il ne reste plus qu’à :

  • Créer vos propres utilisateurs et groupes
  • Intégrer d’autres machines au domaine
  • Utiliser la section commentaires pour me faire part de vos remarques ou problèmes rencontrés.
  • Visiter la page de la documentation officielle pour aller encore plus loin.
  • Faire un don pour soutenir notre travail

En savoir plus sur Jj World

Subscribe to get the latest posts sent to your email.

13 Comments Posted

  1. Bonjour, belle documentation, pouvez vous me donner de plus amples informations sur ‘Décommenter la ligne DNSStubListener et position la valeur no.’ merci d’avance

    • Bonjour Stéphane,
      Comme indiqué dans l’étape du dessus, le service systemd-resolve est un service qui permet la résolution de noms de domaine et écoute sur le port 53.
      Ce service est généralement activé par défaut sur Ubuntu 20.04.
      Il faut l’arrêter et le désactiver si il tourne car il empêchera le bon fonctionnement de Samba qui écoute également sur le port 53.

      • J’avais coupé ce service, mais je me demandais ce que ça ajoutait de modifier l’option avant de le couper
        Je met en place actuellement un serveur sur une section de BTS
        Je teste tout sur Virtualbox avant, globalement ça marche
        j’ai eu des problèmes avec le fichier /etc/resolv.conf qui était tout le temps modifié par le système, pas évident d’avoir une réponse clair sur ce point. Y a t’il un lien avec le client dhcp ?

  2. Merci pour ce tuto, clair
    Toutefois je rencontre un soucis sur la partie LDAP et KERBEROS

    Les deux « dig -t SRV _ldap._tcp.domain.lan » et « dig -t SRV _ldap._tcp.domain.lan » répondre NOK alors que les autres OK

    Il a également fallut installer le paquet apt install krb5-kdc pour initialiser la base de données et lancer la commande kinit -V administrator@DOMAIN.LAN

    voici ma config debian 10.8 en VM, samba version 4.13.4

    si quelqu’un à une idée
    je vous remercie d’avance

    • Salut bbworld,
      Je te confirme que le tuto fonctionne avec Debian 10.8.
      Les tests dig sont OK pour moi sans devoir installer le paquet krb5-kdc.
      Tu as peut être loupé une étape.

      Attention, à l’Etape 2.1, on renomme les fichiers de configuration existant.

      • Merci Kevin, l’erreur était bien située entre la chaise et le clavier, dans /etc/resolv.conf il est important de faire attention à mettre l’adresse IP du serveur AD.
        Sinon je confirme cela fonctionne bien sous debian 10.8 et ubuntu 20.10
        Merci

  3. Bonjour, merci pour ce tuto sur samba4, ils sont plutôt rare sur le web ou alors incomplet.
    Avec mon samba j’essaye d’authentifier des linux avec kerberos sans entrer dans le domaine, sssd permet ça. Mais j’ai du mal.
    Peut être un prochain tuto 🙂

  4. This is absolute Gold this awesome tutorial! I’ve been using it since 2020 and used again to update my samba domain to 4.16. Merci Beacoupe Kevin, c’est genial!

  5. Bonjour et merci pour ce super tuto.

    Je ne connaissais pas ton site, c’est le besoin qui m’a permis de le trouver.
    J’ai suivi le tuto avec un Debian 12.2.0 en VMware et Samba 4.19.2. Tout fonctionne parfaitement, j’ai bien l’intention de le monter au boulot pour un réseau de 120 postes.

    Pour info:
    Une ligne section 2.1 a renvoyé une erreur car le fichier smb.conf n’existe pas à ce stade, donc inutile de le backup
    (mv –backup=t /etc/samba/smb.conf /etc/samba/smb.conf.backup)

    Par contre, bien que tout fonctionne, le service kerberos (krb5-kdc) ne démarre pas (failed) car il cherche /var/lib/krb5kdc/principal…
    La BDD n’existe nulle part.

    Je ne comprends pas comment je peux authentifier mes clients sans Kerberos ?

    PS: J’ai parcouru tes autres tutos qui semblent au moins aussi bien 🙂

    Merci à toi!

    • Bonjour Pandore,
      Merci beaucoup pour ton retour.
      Dans la partie « 2.8.2) Activation et Démarrage du Service Samba », la commande « samba-tool processes » affiche bien un service nommé « kdc_server ».

  6. Bonjour,

    je me suis débrouillé, j’ai créé la base avec :
    kdb5_util -r MONDOMAINE.LAN create -s

    Puis le fichier acl:
    touch /etc/krb5kdc/kadm5.acl

    Mais la surprise vient plutôt du fait que j’arrivais à connecter mes clients sans aucun problème ni message d’erreur.

    Merci encore et continue à nous faire des super tutos (FOG Project ?) 😉

3 Trackbacks & Pingbacks

  1. Installer NextCloud 19 - Cloud Personel - Français - Jj World
  2. FreeNAS 11.3 - Installation Complète - Tutoriel Français
  3. Installation et configuration de serveur Samba-AD sur CentOS7 – My blog

Laisser un commentaire