Onglet Active Directory

La fonctionnalité Active Directory est assurée par le logiciel Samba 4[1] en mode Active Directory.

Depuis la version 4.4.6 de Samba, la personnalisation du calcul des identifiants pose problème sur un contrôleur de domaine :

https://wiki.samba.org/index.php/Updating_Samba#Failure_To_Access_Shares_on_Domain_Controllers_If_idmap_config_Parameters_Set_in_the_smb.conf_File

À partir de la version 2.6.1 d'EOLE, le module Seth utilise la version 4.5 de Samba.

Cette version de samba permet notamment la prise en compte de plusieurs DNS Forwarders[2] :

https://wiki.samba.org/index.php/Samba_4.5_Features_added/changed#Multiple_DNS_Forwarders_on_the_AD_DC

Ainsi, la liste complète des serveurs DNS renseignés dans l'interface de configuration du module est prise en compte (et plus seulement le premier de la liste).

À partir de la version 2.6.2 d'EOLE, le module Seth utilise la version 4.7 de Samba.

Cette version est la première à supporter officiellement le RODC[3]. Pour un contrôleur de domaine additionnel, l'activation de ce paramètre est accessible en mode expert.

Attention

À partir d'EOLE 2.6.2, l'instance échoue si la version de Samba installée sur le module n'est pas celle attendue.

Les paquets samba doivent impérativement être mis à jour via Maj-Auto avant l'instance.

Nom du serveur dans le domaine AD

Cette variable est pré-renseignée à l'aide du nom de la machine saisi dans l'onglet Général.

Elle doit cependant respecter les contraintes de nommage NetBIOS[4] et n'est plus modifiable une fois le serveur instancié.

Rôle du serveur Active Directory

Cette variable permet de choisir le Rôle du serveur :

  • contrôleur de domaine ;
  • serveur membre d'un domaine existant.

Dans le cas où le serveur à mettre en place a le rôle de contrôleur de domaine, il faut définir si celui-ci est le contrôleur de domaine principal ou si il s'agit d'un contrôleur additionnel.

Imposer le SID du domaine AD à son initialisation

Dans le cas d'une migration ou d'une réinstallation d'un contrôleur de domaine principal, il est possible de forcer le SID[5] à utiliser pour le domaine.

Forcer le SID s'effectue en deux temps :

  • en passant la variable Imposer le SID du domaine AD à son initialisation à oui ;
  • en renseignant la variable SID du domaine AD.

Après sauvegarde et instance, ces deux variables sont verrouillées et ne peuvent plus être modifiées.

Attention

La prise en compte du SID forcé est réalisée lors de l'initialisation de l'annuaire Active Directory.

Cette variable n'a plus d'utilité une fois le module instancié.

Attention

Le SID n’est pas validé au moment de la saisie. Il est nécessaire de s’assurer qu’il est correct avant de sauvegarder.

Contrôleur de domaine en lecture seule

Dans le cas d'un contrôleur de domaine additionnel, il est possible de préciser si celui-ci est en lecture seule (RODC[3]) ou non.

Forcer le positionnement dans un site AD à l'initialisation

À partir de la version 2.6.2, il est possible de demander à ce qu'un contrôleur de domaine additionnel soit rattaché à un site Active Directory particulier.

Cette demande s'effectue en deux temps :

  • en passant la variable Forcer le positionnement de ce contrôleur de domaine dans un site existant à oui ;
  • en renseignant la variable Site de destination de ce contrôleur de domaine.

Après sauvegarde et instance, ces deux variables sont verrouillées et ne peuvent plus être modifiées.

Attention

La prise en compte du domaine de rattachement est réalisée lors de l'initialisation de l'annuaire Active Directory.

Cette variable n'a plus d'utilité une fois le module instancié.

Attention

Le site doit impérativement avoir été déclaré au préalable sur le contrôleur de domaine principal.

Truc & astuce

Si le contrôleur de domaine principal est un module Seth, la déclaration d'un site s'effectue facilement grâce à la fonction bash samba_update_site :

1
. /usr/lib/eole/samba4.sh 
2
samba_update_site monsite 10.1.1.0/24

Méthode de calcul des uid-gid

