Samba DC en tant que second contrôleur dans le domaine AD Windows 2012R2 et dossiers redirigés pour les clients sur Windows et Linux.

Samba DC en tant que second contrôleur dans le domaine AD Windows 2012R2 et dossiers redirigés pour les clients sur Windows et Linux.
La prise de conscience que j'étais tombé dans une situation d'importation est venue progressivement. Ce n'est que lorsque des livraisons récentes d'ordinateurs ont commencé à arriver de l'organisation supérieure avec le système d'exploitation « Alt Linux » à bord que j'ai commencé à me douter de quelque chose.

Cependant, au cours de mon passage par les étapes de l'acceptation de l'inévitable, j'ai commencé à m'investir et même à prendre un peu plaisir au processus. À un moment donné, j'ai pensé qu'avec un tel rythme, tôt ou tard, je devrais renoncer aux solutions de Microsoft pour l'organisation des services d'annuaire et me diriger vers quelque chose de plus exotique. Ainsi, pour me préparer à l'inévitable et tenter d'identifier autant de pièges que possible, il a été décidé de déployer un banc d'essai comprenant :

  • DC1 — Windows Server 2012R2
  • DC2 — Alt Server 8.2
  • Serveur de fichiers — Windows Server 2012R2
  • PC1 — Windows 7
  • PC2 — Alt Station de travail 8.2

