
Die Erkenntnis, dass ich in die Importsubstitution geraten bin, kam nicht sofort. Erst als die frischen Lieferungen von PCs aus der übergeordneten Organisation konstant mit der Distribution «Alt Linux» an Bord eintrafen, verdichteten sich meine Verdachtsmomente.
Im Verlauf des unvermeidlichen Akzeptanzprozesses wurde ich jedoch aktiv und begann sogar ein wenig Freude an dem Prozess zu finden. Irgendwann dachte ich, dass ich mich früher oder später von den Lösungen zur Organisation des Verzeichnisdienstes von Microsoft trennen und mich in Richtung etwas Exotischerem bewegen müsste. Daher beschloss ich, um mich auf das Unvermeidliche vorzubereiten und mögliche Stolperfallen zu identifizieren, eine Testumgebung einzurichten, die Folgendes umfasst:
- DC1 — Windows Server 2012R2
- DC2 — Alt Server 8.2
- Dateiserver — Windows Server 2012R2
- PC1 — Windows 7
- PC2 — Alt Arbeitsstation 8.2
Aufgaben des Standes:
- Domäne auf Basis von w2k12r2 bereitstellen. Ein minimales Set an Gruppenrichtlinien erstellen (ähnlich wie in der Produktionsinfrastruktur verwendet), einschließlich der Richtlinie zum Verschieben von Benutzerordnern (Downloads/Dokumente/Desktop). Am Ende soll der Benutzer, wenn er zwischen Windows und Linux wechselt, komfortablen Zugang zu seinen Arbeitsdokumenten haben.
- Samba DC als zweiten Controller hinzufügen. Überprüfung der Replikation von Verzeichnisdiensten und DNS.
- Einrichtung von Linux-Clients zur Nutzung von verschiebbaren Ordnern.
Implementierung:
- Installation und Inbetriebnahme des neuen Controllers.Die Installation von MS Windows 2012R2 ist einfach und relativ klar. Im Internet gibt es 1001 Anleitungen zur Bereitstellung einer Domäne auf Windows, sowohl mit GUI als auch mit Powershell, deshalb werde ich dies nicht nochmal wiederholen, sondern nur auf die offizielle Dokumentation verweisen, für Neugierige und diejenigen, die ihr Gedächtnis auffrischen möchten.
Es gibt jedoch einen wichtigen Punkt in diesem Abschnitt. Bis heute kann Samba nicht mit Schema-Versionen über 2008R2 arbeiten.
Spoilerüberschrift Die Entwickler haben diesen Support zwar als experimentell ausgewiesen, doch in der Praxis wird der Versuch, Samba als zweiten DC in eine bestehende Windows-Domäne mit Schema 69 einzuführen, mit folgender Fehlermeldung konfrontiert:
DsAddEntry fehlgeschlagen mit Status WERR_ACCESS_DENIED Info (8567, 'WERR_DS_INCOMPATIBLE_VERSION')
Das Problem liegt darin, dass Windows 2012 und 2012R2 WMI-Tools zur Verwaltung von Domänen und Forests verwenden, deren stabile Unterstützung erst mit Samba 4.11 angekündigt wurde, die bis Ende dieses Jahres erscheinen soll.
Das bedeutet, dass die einzige Möglichkeit, Samba in eine AD-Domäne, die auf einem 2012R2-Server bereitgestellt ist, einzuführen, darin besteht, das Schema von 69 auf 47 abzusenken. Es ist offensichtlich, dass dies in einer Produktionsumgebung ohne triftigen Grund nicht geschehen sollte, aber in unserem Teststand gibt es keinen Grund, es nicht zu tun.Wir installieren Alt Server 8.2. Bei der Installation wählen wir das Profil 'Samba-DC-Server (AD-Controller)'. Auf dem bereitgestellten Server führen wir ein vollständiges System-Upgrade durch und installieren das Paket task-samba-dc, das alles Notwendige nachzieht.
# apt-get install task-samba-dcFalls das task-samba-dc-Paket entgegen den Versprechungen der Alt-Dokumentation nicht alles erforderliche installieren sollte.
# apt-get install python-module-samba-DC samba-DC-common samba-DC-winbind-clients samba-DC-winbind samba-DC-common-libs libpytalloc-develKommen wir nun zur Konfiguration von Kerberos und dem Erhalt eines Tickets. Öffnen Sie die Datei krb5.conf, gehen Sie zum Abschnitt [libdefaults] und passen Sie ihn wie folgt an:
# vim /etc/krb5.confdns_lookup_kdc = true dns_lookup_realm = true default_realm = TEST.LOCALFordern Sie ein Ticket an.
# kinit administrator Password for administrator@TEST.LOCAL:Überprüfen Sie die Liste der erhaltenen Kerberos-Tickets.
# 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:35Jetzt entfernen oder benennen wir die bestehende Samba-Konfiguration um.
# mv smb.conf smb.conf.bak1Und schließlich fügen wir den AD-Domänencontroller als zweiten Controller hinzu:
# samba-tool domain join test.local DC -U"TESTadministrator"Ein erfolgreicher Eintrag wird durch folgendes Protokoll begleitet.
Suche nach einem beschreibbaren DC für die Domäne 'test.local' Gefundener DC DC1.TEST.LOCAL Passwort für [TESTadministrator]: Wiederverbinden mit dem Namensmaster e31d7da6-8f56-4420-8473-80f2b3a31338._msdcs.TEST.LOCAL DNS-Name des neuen Namensmasters ist DC1.TEST.LOCAL Die Arbeitsgruppe ist TEST Das Reich ist TEST.LOCAL Füge CN=DC2,OU=Domain Controllers,DC=TEST,DC=LOCAL hinzu Füge CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=TEST,DC=LOCAL hinzu Füge CN=NTDS Settings,CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=TEST,DC=LOCAL hinzu Füge SPNs zu CN=DC2,OU=Domain Controllers,DC=TEST,DC=LOCAL hinzu Setze Kontopasswort für DC2$ Aktiviere Konto Starte die Bereitstellung Suche nach IPv4-Adressen Suche nach IPv6-Adressen Es wird keine IPv6-Adresse zugewiesen Einrichten von share.ldb Einrichten von secrets.ldb Einrichten der Registrierung Einrichten der Berechtigungsdatenbank Einrichten der idmap-Datenbank Einrichten der SAM-Datenbank Einrichten von sam.ldb-Partitionen und -Einstellungen Einrichten des sam.ldb rootDSE Lade das Samba 4- und AD-Schema vor Eine für Samba AD geeignete Kerberos-Konfiguration wurde generiert unter /var/lib/samba/private/krb5.conf Bereitstellung OK für Domän DN DC=TEST,DC=LOCAL Starte Replikation Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] Objekte[402/1426] verknüpfte_Werte[0/0] Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] Objekte[804/1426] verknüpfte_Werte[0/0] Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] Objekte[1206/1426] verknüpfte_Werte[0/0] Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] Objekte[1608/1426] verknüpfte_Werte[0/0] Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] Objekte[1743/1426] verknüpfte_Werte[0/0] Analysiere und wende Schemaobjekte an Partition[CN=Configuration,DC=TEST,DC=LOCAL] Objekte[402/2240] verknüpfte_Werte[0/24] Partition[CN=Configuration,DC=TEST,DC=LOCAL] Objekte[804/2240] verknüpfte_Werte[0/24] Partition[CN=Configuration,DC=TEST,DC=LOCAL] Objekte[1206/2240] verknüpfte_Werte[0/24] Partition[CN=Configuration,DC=TEST,DC=LOCAL] Objekte[1608/2240] verknüpfte_Werte[0/24] Partition[CN=Configuration,DC=TEST,DC=LOCAL] Objekte[1772/2240] verknüpfte_Werte[24/24] Repliziere kritische Objekte aus dem Basis-DN der Domäne Partition[DC=TEST,DC=LOCAL] Objekte[109/110] verknüpfte_Werte[26/29] Partition[DC=TEST,DC=LOCAL] Objekte[394/5008] verknüpfte_Werte[29/29] Fertig mit immer replizierten NC (Basis, Konfiguration, Schema) Repliziere DC=DomainDnsZones,DC=TEST,DC=LOCAL Partition[DC=DomainDnsZones,DC=TEST,DC=LOCAL] Objekte[42/42] verknüpfte_Werte[0/0] Repliziere DC=ForestDnsZones,DC=TEST,DC=LOCAL Partition[DC=ForestDnsZones,DC=TEST,DC=LOCAL] Objekte[20/20] verknüpfte_Werte[0/0] Exop on[CN=RID Manager$,CN=System,DC=TEST,DC=LOCAL] Objekte[3] verknüpfte_Werte[0] Übertrage SAM-Datenbank Füge 1 entfernte DNS-Einträge für DC2.TEST.LOCAL hinzu Füge DNS A-Eintrag DC2.TEST.LOCAL für IPv4-IP: 192.168.90.201 hinzu Füge DNS CNAME-Eintrag 6ff1df40-cbb5-41f0-b7b3-53a27dde8edf._msdcs.TEST.LOCAL für DC2.TEST.LOCAL hinzu Alle anderen DNS-Einträge (wie _ldap SRV-Einträge) werden beim ersten Start von samba_dnsupdate erstellt Repliziere neue DNS-Einträge in DC=DomainDnsZones,DC=TEST,DC=LOCAL Partition[DC=DomainDnsZones,DC=TEST,DC=LOCAL] Objekte[1/42] verknüpfte_Werte[0/0] Repliziere neue DNS-Einträge in DC=ForestDnsZones,DC=TEST,DC=LOCAL Partition[DC=ForestDnsZones,DC=TEST,DC=LOCAL] Objekte[1/20] verknüpfte_Werte[0/0] Sende DsReplicaUpdateRefs für alle replizierten Partitionen Setze isSynchronized und dsServiceName Einrichten der Geheimnis-Datenbank Domäne TEST beigetreten (SID S-1-5-21-3959064270-1572045903-2556826204) als DCIn der ADUC-Konsole sollte ein Eintrag für den neuen DC in der Domäne TEST.LOCAL erscheinen, und im DNS-Manager sollte ein neuer A-Eintrag, der zu DC2 gehört, sichtbar sein.
- Replikation zwischen den KontrolldomänenLassen Sie uns zunächst den Betrieb des Verzeichnisreplikationsdienstes (DRS) überprüfen.
# samba-tool drs showreplAlle Replikationsversuche sollten im Ausgabeprotokoll erfolgreich sein. In der KCC-Objektliste sollte unser DC1 unter Windows innerhalb von 15 Minuten nach der Eingabe erscheinen.
Standard-Erster-Standort-NameDC2 DSA-Optionen: 0x00000001 DSA-Objekt-GUID: 0e9f5bce-ff59-401e-bdbd-fc69df3fc6bf DSA-Initiierungs-ID: 017997b5-d718-41d7-a3f3-e57ab5151b5c ==== EINGEHENDE NACHBARN ==== DC=ForestDnsZones,DC=test,DC=local Standard-Erster-Standort-NameDC1 über RPC DSA-Objekt-GUID: 60fb339d-efa3-4585-a42d-04974e6601b7 Letzter Versuch am Mo, 27. Mai 2019, 12:56:31 MSK war erfolgreich 0 aufeinanderfolgende Fehler. Letzter Erfolg am Mo, 27. Mai 2019, 12:56:31 MSK DC=DomainDnsZones,DC=test,DC=local Standard-Erster-Standort-NameDC1 über RPC DSA-Objekt-GUID: 60fb339d-efa3-4585-a42d-04974e6601b7 Letzter Versuch am Mo, 27. Mai 2019, 12:56:32 MSK war erfolgreich 0 aufeinanderfolgende Fehler. Letzter Erfolg am Mo, 27. Mai 2019, 12:56:32 MSK CN=Schema,CN=Configuration,DC=test,DC=local Standard-Erster-Standort-NameDC1 über RPC DSA-Objekt-GUID: 60fb339d-efa3-4585-a42d-04974e6601b7 Letzter Versuch am Mo, 27. Mai 2019, 12:56:32 MSK war erfolgreich 0 aufeinanderfolgende Fehler. Letzter Erfolg am Mo, 27. Mai 2019, 12:56:32 MSK DC=test,DC=local Standard-Erster-Standort-NameDC1 über RPC DSA-Objekt-GUID: 60fb339d-efa3-4585-a42d-04974e6601b7 Letzter Versuch am Mo, 27. Mai 2019, 12:56:32 MSK war erfolgreich 0 aufeinanderfolgende Fehler. Letzter Erfolg am Mo, 27. Mai 2019, 12:56:32 MSK CN=Configuration,DC=test,DC=local Standard-Erster-Standort-NameDC1 über RPC DSA-Objekt-GUID: 60fb339d-efa3-4585-a42d-04974e6601b7 Letzter Versuch am Mo, 27. Mai 2019, 12:56:33 MSK war erfolgreich 0 aufeinanderfolgende Fehler. Letzter Erfolg am Mo, 27. Mai 2019, 12:56:33 MSK ==== AUSGEHENDE NACHBARN ==== DC=ForestDnsZones,DC=test,DC=local Standard-Erster-Standort-NameDC1 über RPC DSA-Objekt-GUID: 60fb339d-efa3-4585-a42d-04974e6601b7 Letzter Versuch am Do, 23. Mai 2019, 16:40:03 MSK war erfolgreich 0 aufeinanderfolgende Fehler. Letzter Erfolg am Do, 23. Mai 2019, 16:40:03 MSK DC=DomainDnsZones,DC=test,DC=local Standard-Erster-Standort-NameDC1 über RPC DSA-Objekt-GUID: 60fb339d-efa3-4585-a42d-04974e6601b7 Letzter Versuch am Do, 23. Mai 2019, 16:40:03 MSK war erfolgreich 0 aufeinanderfolgende Fehler. Letzter Erfolg am Do, 23. Mai 2019, 16:40:03 MSK CN=Schema,CN=Configuration,DC=test,DC=local Standard-Erster-Standort-NameDC1 über RPC DSA-Objekt-GUID: 60fb339d-efa3-4585-a42d-04974e6601b7 Letzter Versuch am Do, 23. Mai 2019, 16:40:08 MSK war erfolgreich 0 aufeinanderfolgende Fehler. Letzter Erfolg am Do, 23. Mai 2019, 16:40:08 MSK DC=test,DC=local Standard-Erster-Standort-NameDC1 über RPC DSA-Objekt-GUID: 60fb339d-efa3-4585-a42d-04974e6601b7 Letzter Versuch am Do, 23. Mai 2019, 16:40:08 MSK war erfolgreich 0 aufeinanderfolgende Fehler. Letzter Erfolg am Do, 23. Mai 2019, 16:40:08 MSK CN=Configuration,DC=test,DC=local Standard-Erster-Standort-NameDC1 über RPC DSA-Objekt-GUID: 60fb339d-efa3-4585-a42d-04974e6601b7 Letzter Versuch am Mo, 27. Mai 2019, 12:12:17 MSK war erfolgreich 0 aufeinanderfolgende Fehler. Letzter Erfolg am Mo, 27. Mai 2019, 12:12:17 MSK ==== KCC-VERBINDUNGSOBJEKTE ==== Verbindung -- Verbindungsname: 6d2652b3-e723-4af7-a19f-1ee48915753c Aktiviert : WAHR Server-DNS-Name : DC1.test.local Server-DN-Name : CN=NTDS-Einstellungen,CN=DC1,CN=Server,CN=Standard-Erster-Standort,CN=Standorte,CN=Configuration,DC=test,DC=local Transporttyp: RPC Optionen: 0x00000001 Warnung: Kein NC für die Verbindung repliziert!Warnung Keine NC-Replikation für die Verbindung! Kann bedenkenlos ignoriert werden. Es erscheint, weil bei der Registrierung eines neuen DC Samba einige Replikationsflags falsch setzt.
Es wäre auch gut, die LDAP-Replikation zu überprüfen.
# samba-tool ldapcmp ldap://dc1.test.local ldap://dc2.test.local -UadministratorDer oben angegebene Befehl vergleicht die Attributwerte von Objekten im gesamten Katalog auf DC1 und DC2.
Beispiel für erfolgreiche Replikation
* Vergleiche den Kontext [DOMAIN]... * Zu vergleichende Objekte: 249 * Ergebnis für [DOMAIN]: ERFOLG * Vergleiche den Kontext [CONFIGURATION]... * Zu vergleichende Objekte: 1750 * Ergebnis für [CONFIGURATION]: ERFOLG * Vergleiche den Kontext [SCHEMA]... * Zu vergleichende Objekte: 1739 * Ergebnis für [SCHEMA]: ERFOLG * Vergleiche den Kontext [DNSDOMAIN]... * Zu vergleichende Objekte: 42 * Ergebnis für [DNSDOMAIN]: ERFOLG * Vergleiche den Kontext [DNSFOREST]... * Zu vergleichende Objekte: 20 * Ergebnis für [DNSFOREST]: ERFOLGIn einigen Fällen können die Attribute von Objekten auf verschiedenen Controller unterschiedlich sein, und die Ausgabe des Befehls wird Sie darüber informieren. Aber nicht in allen Fällen ist dies ein Hinweis auf ein Problem mit der Replikation.
Im nächsten Schritt ist es notwendig, die stabile Replikation des SysVol-Verzeichnisses manuell einzurichten.
Das Problem ist, dass Samba derzeit DFS-R nicht unterstützt, ebenso wie es früher FRS nicht unterstützte. Daher ist die einzige funktionierende Lösung für die Replikation zwischen Samba-DC und Windows momentan die einseitige Replikation mit Hilfe des Tools. Robocopy aus dem Paket .Die Entwickler von Samba empfehlen aus Kompatibilitätsgründen, zunächst das Toolkit auf einem normalen Arbeitsplatz zu installieren und anschließend Robocopy auf den Controller in den Ordner „C:Program Files (x86)Windows Resource KitsTools“ zu kopieren.
Nach der Installation erstellen wir im Aufgabenplaner auf dem Windows-Controller einen Task zur Ausführung der Replikation mit den folgenden Parametern:
— Für alle Benutzer ausführen
— Trigger für die Ausführung täglich alle 5 Minuten während des Tages
— In den Aktionen geben wir den Pfad zum Robocopy-Tool an und als Argumente an:DC1SYSVOLtest.local DC2SYSVOLtest.local /mir /secIn diesem speziellen Fall kopieren wir den Inhalt des SysVol-Verzeichnisses von DC1 nach DC2.
- Übertragbare Benutzerordner mithilfe der Konfiguration pam_mountDurch experimentelle Ansätze habe ich zwei brauchbare Lösungen für diese Aufgabe gefunden.
- Vollständiges Einbinden eines Profilordners aus dem Netzwerk in den Bereich /home. Eine einfache Möglichkeit, die gut funktioniert, wenn die Ordnernamen „Dokumente“, „Downloads“ und „Desktop“ in beiden Betriebssystemen übereinstimmen. Es wird vorausgesetzt, dass der Linux-PC bereits in die Domäne integriert ist und die Benutzer sich mit ihren Domänenkonten unter Verwendung von sssd zur Authentifizierung und Autorisierung anmelden.
# 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"/>wo:
- uid=„100000000-2000000000“ — UID-Bereich, der den Domänenbenutzern von SSSD zugewiesen wird
- server=„dfs“ — Name des Dateiservers
- path=„Profile_Users/%(USER)“ — Ressource auf dem Dateiserver, die das Benutzerprofil enthält
- mountpoint=„~“ — Einhängepunkt im Home-Verzeichnis des Benutzers
Der Benutzer-Login wird in die Makrovariable „%(USER)“ übergeben, die von pam_mount verwendet wird, um unsere Netzwerkressource so zu verbinden, wie sie im Display-Manager eingegeben wird. Daher ist es wichtig, dass bei der Anmeldung im Display-Manager der Login ohne explizite Angabe des Domänennamens eingegeben wird.
In sssd.conf wird dies gelöst, indem man die Option kommentiert oder den Wert False setzt. use_fully_qualified_names, die den Vollnamenmodus (einschließlich der Domain) für Benutzer und Gruppen umfasst.
- Die zweite Methode ist weniger direkt und etwas grob, aber aus meiner Sicht bequemer und vorzuziehen. Der Unterschied zur ersten besteht lediglich in der Konfiguration von pam_mount.
# vim /etc/security/pam_mount.conf.xmlDas heißt, wir montieren einfach jeden unserer Ordner in das entsprechende Verzeichnis.
- Vollständiges Einbinden eines Profilordners aus dem Netzwerk in den Bereich /home. Eine einfache Möglichkeit, die gut funktioniert, wenn die Ordnernamen „Dokumente“, „Downloads“ und „Desktop“ in beiden Betriebssystemen übereinstimmen. Es wird vorausgesetzt, dass der Linux-PC bereits in die Domäne integriert ist und die Benutzer sich mit ihren Domänenkonten unter Verwendung von sssd zur Authentifizierung und Autorisierung anmelden.
Fazit
In einem halben Monat Testbetrieb hat dieses Setup mehrere lang- und kurzfristige Ausfälle beider Controller nahezu ohne Auswirkungen auf die Kunden überstanden (einmal verlor ein Kunde unter Windows 7 seine Vertrauensverhältnisse).
Insgesamt habe ich recht positive Eindrücke von der Arbeit mit diesem Produkt, trotz aller Nuancen, mit denen ich sowohl in der Artikelverfassung als auch im 'Hintergrund' konfrontiert wurde.
Es gibt viele Fallstricke, und während der Arbeit mit Samba wird man eine große Anzahl davon entdecken müssen. Dennoch gibt es derzeit keine anderen Lösungen, die es ermöglichen, eine hybride Umgebung unter Verwendung von Verzeichnisdiensten ohne Windows zu organisieren.
Quelle: habr.com