Dans le cas d'un serveur membre d'un domaine existant, il est possible de personnaliser la méthode de calcul des UID / GID (IDMAP[6]) en passant la variable Utiliser la méthode par défaut de calcul des uid-gid à non.

Plusieurs domaines cibles avec des limites haute et basse d'adresse IP et des méthodes de calcul différentes (rid, autorid, ad, ldpa, tdb, nss) peuvent être déclarés.

Remarque

Depuis la version 4.4.6 de Samba, la personnalisation du calcul des identifiants pose problème sur un contrôleur de domaine.

https://wiki.samba.org/index.php/Updating_Samba#Failure_To_Access_Shares_on_Domain_Controllers_If_idmap_config_Parameters_Set_in_the_smb.conf_File

Mise en œuvre du service DNS

Choix du composant

Sur les contrôleurs de domaine, un service DNS[7] est obligatoirement mis en place.

Le service DNS peut être assuré par un composant interne de Samba ou délégué à Bind9[8].

Le choix du composant à utiliser s'effectue à l'aide de la variable : Utiliser le service DNS interne de Samba.

À partir d'EOLE 2.7.1, Bind9 est utilisé par défaut (choix non).

Il est possible de forcer l'utilisation du composant interne de Samba en passant la variable à oui.

La commande reconfigure permet de passer d'un composant à l'autre de façon transparente.

Le comportement des deux services est similaire. L’utilisation de Bind9 ne change pas la manière d’ajouter les machines à la base de données DNS de Samba qui en garde la gestion. Bind9 interroge cette base via un greffon.

Attention

Dans une infrastructure mettant en œuvre plusieurs contrôleurs de domaine et la synchronisation des données de l’AD, il est impératif de mettre en œuvre le même type de service DNS pour tous les contrôleurs de domaine.

Dans le cas contraire, la réplication avec la commande samba-tool drs provoquera une erreur.

Transfert de zone

Dans le cas où le service DNS est délégué à Bind, il est possible de restreindre les machines autorisées à demander un transfert de zone[9] auprès du serveur DNS.

Remarque

Ces variables agissent sur le paramètre Samba : dns zone transfer clients.

Le paramètre dns zone transfer clients est issu d'une contribution et n'est, à ce jour, pas intégré nativement dans Samba :

https://gitlab.com/samba-team/samba/-/merge_requests/169.

Empreintes de mot de passe supplémentaires

A partir de la version samba 4.7, il est possible de générer des Hash de mot de passe supplémentaires qui seront stockés dans l'attribut Active Directory : SupplementalCredentials.

L'interface permet d'activer la génération d'empreintes aux formats CryptSHA256 et CryptSHA512.

Pour chaque format sélectionné, il faut préciser le nombre d'itérations à utiliser.

Remarque

Après activation, les empreintes supplémentaires ne seront générées qu'à partir du prochain changement de mot de passe.

Remarque

Ces variables agissent sur le paramètre Samba : password hash userPassword schemes.

Environnement réseau

Adresse des contrôleurs du même domaine

Si plusieurs contrôleurs de domaine doivent être mis en place, il est impératif qu'ils se connaissent les uns les autres.

La variable Adresse IP des contrôleurs de domaine en relation avec ce contrôleur de domaine Active Directory permet de déclarer les adresses IP des autres contrôleurs du domaine.

Pour chacun des contrôleurs déclarés, il est possible de préciser si il a le rôle de serveur KDC[10] et/ou DNS[7].

Contrôleur de référence pour le volume SYSVOL

Dans le cas de la mise en œuvre d'un contrôleur de domaine additionnel, il est recommandé de déclarer le contrôleur de domaine principal en tant référence pour le volume SYSVOL.

Remarque

Dans le monde Microsoft, les contrôleurs de domaine sont habituellement tous au même niveau. Ceci est possible grâce à la réplication de l'annuaire Active Directory et à l'utilisation d'un système de fichiers distribué (DFS[11]).