Tâches du banc d'essai :

  1. Déployer un domaine basé sur w2k12r2. Créer un ensemble minimal de stratégies de groupe (similaires à celles utilisées dans l'infrastructure de travail), y compris la politique de redirection des dossiers des utilisateurs (Téléchargements/Documents/Bureau). En fin de compte, je souhaite que lorsqu'un utilisateur change de poste de travail de Windows à Linux et vice versa, il ait un accès confortable à ses documents de travail.
  2. Ajout de Samba DC en tant que deuxième contrôleur. Vérification de la réplication des services d'annuaire et DNS
  3. Configuration des clients Linux pour travailler avec des dossiers redirigés

Réalisation :

  1. Installation et mise en service du nouveau contrôleurAvec l'installation de MS Windows 2012R2, tout est simple et relativement clair. Il existe mille et une manuels en ligne sur le déploiement de domaines sous Windows, tant par GUI qu'avec Powershell, je ne vais donc pas le répéter, je me contenterai de le lien la documentation officielle, pour ceux qui seraient curieux ou souhaiteraient rafraîchir leur mémoire.

    Cependant, un point important reste à signaler ici. À ce jour, Samba ne sait pas travailler avec des schémas d'annuaire supérieurs à 2008R2.

    Titre du spoiler En fait, les développeurs ont déclaré ce support comme expérimental. Mais en pratique, essayer d'ajouter Samba en tant que second DC dans un domaine Windows existant avec un schéma 69 vous fera rencontrer l'erreur suivante

    DsAddEntry a échoué avec le statut WERR_ACCESS_DENIED info (8567, 'WERR_DS_INCOMPATIBLE_VERSION')

    Le problème est que Windows 2012 et 2012R2 utilisent des outils WMI pour gérer les domaines et les forêts, une prise en charge stable de ceux-ci n'ayant été annoncée qu'avec la version Samba 4.11, qui doit sortir d'ici la fin de cette année.
    Il en découle que la seule option pour introduire Samba dans un domaine AD déployé sur un serveur 2012R2 est de rétrograder le schéma de 69 à 47. Bien sûr, sur une infrastructure de production, cela ne doit pas être fait sans raisons valables, mais comme nous avons ici un environnement de test, pourquoi pas.

    Installons Alt Server 8.2. Pendant l'installation, sélectionnez le profil « Serveur Samba-DC (contrôleur AD) ». Une fois le serveur déployé, nous procédons à une mise à jour complète du système et installons le paquet task-samba-dc, qui tirera tout le nécessaire.

    # apt-get install task-samba-dc

    Si jamais le task-samba-dc, en dépit des assurances de la documentation d'Alt, refuse d'installer tout le nécessaire.

    # apt-get install python-module-samba-DC samba-DC-common samba-DC-winbind-clients samba-DC-winbind samba-DC-common-libs libpytalloc-devel

    Nous passons ensuite à la configuration de Kerberos et à l'obtention d'un ticket. Ouvrons le fichier krb5.conf, allons à la section [libdefaults], et modifions-le comme suit :

    # vim /etc/krb5.conf
     dns_lookup_kdc = true
     dns_lookup_realm = true
     default_realm = TEST.LOCAL

    Demandons un ticket

    # kinit administrator
    Password for administrator@TEST.LOCAL:

    Vérifions la liste des tickets Kerberos obtenus

    # klist
    Ticket cache: KEYRING:persistent:0:0
    Default principal: administrator@TEST.LOCAL
    
    Valid starting       Expires              Service principal
    16.05.2019 11:51:38  16.05.2019 21:51:38  krbtgt/TEST.LOCAL@TEST.LOCAL
            renew until 23.05.2019 11:51:35

    Maintenant, supprimons ou renommer le fichier de configuration Samba existant.

    # mv smb.conf smb.conf.bak1

    Et enfin, introduisons-le dans le domaine AD comme second contrôleur :

    # samba-tool domain join test.local DC -U"TESTadministrator"

    L'introduction réussie sera accompagnée du journal suivant

    Recherche d'un DC enregistrable pour le domaine 'test.local'
    DC trouvé DC1.TEST.LOCAL
    Mot de passe pour [TESTadministrator]:
    Reconnexion au maître de nom e31d7da6-8f56-4420-8473-80f2b3a31338._msdcs.TEST.LOCAL
    Le nom DNS du nouveau maître de nom est DC1.TEST.LOCAL
    Le groupe de travail est TEST
    Le royaume est TEST.LOCAL
    Ajout de CN=DC2,OU=Domain Controllers,DC=TEST,DC=LOCAL
    Ajout de CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=TEST,DC=LOCAL
    Ajout de CN=NTDS Settings,CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=TEST,DC=LOCAL
    Ajout des SPNs à CN=DC2,OU=Domain Controllers,DC=TEST,DC=LOCAL
    Définition du mot de passe du compte pour DC2$
    Activation du compte
    Appel de la provision bare
    Recherche d'adresses IPv4
    Recherche d'adresses IPv6
    Aucune adresse IPv6 ne sera assignée
    Configuration de share.ldb
    Configuration de secrets.ldb
    Configuration du registre
    Configuration de la base de données des privilèges
    Configuration de la base de données idmap
    Configuration de la base de données SAM
    Configuration des partitions et paramètres de sam.ldb
    Configuration de sam.ldb rootDSE
    Pré-chargement du schéma Samba 4 et AD
    Une configuration Kerberos adaptée à Samba AD a été générée à /var/lib/samba/private/krb5.conf
    Provision OK pour DN de domaine DC=TEST,DC=LOCAL
    Démarrage de la réplication
    Schéma-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objets[402/1426] valeurs_liées[0/0]
    Schéma-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objets[804/1426] valeurs_liées[0/0]
    Schéma-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objets[1206/1426] valeurs_liées[0/0]
    Schéma-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objets[1608/1426] valeurs_liées[0/0]
    Schéma-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objets[1743/1426] valeurs_liées[0/0]
    Analyse et application des objets de schéma
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objets[402/2240] valeurs_liées[0/24]
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objets[804/2240] valeurs_liées[0/24]
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objets[1206/2240] valeurs_liées[0/24]
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objets[1608/2240] valeurs_liées[0/24]
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objets[1772/2240] valeurs_liées[24/24]
    Réplication des objets critiques du DN de base du domaine
    Partition[DC=TEST,DC=LOCAL] objets[109/110] valeurs_liées[26/29]
    Partition[DC=TEST,DC=LOCAL] objets[394/5008] valeurs_liées[29/29]
    Fini avec la NC toujours répliquée (base, config, schéma)
    Réplication de DC=DomainDnsZones,DC=TEST,DC=LOCAL
    Partition[DC=DomainDnsZones,DC=TEST,DC=LOCAL] objets[42/42] valeurs_liées[0/0]
    Réplication de DC=ForestDnsZones,DC=TEST,DC=LOCAL
    Partition[DC=ForestDnsZones,DC=TEST,DC=LOCAL] objets[20/20] valeurs_liées[0/0]
    Exop sur[CN=RID Manager$,CN=System,DC=TEST,DC=LOCAL] objets[3] valeurs_liées[0]
    Engagement de la base de données SAM
    Ajout de 1 enregistrement DNS distant pour DC2.TEST.LOCAL
    Ajout d'un enregistrement DNS A DC2.TEST.LOCAL pour IPv4 IP: 192.168.90.201
    Ajout d'un enregistrement DNS CNAME 6ff1df40-cbb5-41f0-b7b3-53a27dde8edf._msdcs.TEST.LOCAL pour DC2.TEST.LOCAL
    Tous les autres enregistrements DNS (comme les enregistrements SRV _ldap) seront créés par samba_dnsupdate au premier démarrage
    Réplication de nouveaux enregistrements DNS dans DC=DomainDnsZones,DC=TEST,DC=LOCAL
    Partition[DC=DomainDnsZones,DC=TEST,DC=LOCAL] objets[1/42] valeurs_liées[0/0]
    Réplication de nouveaux enregistrements DNS dans DC=ForestDnsZones,DC=TEST,DC=LOCAL
    Partition[DC=ForestDnsZones,DC=TEST,DC=LOCAL] objets[1/20] valeurs_liées[0/0]
    Envoi de DsReplicaUpdateRefs pour toutes les partitions répliquées
    Définition de isSynchronized et dsServiceName
    Configuration de la base de données secrets
    Rejoint au domaine TEST (SID S-1-5-21-3959064270-1572045903-2556826204) en tant que DC

    L'enregistrement du nouveau DC dans le domaine TEST.LOCAL doit apparaître dans la console ADUC, et un nouvel enregistrement A correspondant à DC2 doit être présent dans le gestionnaire DNS.

  2. Rélication entre les contrôleursVérifions d'abord le fonctionnement du service de réplication des annuaires (DRS)
    # samba-tool drs showrepl

    Toutes les tentatives de réplication dans la sortie doivent être réussies. Dans la liste des objets KCC, notre DC1 sous Windows doit apparaître dans les 15 minutes suivant l'entrée.

    Nom du site par défaut - Premier DC
    	Options DSA : 0x00000001
    	GUID de l'objet DSA : 0e9f5bce-ff59-401e-bdbd-fc69df3fc6bf
    	ID d'invocation DSA : 017997b5-d718-41d7-a3f3-e57ab5151b5c
    
    	==== VOISINS ENTRANTS ====
    
    	DC=ForestDnsZones,DC=test,DC=local
    	        Nom du site par défaut - Premier DC1 via RPC
    	                GUID de l'objet DSA : 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Dernière tentative @ lun. 27 mai 2019 12:56:31 MSK réussie
    	                0 échec(s) consécutif(s).
    	                Dernière réussite @ lun. 27 mai 2019 12:56:31 MSK
    
    	DC=DomainDnsZones,DC=test,DC=local
    	        Nom du site par défaut - Premier DC1 via RPC
    	                GUID de l'objet DSA : 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Dernière tentative @ lun. 27 mai 2019 12:56:32 MSK réussie
    	                0 échec(s) consécutif(s).
    	                Dernière réussite @ lun. 27 mai 2019 12:56:32 MSK
    
    	CN=Schema,CN=Configuration,DC=test,DC=local
    	        Nom du site par défaut - Premier DC1 via RPC
    	                GUID de l'objet DSA : 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Dernière tentative @ lun. 27 mai 2019 12:56:32 MSK réussie
    	                0 échec(s) consécutif(s).
    	                Dernière réussite @ lun. 27 mai 2019 12:56:32 MSK
    
    	DC=test,DC=local
    	        Nom du site par défaut - Premier DC1 via RPC
    	                GUID de l'objet DSA : 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Dernière tentative @ lun. 27 mai 2019 12:56:32 MSK réussie
    	                0 échec(s) consécutif(s).
    	                Dernière réussite @ lun. 27 mai 2019 12:56:32 MSK
    
    	CN=Configuration,DC=test,DC=local
    	        Nom du site par défaut - Premier DC1 via RPC
    	                GUID de l'objet DSA : 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Dernière tentative @ lun. 27 mai 2019 12:56:33 MSK réussie
    	                0 échec(s) consécutif(s).
    	                Dernière réussite @ lun. 27 mai 2019 12:56:33 MSK
    
    	==== VOISINS SORTANTS ====
    
    	DC=ForestDnsZones,DC=test,DC=local
    	        Nom du site par défaut - Premier DC1 via RPC
    	                GUID de l'objet DSA : 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Dernière tentative @ jeu. 23 mai 2019 16:40:03 MSK réussie
    	                0 échec(s) consécutif(s).
    	                Dernière réussite @ jeu. 23 mai 2019 16:40:03 MSK
    
    	DC=DomainDnsZones,DC=test,DC=local
    	        Nom du site par défaut - Premier DC1 via RPC
    	                GUID de l'objet DSA : 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Dernière tentative @ jeu. 23 mai 2019 16:40:03 MSK réussie
    	                0 échec(s) consécutif(s).
    	                Dernière réussite @ jeu. 23 mai 2019 16:40:03 MSK
    
    	CN=Schema,CN=Configuration,DC=test,DC=local
    	        Nom du site par défaut - Premier DC1 via RPC
    	                GUID de l'objet DSA : 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Dernière tentative @ jeu. 23 mai 2019 16:40:08 MSK réussie
    	                0 échec(s) consécutif(s).
    	                Dernière réussite @ jeu. 23 mai 2019 16:40:08 MSK
    
    	DC=test,DC=local
    	        Nom du site par défaut - Premier DC1 via RPC
    	                GUID de l'objet DSA : 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Dernière tentative @ jeu. 23 mai 2019 16:40:08 MSK réussie
    	                0 échec(s) consécutif(s).
    	                Dernière réussite @ jeu. 23 mai 2019 16:40:08 MSK
    
    	CN=Configuration,DC=test,DC=local
    	        Nom du site par défaut - Premier DC1 via RPC
    	                GUID de l'objet DSA : 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Dernière tentative @ lun. 27 mai 2019 12:12:17 MSK réussie
    	                0 échec(s) consécutif(s).
    	                Dernière réussite @ lun. 27 mai 2019 12:12:17 MSK
    
    	==== OBJETS DE CONNEXION KCC ====
    
    	Connexion --
    	        Nom de la connexion : 6d2652b3-e723-4af7-a19f-1ee48915753c
    	        Activé        : VRAI
    	        Nom DNS du serveur : DC1.test.local
    	        Nom DN du serveur  : CN=NTDS Settings,CN=DC1,CN=Servers,CN=Nom du site par défaut - Premier DC,CN=Sites,CN=Configuration,DC=test,DC=local
    	                Type de transport : RPC
    	                options : 0x00000001
    	Avertissement : Aucune NC répliquée pour la connexion !

    Avertissement «Aucune NC répliquée pour la connexion !» cela peut être ignoré sans problème. Cela apparaît parce que lors de l'enregistrement d'un nouveau DC Samba, certains indicateurs de réplication sont mal définis.

    Il serait également judicieux de vérifier la réplication LDAP.

    # samba-tool ldapcmp ldap://dc1.test.local ldap://dc2.test.local -Uadministrator

    La commande ci-dessus comparera les valeurs des attributs des objets de l'ensemble du répertoire sur DC1 et DC2.

    Exemple de réplication réussie

    * Comparaison du contexte [DOMAIN]...
    
    	* Objets à comparer : 249
    
    	* Résultat pour [DOMAIN] : SUCCÈS
    
    	* Comparaison du contexte [CONFIGURATION]...
    
    	* Objets à comparer : 1750
    
    	* Résultat pour [CONFIGURATION] : SUCCÈS
    
    	* Comparaison du contexte [SCHEMA]...
    
    	* Objets à comparer : 1739
    
    	* Résultat pour [SCHEMA] : SUCCÈS
    
    	* Comparaison du contexte [DNSDOMAIN]...
    
    	* Objets à comparer : 42
    
    	* Résultat pour [DNSDOMAIN] : SUCCÈS
    
    	* Comparaison du contexte [DNSFOREST]...
    
    	* Objets à comparer : 20
    
    	* Résultat pour [DNSFOREST] : SUCCÈS

    Dans certains cas, les attributs des objets sur différents contrôleurs peuvent différer, et la sortie de la commande en informera. Cependant, cela ne sera pas toujours un signe de problème de réplication.

    L'étape suivante consiste à configurer manuellement une réplication stable du répertoire SysVol.
    Le fait est que Samba ne prend pas encore en charge DFS-R, tout comme elle ne soutenait pas l’ancien FRS. Ainsi, pour la réplication entre un DC Samba et Windows, la seule solution opérationnelle à ce jour est la réplication unidirectionnelle à l’aide de l'outil Robocopy du kit Outils de kit de ressources Windows Server 2003.

    Les développeurs de Samba, pour éviter des problèmes de compatibilité, recommandent d'abord d'installer le pack d'outils sur un poste de travail ordinaire, puis de copier Robocopy sur le contrôleur dans le dossier « C:Program Files (x86)Windows Resource KitsTools »

    Après l'installation, dans le planificateur de tâches sur le contrôleur Windows, créons une tâche pour exécuter la réplication avec les paramètres suivants :

    — Exécuter pour tous les utilisateurs
    — Déclencheur à exécuter quotidiennement toutes les 5 minutes pendant la journée
    — Dans les actions, indiquons le chemin vers l'outil robocopy, avec comme arguments :

    DC1SYSVOLtest.local DC2SYSVOLtest.local /mir /sec

    Dans ce cas précis, nous copions le contenu du répertoire SysVol de DC1 vers DC2.

  3. Dossiers utilisateurs transférables via la configuration pam_mountPar expérience, j'ai trouvé deux solutions viables à ce problème.
    1. Montage complet d'un dossier de profil réseau dans le répertoire /home. Une option simple. Cela fonctionne parfaitement si les noms des dossiers Mes documents, Téléchargements et Bureau coïncident dans les deux systèmes d'exploitation. On suppose que le PC sous Linux est déjà intégré au domaine et que les utilisateurs se connectent avec leurs comptes de domaine, en utilisant sssd comme mécanisme d'authentification et d'autorisation.
      # vim /etc/security/pam_mount.conf.xml
      <volume uid="100000000-2000000000" fstype="cifs" server="dfs" path="Profile_Users/%(USER)" mountpoint="~" options="sec=krb5,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775"/>
      

      où :

      • uid=«100000000-2000000000» — plage d'UID attribuée aux utilisateurs du domaine par SSSD
      • server=«dfs» — nom du serveur de fichiers
      • path=«Profile_Users/%(USER)» — ressource sur le serveur de fichiers où est stocké le profil utilisateur
      • mountpoint=»~» — chemin de montage dans le dossier personnel de l'utilisateur

      Le nom d'utilisateur est transmis à la macro-variable «%(USER)», utilisée par pam_mount pour connecter notre ressource réseau, telle qu'elle est entrée dans le gestionnaire d'affichage. Il est donc important que dans le DM, le nom d'utilisateur soit saisi sans indiquer explicitement le nom de domaine.

      Dans sssd.conf, cela se résout par des commentaires ou en définissant la valeur False dans l'option use_fully_qualified_names, qui active le mode de noms complets (y compris le domaine) pour les utilisateurs et les groupes.

    2. La deuxième méthode est moins directe et plus brutale, et à mon avis plus pratique et préférable. La différence par rapport à la première réside uniquement dans la configuration pam_mount.
      # vim /etc/security/pam_mount.conf.xml

      C'est-à-dire que nous montons simplement chaque dossier séparément dans le répertoire correspondant.

Conclusions

Depuis un mois et demi sur le banc d'essai, cette configuration a réussi à surmonter plusieurs interruptions prolongées et temporaires des deux contrôleurs, pratiquement sans conséquences pour les clients (une fois, un client sous Windows 7 a perdu la relation de confiance).

Dans l'ensemble, j'ai gardé une impression assez positive du travail avec ce produit, malgré toutes les nuances rencontrées à la fois dans l'article et "en coulisses".

Il y a des pièges, ils sont nombreux, et au fur et à mesure de travailler avec Samba, il faudra les repérer en grand nombre. Pourtant, jusqu'à présent, il n'existe pas d'autres solutions permettant d'organiser un environnement hybride, en utilisant un service d'annuaire sans Windows.

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster