
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 :
- 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.
- Entrée Samba DC par le deuxième contrôleur. Vérification de l'annuaire et de la réplication DNS
- Configuration des clients Linux travailler avec des dossiers déplacés
Mise en œuvre:
- 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. 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-dcSi 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-develEnsuite, 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.confdns_lookup_kdc = true dns_lookup_realm = true default_realm = TEST.LOCALDemander 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:35Maintenant, nous supprimons ou renommons la configuration samba existante.
# mv smb.conf smb.conf.bak1Et 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 DCDans 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.
- Réplication entre contrôleursTout d'abord, vérifions le fonctionnement du service de réplication d'annuaire (DRS)
# samba-tool drs showreplToutes 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 -UadministratorLa 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]: SUCCESSDans 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 .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 /secDans ce cas particulier, nous copions le contenu du répertoire SysVol de DC1 vers DC2.
- 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.
- 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.
- 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
- 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.
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