À l'heure actuelle, la réplication du partage SYSVOL[12] n'est pas supportée par Samba. De ce fait, la mise en œuvre d'une architecture multi-DC[13] avec le module Seth nécessite de définir un contrôleur de domaine principal qui héberge les fichiers SYSVOL de référence et des contrôleurs de domaine additionnels sur lesquels ces fichiers sont synchronisés à intervalle régulier via rsync[14].

Type du contrôleur de référence

En mode expert, toujours dans le cas de la mise en œuvre d'un contrôleur de domaine additionnel, il est possible de préciser le type du serveur de référence.

Cette variable est particulièrement utile dans le cas où le contrôleur de domaine de référence n'est pas un module Seth.

#FIXME

Restrictions d'accès réseau

Le bon fonctionnement d’une infrastructure basée sur un serveur Active Directory nécessite un certain nombre d’interactions avec d’autres serveurs et les postes clients.

Les ports suivants sont concernés par ces interactions :

  • 53 (DNS)

  • 5353 (broadcast DNS)

  • 123 (NTP)

  • 88 (Kerberos)

  • 445 (SMB CIFS)

  • 135 (MSRPC)

  • 3268 (Global Catalog)

  • 3269 (Global Catalog)

  • 464 (kpasswd)

  • 389 (ldap)

  • 636 (ldaps)

Les ports suivants peuvent être ouverts si nécessaire mais concernent un protocole obsolète :

  • 137 (NetBIOS)

  • 138 (NetBIOS)

  • 139 (NetBIOS)

Sur un module Seth, l'accès aux services Samba et LDAP est ouvert à toutes les sources par défaut.

En mode expert, il est possible de restreindre l'accès réseau sur les services Samba et LDAP à des sources spécifiques.

Personnalisation des ports

Ports NetBIOS

En mode expert, il est possible d'autoriser ou non l'accès au serveur via les ports NetBIOS.

Remarque

Sur un module Seth, les services historiques NetBIOS[4] (ports 137 à 139) sont désactivés par défaut.

Personnalisation des ports RPC

Il est également possible de personnaliser les ports de communication RPC[15].

Remarque

Ces variables agissent sur le paramètre Samba : rpc server port.

Si ils ne sont pas configurés explicitement, le comportement antérieur, à savoir l'utilisation du premier port libre dans la plage 1024-5000, est conservé.

Partage de fichiers

Attributs étendus

Samba permet d’utiliser le module acl_xattr pour stocker les règles d’accès au contenu des partages sous la forme d’attributs étendus compatibles avec le système de fichiers du serveur.

Cette fonctionnalité permet d'utiliser des utilitaires du système pour gérer les règles d'accès aux fichiers et dossiers.

Il est possible de désactiver ce type de stockage dans le cas très particulier où les attributs étendus posent des problèmes pour la gestion des droits.

Cependant, son utilisation reste vivement recommandée sur les serveurs de fichiers :

https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Domain_Controller#Using_the_Domain_Controller_as_a_File_Server

Activation du module de prise en charge des corbeilles

Par défaut lorsque l'on supprime un fichier depuis un partage Samba, il est directement supprimé.

L'option Charger le module recycle pour la prise en charge des corbeilles paramètre Samba afin que les fichiers supprimés soient déplacés dans un répertoire tampon avant la suppression définitive.

Le nom proposé par défaut, .corbeille, définit un répertoire qui sera masqué pour les utilisateurs.

Il est possible de rendre ce répertoire accessible en supprimant le . dans le nom du répertoire.

La durée de conservation des fichiers supprimés est paramétrable.

Remarque

Les fichiers déplacés dans la corbeille sont inclus dans le calcul de l'espace disque occupé par l'utilisateur. Pour limiter les dépassements de quota disque, il est conseillé de paramétrer une durée de conservation assez courte.

Attention

L'activation du module Samba recycle, n'active pas automatiquement la corbeille sur les répertoires partagés.

Pour activer la corbeille sur les répertoires personnels des utilisateurs, il faut passer la variable Activer la corbeille pour le partage "homes" à oui.

Il est également possible de l'activer sur les répertoires partagés, mais cela s'effectue au cas par cas.

Partages utilisateur

Les partages utilisateur et les autres répertoires partagés peuvent être locaux et/ou hébergés sur d'autres serveurs Active Directory.

