
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 :
- 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.
- Ajout de Samba DC en tant que deuxième contrôleur. Vérification de la réplication des services d'annuaire et DNS
- Configuration des clients Linux pour travailler avec des dossiers redirigés
Réalisation :
- 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 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-dcSi 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-develNous 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.confdns_lookup_kdc = true dns_lookup_realm = true default_realm = TEST.LOCALDemandons 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:35Maintenant, supprimons ou renommer le fichier de configuration Samba existant.
# mv smb.conf smb.conf.bak1Et 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 DCL'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.
- Rélication entre les contrôleursVérifions d'abord le fonctionnement du service de réplication des annuaires (DRS)
# samba-tool drs showreplToutes 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 -UadministratorLa 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ÈSDans 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 .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 /secDans ce cas précis, nous copions le contenu du répertoire SysVol de DC1 vers DC2.
- Dossiers utilisateurs transférables via la configuration pam_mountPar expérience, j'ai trouvé deux solutions viables à ce problème.
- 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.
- 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.xmlC'est-à-dire que nous montons simplement chaque dossier séparément dans le répertoire correspondant.
- 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.
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
