Contrôleur de domaine Samba en tant que second contrôleur de domaine dans un domaine AD Windows 2012R2 et dossiers itinérants pour les clients sur Windows и Linux

Contrôleur de domaine Samba en tant que second contrôleur de domaine dans un domaine AD Windows 2012R2 et dossiers itinérants pour les clients sur Windows и Linux
La prise de conscience que j’étais dans un pétrin en matière d’importation ne m’est pas venue immédiatement. Ce n’est que lorsque de nouvelles livraisons de PC ont commencé à arriver régulièrement en provenance d’une organisation supérieure avec la distribution Alt Linux à bord que j’ai soupçonné que quelque chose n’allait pas.

Cependant, au fur et à mesure que j’acceptais l’inévitable, je me suis impliqué et j’ai même commencé à apprécier un peu le processus. Et à un moment donné, j'ai pensé qu'à ce rythme, je devrais tôt ou tard me séparer des solutions d'organisation des services d'annuaire de Microsoft et m'orienter vers quelque chose de plus exotique. Ainsi, afin de se préparer à l'avance à l'inévitable, et, si possible, d'attraper le plus d'embûches possible, il a été décidé de déployer un banc de test, qui comprend :

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

Objectifs du stand :

  1. Déployez un domaine basé sur Windows Server 2012 R2. Créez un ensemble minimal de stratégies de groupe (similaires à celles utilisées dans l'infrastructure de production), incluant une stratégie pour la migration des dossiers de travail des utilisateurs (Téléchargements/Documents/Bureau). L'objectif est de garantir que lorsqu'un utilisateur change de poste de travail, Windows sur Linux Et de retour, il avait facilement accès à ses documents de travail.
  2. Entrée Samba DC par le deuxième contrôleur. Vérification de l'annuaire et de la réplication DNS
  3. Configuration des clients Linux travailler avec des dossiers déplacés

Mise en œuvre:

  1. Installation et mise en service d'un nouveau contrôleurAvec l'installation MS Windows Windows Server 2012 R2 est simple et plutôt clair. On trouve une multitude de manuels sur Internet pour déployer un domaine sur cette plateforme. Windows J'utilise à la fois l'interface graphique et PowerShell, donc je ne le répéterai pas, je vais simplement laisser tomber. lien Allumé éteint. documentation pour les curieux et ceux qui veulent se rafraîchir la mémoire.

    Cependant, il reste encore un point important à ce stade. Actuellement, Samba ne peut pas fonctionner avec des schémas de répertoires supérieurs à 2008R2.

    titre spoiler Plus précisément, les développeurs ont indiqué que cette prise en charge était expérimentale. Mais en pratique, il s'agit d'une tentative d'introduire Samba comme deuxième contrôleur de domaine dans un domaine existant. Windows Avec le schéma 69, vous obtiendrez l'erreur suivante :

    Échec de DsAddEntry avec les informations d'état WERR_ACCESS_DENIED (8567, 'WERR_DS_INCOMPATIBLE_VERSION')

    Le problème est que Windows Les versions 2012 et 2012R2 utilisent les outils WMI pour gérer les domaines et les forêts ; la prise en charge stable de ces outils n’est annoncée que pour la version Samba 4.11, dont la sortie est prévue avant la fin de l’année.
    Il s'ensuit 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 entendu, cela ne doit pas être fait sur une infrastructure de production sans raison valable, mais nous avons un banc d'essai ici, alors pourquoi pas.

    Installez le serveur Alt 8.2. Lors de l'installation, sélectionnez le profil « Samba-DC Server (AD Controller) ». Sur le serveur déployé, nous effectuons une mise à jour complète du système et installons le package task-samba-dc, qui extraira tout ce dont vous avez besoin

    # apt-get install task-samba-dc

    Si du coup task-samba-dc, contrairement aux assurances de la documentation, Alta refuse d'installer elle-même 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

    Ensuite, nous passons à la configuration de Kerberos et à la réception d'un ticket. Ouvrez le fichier krb5.conf, accédez à la section [libdefaults] et amenez-le sous la forme suivante :

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

    Demander un billet

    # kinit administrator
    Password for administrator@TEST.LOCAL:

    Vérification de la liste des tickets Kerberos reçus

    # 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, nous supprimons ou renommons la configuration samba existante.

    # mv smb.conf smb.conf.bak1

    Et enfin, on entre dans le domaine AD avec le deuxième contrôleur :

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

    Une saisie réussie sera accompagnée du journal suivant

    Finding a writeable DC for domain 'test.local'
    Found DC DC1.TEST.LOCAL
    Password for [TESTadministrator]:
    Reconnecting to naming master e31d7da6-8f56-4420-8473-80f2b3a31338._msdcs.TEST.                           LOCAL
    DNS name of new naming master is DC1.TEST.LOCAL
    workgroup is TEST
    realm is TEST.LOCAL
    Adding CN=DC2,OU=Domain Controllers,DC=TEST,DC=LOCAL
    Adding CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC                           =TEST,DC=LOCAL
    Adding CN=NTDS Settings,CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN                           =Configuration,DC=TEST,DC=LOCAL
    Adding SPNs to CN=DC2,OU=Domain Controllers,DC=TEST,DC=LOCAL
    Setting account password for DC2$
    Enabling account
    Calling bare provision
    Looking up IPv4 addresses
    Looking up IPv6 addresses
    No IPv6 address will be assigned
    Setting up share.ldb
    Setting up secrets.ldb
    Setting up the registry
    Setting up the privileges database
    Setting up idmap db
    Setting up SAM db
    Setting up sam.ldb partitions and settings
    Setting up sam.ldb rootDSE
    Pre-loading the Samba 4 and AD schema
    A Kerberos configuration suitable for Samba AD has been generated at /var/lib/sa                           mba/private/krb5.conf
    Provision OK for domain DN DC=TEST,DC=LOCAL
    Starting replication
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objects[402/1426] linked                           _values[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objects[804/1426] linked                           _values[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objects[1206/1426] linke                           d_values[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objects[1608/1426] linke                           d_values[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objects[1743/1426] linke                           d_values[0/0]
    Analyze and apply schema objects
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objects[402/2240] linked_values[0/                           24]
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objects[804/2240] linked_values[0/                           24]
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objects[1206/2240] linked_values[0                           /24]
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objects[1608/2240] linked_values[0                           /24]
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objects[1772/2240] linked_values[2                           4/24]
    Replicating critical objects from the base DN of the domain
    Partition[DC=TEST,DC=LOCAL] objects[109/110] linked_values[26/29]
    Partition[DC=TEST,DC=LOCAL] objects[394/5008] linked_values[29/29]
    Done with always replicated NC (base, config, schema)
    Replicating DC=DomainDnsZones,DC=TEST,DC=LOCAL
    Partition[DC=DomainDnsZones,DC=TEST,DC=LOCAL] objects[42/42] linked_values[0/0]
    Replicating DC=ForestDnsZones,DC=TEST,DC=LOCAL
    Partition[DC=ForestDnsZones,DC=TEST,DC=LOCAL] objects[20/20] linked_values[0/0]
    Exop on[CN=RID Manager$,CN=System,DC=TEST,DC=LOCAL] objects[3] linked_values[0]
    Committing SAM database
    Adding 1 remote DNS records for DC2.TEST.LOCAL
    Adding DNS A record DC2.TEST.LOCAL for IPv4 IP: 192.168.90.201
    Adding DNS CNAME record 6ff1df40-cbb5-41f0-b7b3-53a27dde8edf._msdcs.TEST.LOCAL                            for DC2.TEST.LOCAL
    All other DNS records (like _ldap SRV records) will be created samba_dnsupdate o                           n first startup
    Replicating new DNS records in DC=DomainDnsZones,DC=TEST,DC=LOCAL
    Partition[DC=DomainDnsZones,DC=TEST,DC=LOCAL] objects[1/42] linked_values[0/0]
    Replicating new DNS records in DC=ForestDnsZones,DC=TEST,DC=LOCAL
    Partition[DC=ForestDnsZones,DC=TEST,DC=LOCAL] objects[1/20] linked_values[0/0]
    Sending DsReplicaUpdateRefs for all the replicated partitions
    Setting isSynchronized and dsServiceName
    Setting up secrets database
    Joined domain TEST (SID S-1-5-21-3959064270-1572045903-2556826204) as a DC

    Dans le composant logiciel enfichable ADUC, il devrait y avoir un enregistrement pour le nouveau DC dans le domaine TEST.LOCAL, et dans le gestionnaire DNS, il devrait y avoir un nouvel enregistrement A correspondant à DC2.

  2. Réplication entre contrôleursTout d'abord, vérifions le fonctionnement du service de réplication d'annuaire (DRS)
    # samba-tool drs showrepl

    Toutes les tentatives de réplication en sortie devraient aboutir. Notre contrôleur de domaine DC1 devrait apparaître dans la liste des objets KCC dans les 15 minutes suivant l'entrée. Windows

    Default-First-Site-NameDC2
    	DSA Options: 0x00000001
    	DSA object GUID: 0e9f5bce-ff59-401e-bdbd-fc69df3fc6bf
    	DSA invocationId: 017997b5-d718-41d7-a3f3-e57ab5151b5c
    
    	==== INBOUND NEIGHBORS ====
    
    	DC=ForestDnsZones,DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Last attempt @ Mon May 27 12:56:31 2019 MSK was successful
    	                0 consecutive failure(s).
    	                Last success @ Mon May 27 12:56:31 2019 MSK
    
    	DC=DomainDnsZones,DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Last attempt @ Mon May 27 12:56:32 2019 MSK was successful
    	                0 consecutive failure(s).
    	                Last success @ Mon May 27 12:56:32 2019 MSK
    
    	CN=Schema,CN=Configuration,DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Last attempt @ Mon May 27 12:56:32 2019 MSK was successful
    	                0 consecutive failure(s).
    	                Last success @ Mon May 27 12:56:32 2019 MSK
    
    	DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Last attempt @ Mon May 27 12:56:32 2019 MSK was successful
    	                0 consecutive failure(s).
    	                Last success @ Mon May 27 12:56:32 2019 MSK
    
    	CN=Configuration,DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Last attempt @ Mon May 27 12:56:33 2019 MSK was successful
    	                0 consecutive failure(s).
    	                Last success @ Mon May 27 12:56:33 2019 MSK
    
    	==== OUTBOUND NEIGHBORS ====
    
    	DC=ForestDnsZones,DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Last attempt @ Thu May 23 16:40:03 2019 MSK was successful
    	                0 consecutive failure(s).
    	                Last success @ Thu May 23 16:40:03 2019 MSK
    
    	DC=DomainDnsZones,DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Last attempt @ Thu May 23 16:40:03 2019 MSK was successful
    	                0 consecutive failure(s).
    	                Last success @ Thu May 23 16:40:03 2019 MSK
    
    	CN=Schema,CN=Configuration,DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Last attempt @ Thu May 23 16:40:08 2019 MSK was successful
    	                0 consecutive failure(s).
    	                Last success @ Thu May 23 16:40:08 2019 MSK
    
    	DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Last attempt @ Thu May 23 16:40:08 2019 MSK was successful
    	                0 consecutive failure(s).
    	                Last success @ Thu May 23 16:40:08 2019 MSK
    
    	CN=Configuration,DC=test,DC=local
    	        Default-First-Site-NameDC1 via RPC
    	                DSA object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Last attempt @ Mon May 27 12:12:17 2019 MSK was successful
    	                0 consecutive failure(s).
    	                Last success @ Mon May 27 12:12:17 2019 MSK
    
    	==== KCC CONNECTION OBJECTS ====
    
    	Connection --
    	        Connection name: 6d2652b3-e723-4af7-a19f-1ee48915753c
    	        Enabled        : TRUE
    	        Server DNS name : DC1.test.local
    	        Server DN name  : CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=local
    	                TransportType: RPC
    	                options: 0x00000001
    	Warning: No NC replicated for Connection!

    avertissement « Aucune CN répliquée pour la connexion ! » peut être ignoré en toute sécurité. Cela semble dû au fait que lors de l'enregistrement d'un nouveau contrôleur de domaine, Samba définit de manière incorrecte certains indicateurs de réplication.

    Ce serait également une bonne idée 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 d'attribut de l'ensemble des objets du répertoire sur DC1 et DC2.

    Exemple de réplication réussie

    * Comparing [DOMAIN] context...
    
    	* Objects to be compared: 249
    
    	* Result for [DOMAIN]: SUCCESS
    
    	* Comparing [CONFIGURATION] context...
    
    	* Objects to be compared: 1750
    
    	* Result for [CONFIGURATION]: SUCCESS
    
    	* Comparing [SCHEMA] context...
    
    	* Objects to be compared: 1739
    
    	* Result for [SCHEMA]: SUCCESS
    
    	* Comparing [DNSDOMAIN] context...
    
    	* Objects to be compared: 42
    
    	* Result for [DNSDOMAIN]: SUCCESS
    
    	* Comparing [DNSFOREST] context...
    
    	* Objects to be compared: 20
    
    	* Result for [DNSFOREST]: SUCCESS

    Dans certains cas, les attributs des objets sur différents contrôleurs peuvent différer, et le résultat de la commande vous en informera. Mais cela ne sera pas dans tous les cas le signe d’un problème de réplication.

    L'étape suivante consiste à configurer manuellement la réplication stable du répertoire SysVol.
    Le problème est que Samba ne prend pas encore en charge DFS-R, tout comme il ne prenait pas en charge l'ancien FRS. Par conséquent, pour la réplication entre contrôleurs de domaine, Samba et Windows La seule solution fonctionnelle à ce jour est la réplication unidirectionnelle à l'aide de l'utilitaire Robocopy du kit Windows Server Outils du kit de ressources 2003.

    Pour éviter les problèmes de compatibilité, les développeurs de Samba recommandent d'installer d'abord la suite d'utilitaires sur un poste de travail classique, puis de copier Robocopy sur le contrôleur dans le dossier « C:\Program Files (x86) ».Windows Kits de ressources et outils »

    Après l'installation, dans le planificateur de tâches du contrôleur avec Windows Nous créons une tâche pour effectuer une 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, nous spécifions le chemin d'accès à l'utilitaire robocopy, en spécifiant comme arguments :

    DC1SYSVOLtest.local DC2SYSVOLtest.local /mir /sec

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

  3. Dossiers utilisateur portables utilisant la configuration pam_mountGrâce à mon expérience, j'ai trouvé deux options viables pour résoudre ce problème avec son aide.
    1. Monter intégralement un dossier de profil réseau sur la partition /home. Une option simple. Fonctionne parfaitement si les noms des dossiers Mes documents, Téléchargements et Bureau sont identiques sur les deux systèmes d'exploitation. Ceci suppose que le PC sur Linux a déjà été intégré au domaine et les utilisateurs se connectent via 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 UID attribuée aux utilisateurs du domaine à partir de SSSD
      • serveur = "dfs" - nom du serveur de fichiers
      • chemin="Profile_Users/%(USER)" — une ressource sur un serveur de fichiers avec un profil utilisateur hébergé
      • point de montage = "~" — chemin de montage vers le dossier personnel de l'utilisateur

      La connexion de l'utilisateur est transmise à la variable macro « %(USER) » utilisée par pam_mount pour connecter notre ressource réseau telle que saisie dans le gestionnaire d'affichage. Il est donc important que le login soit saisi dans DM sans spécifier explicitement le nom de domaine.

      Dans sssd.conf, cela est résolu en commentant ou en définissant l'option sur False. use_fully_qualified_names, qui active le mode nom complet (y compris le domaine) pour les utilisateurs et les groupes.

    2. La deuxième méthode est moins simple et maladroite, et à mon avis plus pratique et préférable. La différence avec le premier réside uniquement dans la configuration pam_mount
      # vim /etc/security/pam_mount.conf.xml
      <volume uid="100000000-2000200000" 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"/>
      <volume uid="100000000-2000200000" fstype="cifs" server="dfs" path="Profile_Users/%(USER)/Downloads" mountpoint="~/Загрузки" options="sec=krb5,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775"/>
      <volume uid="100000000-2000200000" 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"/>

      Autrement dit, nous montons simplement chacun de nos dossiers séparément dans le répertoire correspondant

résultats

Pendant une quinzaine de jours de tests sur banc d'essai, ce module a résisté avec succès à plusieurs arrêts alternés, de courte et de longue durée, des deux contrôleurs, sans pratiquement aucune conséquence pour les clients (une fois qu'un client était sous tension). Windows7 relations de confiance perdues).

Dans l’ensemble, j’ai eu une expérience assez agréable en travaillant avec ce produit, malgré toutes les nuances que j’ai dû gérer à la fois dans l’article et « en coulisses ».

Il existe de nombreux pièges, et vous en découvrirez un grand nombre en travaillant avec Samba. Cependant, il n'existe actuellement aucune autre solution permettant d'organiser un environnement hybride, avec ou sans service d'annuaire. Windows.

Source: habr.com

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