Sur le serveur local, il est possible d'activer ou non l'hébergement des partages « homes » et « profiles » des utilisateurs.

Dans le cas où l'on ne souhaite pas héberger ces répertoires localement, il est possible d'indiquer le nom d'hôte d'une machine du domaine (un serveur membre par exemple) sur lesquels ils seront stockés.

En mode expert, si les partages et/ou les profils sont gérés localement, il est possible de personnaliser le répertoire dans lequel ils seront stockés sur le serveur.

Si le module recycle est activé, il est également possible d'activer la corbeille Samba pour les répertoires personnels des utilisateurs

Répertoires partagés

Passer la variable Configurer des répertoires partagés à oui permet de déclarer un ou plusieurs partages additionnels. Pour ajouter un ou plusieurs partages il faut cliquer sur le bouton + Nom du répertoire partagé.

Les options à renseigner pour chaque partage supplémentaire sont :

  • le Nom du répertoire partagé ;
  • le Chemin du partage : le chemin Unix du répertoire à partager ;
  • la Description du partage ;
  • Le partage peut être écrit : le partage peut être défini en lecture/écriture ou en lecture seule (option writeable) ;
  • Le partage peut être parcouru : le partage est visible dans le voisinage réseau ou non (option browseable) ;
  • le Masque de permissions pour les fichiers (optionnel) : masque par défaut des fichiers créés (option create mask) ;
  • le Masque de permissions pour les répertoires (optionnel) : masque par défaut des répertoires créés (option directory mask) ;
  • la possibilité d'Activer la corbeille pour le partage (proposé uniquement si le module recycle est activé).
Remarque

Les répertoires déclarés sont pris en compte et créés sur le disque lors de l'instanciation ou la reconfiguration du module.

Truc & astucePartages manuels

Le fichier de configuration /etc/samba/smb.conf est re-généré à chaque reconfiguration du serveur (commande reconfigure).

Il est possible de déclarer des partages supplémentaires manuellement en plaçant un fichier (possédant l'extension .conf) décrivant le partage dans le répertoire /etc/samba/conf.d/ .

Sa prise en compte nécessite un reconfigure.

Options de journalisation

La version samba 4.9 améliore la journalisation des événements et leur complétude.

À partir d'EOLE 2.7.1, il est possible de paramétrer le niveau de journalisation global mais également d'en spécifier un spécifique pour un ou plusieurs événements samba.

Attention

Le nom des variables EOLE associées aux catégories d'événements à journaliser contient des mots clés qui susceptibles d'être détectés par les bloqueurs de publicité des navigateurs.

En cas d'erreur lors de l'édition de ces variables, vérifier que les bloqueurs sont bien désactivés pour ce formulaire.

Remarque

Ces variables agissent sur le paramètre Samba : log level.

Truc & astuce

Pour une modification temporaire du niveau de journalisation, il est préférable d'utiliser la commande smbcontrol :

1
root@dc1:~# smbcontrol smbd debuglevel
2
PID 860: all:0 tdb:0 printdrivers:0 lanman:0 smb:0 rpc_parse:0 rpc_srv:0 rpc_cli:0 passdb:0 sam:0 auth:0 winbind:0 vfs:0 idmap:0 quota:0 acls:0 locking:0 msdfs:0 dmapi:0 registry:0 scavenger:0 dns:0 ldb:0 tevent:0 auth_audit:0 auth_json_audit:0 kerberos:0 drs_repl:0 smb2:0 smb2_credits:0 dsdb_audit:0 dsdb_json_audit:0 dsdb_password_audit:0 dsdb_password_json_audit:0 dsdb_transaction_audit:0 dsdb_transaction_json_audit:0 dsdb_group_audit:0 dsdb_group_json_audit:0
3
root@dc1:~# smbcontrol smbd debug "3 kerberos:4"
4
root@dc1:~# smbcontrol smbd debuglevel
5
PID 860: all:3 tdb:3 printdrivers:3 lanman:3 smb:3 rpc_parse:3 rpc_srv:3 rpc_cli:3 passdb:3 sam:3 auth:3 winbind:3 vfs:3 idmap:3 quota:3 acls:3 locking:3 msdfs:3 dmapi:3 registry:3 scavenger:3 dns:3 ldb:3 tevent:3 auth_audit:3 auth_json_audit:3 kerberos:4 drs_repl:3 smb2:3 smb2_credits:3 dsdb_audit:3 dsdb_json_audit:3 dsdb_password_audit:3 dsdb_password_json_audit:3 dsdb_transaction_audit:3 dsdb_transaction_json_audit:3 dsdb_group_audit:3 dsdb_group_json_audit:3

Options avancées

À partir d'EOLE 2.7.1, il est possible de modifier le format de la base de données interne à Samba et de désactiver le chiffrement des mots de passe qui est appliqué par défaut à partir de la version 4.8 de Samba.

Ces deux paramètres doivent être choisis avant la première instance du module, ils ne sont plus modifiables par la suite.

Format de la base de données interne à Samba

Le backend TDB[16] est le format par défaut de base de données de Samba. Il ne permet pas de gérer de base de données de plus de 4 Go.

Le backend MDB[17] est un format de base de données expérimental mais qui permet de gérer plus d'objets dans l'AD.

Chiffrement des mots de passe

Les attributs sensibles doivent être chiffrés. Certains outils externes (synchronisation) nécessitent des mots de passe en clair, d'où la possibilité de désactiver ce chiffrement.

Remarque

La clé de chiffrement est enregistrée dans le fichier /var/lib/samba/private/encrypted_secrets.key. Elle ne doit jamais être révélée.

Archivage et sauvegarde des données

Un problème de corruption de la base Active Directory peut nécessiter de restaurer une sauvegarde sur le contrôleur de domaine principal et de relancer la synchronisation de tous les autres contrôleurs.

Attention

Il est primordial de disposer d'une archive ou d'une sauvegarde récente des données du serveur Active Directory.

Archivage local

La variable Archiver les données du DC permet d'activer l'exécution quotidienne d'un script d'archivage local et de choisir la destination de stockage de l'archive.

Les données du serveur Active Directory sont ainsi régulièrement sauvegardée (par défaut 1 fois par jour) dans le répertoire spécifié dans Destination de la sauvegarde.

Les éléments concernés par cette archive sont les suivants :

  • la configuration de Samba (/etc/samba) ;
  • le répertoire SYSVOL[12] (/home/sysvol) ;
  • les bases TDB[16] de Samba (/var/lib/samba/private).
Remarque

Le script utilisé pour l'archivage des données est inspiré d'un script mis à disposition par les développeurs du logiciel Samba : https://wiki.samba.org/index.php/Back_up_and_Restoring_a_Samba_AD_DC.

En mode expert, il est possible de spécifier la périodicité et la durée de rétention[18] de la sauvegarde locale.

Sauvegarde locale ou distante

Il est possible de mettre œuvre un système de sauvegarde complet en installant le logiciel Bareos[19] sur le serveur.

La mise en place de cet outil s'effectue manuellement à l'aide de la commande suivante :

# apt-eole install eole-bareos

Après installation des paquets, la configuration du service de sauvegarde s'effectue dans l'interface de configuration du module à plusieurs endroits.

L'archivage du DC soit activé dans l'onglet : Archiver les données du DC doit être à oui.

Par défaut la sauvegarde Bareos est activée (Activer la sauvegarde du serveur à oui dans l'onglet Services) et la tâche de sauvegarde des données du serveur Active Directory est prise en compte (Sauvegarder les archives avec Bareos à oui dans l'onglet Active Directory).

Dans cette configuration, les éléments suivants sont directement sauvegardés par Bareos avec le support des ACL :

  • la configuration de Samba (/etc/samba) ;
  • le répertoire SYSVOL[12] (/home/sysvol).

L'export des bases TDB est quant à lui géré par eole-schedule[20] avant l'exécution des sauvegardes.

Lorsque la sauvegarde des archives avec Bareos est activée la durée de rétention configurable en mode expert ne concerne que le script d'export des bases TDB de Samba.

La configuration à proprement parler des sauvegardes (distante, locale, durée de rétention, taux de compression…) s'effectue dans les onglets Directeur bareos et Stockage bareos.