Samba DC als tweede controller in het AD-domein Windows 2012R2 en verplaatsbare mappen voor klanten op Windows en Linux

Samba DC als tweede controller in het AD-domein Windows 2012R2 en verplaatsbare mappen voor klanten op Windows en Linux
Het besef dat ik in een importvervanging terecht was gekomen, kwam niet meteen. Pas toen versies van computers met een distributie van 'Alt Linux' vanaf de hogere organisatie constant arriveerden, begon ik te vermoeden dat er iets niet in de haak was.

Echter, tijdens het doorgaan door de stadia van het onvermijdelijke raakte ik betrokken en begon ik zelfs een beetje plezier te krijgen in het proces. Op een gegeven moment dacht ik dat het vroeg of laat nodig zou zijn om afscheid te nemen van de oplossingen voor de organisatie van de directorydienst van Microsoft en te bewegen richting iets meer exotisch. Daarom besloot ik, om me voor te bereiden op het onvermijdelijke en zoveel mogelijk verborgen valkuilen te vermijden, een testopstelling op te zetten, die omvatte:

  • DC1 — Windows Server 2012R2
  • DC2 — Alt Server 8.2
  • Bestandserver — Windows Server 2012R2
  • PC1 — Windows 7
  • PC2 — Alt Werkstation 8.2

De taken van de opstelling:

  1. Een domein op basis van w2k12r2 opzetten. Een minimale set groepsbeleidsinstellingen maken (net zoals die in de werkinfrastructuur worden gebruikt), inclusief het beleid voor het verplaatsen van gebruikerswerk mappen (Downloads/Documents/Bureaublad). Eindelijk wil ik dat wanneer een gebruiker zijn werkplek van Windows naar Linux en weer terug verandert, hij comfortabele toegang heeft tot zijn werkdocumenten.
  2. Samba DC als tweede controller invoeren. Controle van de replicatie van de directorydienst en DNS.
  3. Instellen van Linux-clients voor het werken met verplaatsbare mappen.

Implementatie:

  1. Installatie en invoer van de nieuwe controller.Met de installatie van MS Windows 2012R2 is alles eenvoudig en min of meer duidelijk. Op internet zijn er 1001 handleidingen voor het opzetten van een domein op Windows, zowel met behulp van de GUI als met Powershell, dus ik zal niet nogmaals herhalen, ik laat alleen link de officiële documentatie voor geïnteresseerden en voor degenen die willen opfrissen.

    Toch is er één belangrijk punt in dit onderdeel. Tegenwoordig kan Samba niet werken met directory schema's hoger dan 2008R2.

    Spoiler-titel Of beter gezegd, de ontwikkelaars hebben deze ondersteuning als experimenteel aangegeven. Maar in de praktijk zal de poging om Samba als tweede DC in een bestaande Windows-domein met schema 69 in te voeren, u de volgende foutmelding opleveren:

    DsAddEntry failed with status WERR_ACCESS_DENIED info (8567, ‘WERR_DS_INCOMPATIBLE_VERSION’)

    Het probleem is dat Windows 2012 en 2012R2 WMI-tools gebruiken voor domeinen en bomen, waarvan de stabiele ondersteuning pas voor versie Samba 4.11 is aangekondigd, die vóór het einde van dit jaar moet uitkomen.
    Hieruit volgt dat de enige optie om Samba in een AD-domein, dat op een 2012R2-server is geïmplementeerd, te introduceren, het verlagen van het schema van 69 naar 47 is. Natuurlijk is het niet nodig om dit te doen op een productie-infrastructuur zonder goede redenen, maar wij hebben hier een testomgeving, dus waarom niet.

    We installeren Alt Server 8.2. Tijdens de installatie kiezen we het profiel "Samba-DC Server (AD-controller)". Op de geïmplementeerde server voeren we een volledige systeemupdate uit en installeren we het pakket task-samba-dc, dat alles benodigde meebrengt.

    # apt-get install task-samba-dc

    Als task-samba-dc, in strijd met de beweringen van de documentatie van Alta, weigert om alles benodigde te installeren.

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

    Vervolgens gaan we naar de configuratie van Kerberos en het verkrijgen van een ticket. We openen het bestand krb5.conf, gaan naar de sectie [libdefaults] en brengen het als volgt in de gewenste staat:

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

    We vragen een ticket aan.

    # kinit administrator
    Password for administrator@TEST.LOCAL:

    We controleren de lijst met verkregen 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:35

    Nu verwijderen of hernoemen we de bestaande Samba-configuratie.

    # mv smb.conf smb.conf.bak1

    En tot slot voegen we ons als tweede controller toe aan het AD-domein:

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

    Een succesvolle toevoeging zal gepaard gaan met de volgende log.

    Een schrijfbare DC vinden voor domein 'test.local'
    Gevonden DC DC1.TEST.LOCAL
    Wachtwoord voor [TESTadministrator]:
    Herverbinden met naam master e31d7da6-8f56-4420-8473-80f2b3a31338._msdcs.TEST.LOCAL
    DNS-naam van de nieuwe naam master is DC1.TEST.LOCAL
    werkgroep is TEST
    domein is TEST.LOCAL
    Toevoegen van CN=DC2,OU=Domain Controllers,DC=TEST,DC=LOCAL
    Toevoegen van CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=TEST,DC=LOCAL
    Toevoegen van CN=NTDS Settings,CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=TEST,DC=LOCAL
    Toevoegen van SPNs aan CN=DC2,OU=Domain Controllers,DC=TEST,DC=LOCAL
    Wachtwoord voor account instellen voor DC2$
    Account inschakelen
    Aanroepen bare provision
    Zoeken naar IPv4-adressen
    Zoeken naar IPv6-adressen
    Er wordt geen IPv6-adres toegewezen
    Instellen van share.ldb
    Instellen van secrets.ldb
    Instellen van het register
    Instellen van de privileges-database
    Instellen van idmap db
    Instellen van SAM db
    Instellen van sam.ldb-partities en instellingen
    Instellen van sam.ldb rootDSE
    Voorbelasting van het Samba 4 en AD-schema
    Een Kerberos-configuratie die geschikt is voor Samba AD is gegenereerd in /var/lib/samba/private/krb5.conf
    Provision OK voor domein DN DC=TEST,DC=LOCAL
    Replication starten
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objecten[402/1426] gekoppelde waarden[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objecten[804/1426] gekoppelde waarden[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objecten[1206/1426] gekoppelde waarden[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objecten[1608/1426] gekoppelde waarden[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objecten[1743/1426] gekoppelde waarden[0/0]
    Analyseren en toepassen van schema-objecten
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objecten[402/2240] gekoppelde waarden[0/24]
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objecten[804/2240] gekoppelde waarden[0/24]
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objecten[1206/2240] gekoppelde waarden[0/24]
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objecten[1608/2240] gekoppelde waarden[0/24]
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objecten[1772/2240] gekoppelde waarden[24/24]
    Kritieke objecten repliceren vanaf de basis DN van het domein
    Partition[DC=TEST,DC=LOCAL] objecten[109/110] gekoppelde waarden[26/29]
    Partition[DC=TEST,DC=LOCAL] objecten[394/5008] gekoppelde waarden[29/29]
    Klaar met altijd gerepliceerde NC (basis, config, schema)
    Repliceren van DC=DomainDnsZones,DC=TEST,DC=LOCAL
    Partition[DC=DomainDnsZones,DC=TEST,DC=LOCAL] objecten[42/42] gekoppelde waarden[0/0]
    Repliceren van DC=ForestDnsZones,DC=TEST,DC=LOCAL
    Partition[DC=ForestDnsZones,DC=TEST,DC=LOCAL] objecten[20/20] gekoppelde waarden[0/0]
    Exop op[CN=RID Manager$,CN=System,DC=TEST,DC=LOCAL] objecten[3] gekoppelde waarden[0]
    Committen van SAM-database
    Toevoegen van 1 externe DNS-records voor DC2.TEST.LOCAL
    Toevoegen van DNS A-record DC2.TEST.LOCAL voor IPv4 IP: 192.168.90.201
    Toevoegen van DNS CNAME-record 6ff1df40-cbb5-41f0-b7b3-53a27dde8edf._msdcs.TEST.LOCAL voor DC2.TEST.LOCAL
    Alle andere DNS-records (zoals _ldap SRV-records) worden aangemaakt met samba_dnsupdate bij de eerste opstart
    Repliceren van nieuwe DNS-records in DC=DomainDnsZones,DC=TEST,DC=LOCAL
    Partition[DC=DomainDnsZones,DC=TEST,DC=LOCAL] objecten[1/42] gekoppelde waarden[0/0]
    Repliceren van nieuwe DNS-records in DC=ForestDnsZones,DC=TEST,DC=LOCAL
    Partition[DC=ForestDnsZones,DC=TEST,DC=LOCAL] objecten[1/20] gekoppelde waarden[0/0]
    Versturen van DsReplicaUpdateRefs voor alle gerepliceerde partities
    Instellen van isSynchronized en dsServiceName
    Instellen van secrets-database
    Gedeeltelijke toegang tot domein TEST (SID S-1-5-21-3959064270-1572045903-2556826204) als DC

    In de ADUC-tool moet een vermelding verschijnen voor de nieuwe DC in het domein TEST.LOCAL, en in de DNS-beheerder een nieuwe A-record die overeenkomt met DC2.

  2. Replicatie tussen de controllersLaten we beginnen met het controleren van de werking van de Directory Replication Service (DRS)
    # samba-tool drs showrepl

    Alle replicatiepogingen in de uitvoer moeten succesvol zijn. In de KCC-objectlijst moet onze DC1 binnen 15 minuten na invoer verschijnen op Windows.

    Standaard-Eerste-Site-NaamDC2
    	DSA-opties: 0x00000001
    	DSA-object GUID: 0e9f5bce-ff59-401e-bdbd-fc69df3fc6bf
    	DSA-invocatie-ID: 017997b5-d718-41d7-a3f3-e57ab5151b5c
    
    	==== BINNENKOMENDE BUREN ====
    
    	DC=ForestDnsZones,DC=test,DC=local
    	        Standaard-Eerste-Site-NaamDC1 via RPC
    	                DSA-object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Laatste poging @ Ma 27 mei 12:56:31 2019 MSK was succesvol
    	                0 opeenvolgende fout(en).
    	                Laatste succes @ Ma 27 mei 12:56:31 2019 MSK
    
    	DC=DomainDnsZones,DC=test,DC=local
    	        Standaard-Eerste-Site-NaamDC1 via RPC
    	                DSA-object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Laatste poging @ Ma 27 mei 12:56:32 2019 MSK was succesvol
    	                0 opeenvolgende fout(en).
    	                Laatste succes @ Ma 27 mei 12:56:32 2019 MSK
    
    	CN=Schema,CN=Configuration,DC=test,DC=local
    	        Standaard-Eerste-Site-NaamDC1 via RPC
    	                DSA-object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Laatste poging @ Ma 27 mei 12:56:32 2019 MSK was succesvol
    	                0 opeenvolgende fout(en).
    	                Laatste succes @ Ma 27 mei 12:56:32 2019 MSK
    
    	DC=test,DC=local
    	        Standaard-Eerste-Site-NaamDC1 via RPC
    	                DSA-object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Laatste poging @ Ma 27 mei 12:56:32 2019 MSK was succesvol
    	                0 opeenvolgende fout(en).
    	                Laatste succes @ Ma 27 mei 12:56:32 2019 MSK
    
    	CN=Configuration,DC=test,DC=local
    	        Standaard-Eerste-Site-NaamDC1 via RPC
    	                DSA-object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Laatste poging @ Ma 27 mei 12:56:33 2019 MSK was succesvol
    	                0 opeenvolgende fout(en).
    	                Laatste succes @ Ma 27 mei 12:56:33 2019 MSK
    
    	==== UITGAANDE BUREN ====
    
    	DC=ForestDnsZones,DC=test,DC=local
    	        Standaard-Eerste-Site-NaamDC1 via RPC
    	                DSA-object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Laatste poging @ Do 23 mei 16:40:03 2019 MSK was succesvol
    	                0 opeenvolgende fout(en).
    	                Laatste succes @ Do 23 mei 16:40:03 2019 MSK
    
    	DC=DomainDnsZones,DC=test,DC=local
    	        Standaard-Eerste-Site-NaamDC1 via RPC
    	                DSA-object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Laatste poging @ Do 23 mei 16:40:03 2019 MSK was succesvol
    	                0 opeenvolgende fout(en).
    	                Laatste succes @ Do 23 mei 16:40:03 2019 MSK
    
    	CN=Schema,CN=Configuration,DC=test,DC=local
    	        Standaard-Eerste-Site-NaamDC1 via RPC
    	                DSA-object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Laatste poging @ Do 23 mei 16:40:08 2019 MSK was succesvol
    	                0 opeenvolgende fout(en).
    	                Laatste succes @ Do 23 mei 16:40:08 2019 MSK
    
    	DC=test,DC=local
    	        Standaard-Eerste-Site-NaamDC1 via RPC
    	                DSA-object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Laatste poging @ Do 23 mei 16:40:08 2019 MSK was succesvol
    	                0 opeenvolgende fout(en).
    	                Laatste succes @ Do 23 mei 16:40:08 2019 MSK
    
    	CN=Configuration,DC=test,DC=local
    	        Standaard-Eerste-Site-NaamDC1 via RPC
    	                DSA-object GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Laatste poging @ Ma 27 mei 12:12:17 2019 MSK was succesvol
    	                0 opeenvolgende fout(en).
    	                Laatste succes @ Ma 27 mei 12:12:17 2019 MSK
    
    	==== KCC VERBINDINGSOBJECTEN ====
    
    	Verbinden --
    	        Verbinding naam: 6d2652b3-e723-4af7-a19f-1ee48915753c
    	        Ingeschakeld     : WAAR
    	        Server DNS naam : DC1.test.local
    	        Server DN naam   : CN=NTDS Settings,CN=DC1,CN=Servers,CN=Standaard-Eerste-Site-Naam,CN=Sites,CN=Configuration,DC=test,DC=local
    	                TransportType: RPC
    	                opties: 0x00000001
    	Waarschuwing: Geen NC gerepliceerd voor Verbinding!

    Waarschuwing «Geen NC gerepliceerd voor Verbinding!» kan gerust worden genegeerd. Het verschijnt omdat bij het registreren van een nieuwe Samba DC sommige replicatie-vlaggen niet correct worden ingesteld.

    Het is ook nuttig om de LDAP-replicatie te controleren.

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

    De bovenstaande opdracht vergelijkt de waarden van de objectattributen in de gehele catalogus op DC1 en DC2.

    Voorbeeld van succesvolle replicatie

    * Vergelijken van [DOMAIN] context...
    
    	* Te vergelijken objecten: 249
    
    	* Resultaat voor [DOMAIN]: SUCCES
    
    	* Vergelijken van [CONFIGURATION] context...
    
    	* Te vergelijken objecten: 1750
    
    	* Resultaat voor [CONFIGURATION]: SUCCES
    
    	* Vergelijken van [SCHEMA] context...
    
    	* Te vergelijken objecten: 1739
    
    	* Resultaat voor [SCHEMA]: SUCCES
    
    	* Vergelijken van [DNSDOMAIN] context...
    
    	* Te vergelijken objecten: 42
    
    	* Resultaat voor [DNSDOMAIN]: SUCCES
    
    	* Vergelijken van [DNSFOREST] context...
    
    	* Te vergelijken objecten: 20
    
    	* Resultaat voor [DNSFOREST]: SUCCES

    In sommige gevallen kunnen de attribuutwaarden van objecten op verschillende controllers verschillen, en de uitvoer van de opdracht zal je daarover informeren. Maar in veel gevallen is dit geen indicatie van een replicatieprobleem.

    De volgende stap is om handmatig een stabiele replicatie van de SysVol-catalogus in te stellen.
    Het probleem is dat Samba momenteel geen DFS-R ondersteunt, net zoals het eerder FRS niet ondersteunde. Daarom is de enige werkende oplossing voor replicatie tussen Samba DC en Windows op dit moment een eendimensionale replicatie met de tool Robocopy uit de kit Windows Server 2003 Resource Kit Tools.

    Samba-ontwikkelaars raden om compatibiliteitsproblemen te voorkomen aan om eerst de toolset op een gewone werkstation te installeren en daarna Robocopy naar de controller te kopiëren naar de map "C:Program Files (x86)Windows Resource KitsTools"

    Na installatie maken we in het taakprogramma op de Windows-controller een taak aan voor het uitvoeren van replicatie met de volgende parameters:

    — Uitvoeren voor alle gebruikers
    — Trigger voor dagelijkse uitvoering elke 5 minuten gedurende de dag
    — In de acties geven we het pad naar het hulpprogramma robocopy op, met de volgende argumenten:

    DC1SYSVOLtest.local DC2SYSVOLtest.local \/mir \/sec

    In dit specifieke geval kopiëren we de inhoud van de SysVol-directory van DC1 naar DC2.

  3. Overdraagbare gebruikersmappen met behulp van pam_mount-configuratieDoor middel van ervaring heb ik twee werkbare opties ontdekt om deze taak op te lossen.
    1. Volledige montage van de profielmap vanuit het netwerk in het gedeelte /home. Eenvoudige optie. Werkt uitstekend als de mapnamen Documenten, Downloads en Bureaublad in beide besturingssystemen overeenkomen. Er wordt verondersteld dat de PC op Linux al in het domein is opgenomen en dat gebruikers inloggen met hun domeingegevens, waarbij sssd als authenticatie- en autorisatiemechanisme wordt gebruikt.
      # 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"/>
      

      waarbij:

      • uid=«100000000-2000000000» — de UID-bereik dat wordt toegekend aan domeingebruikers door SSSD
      • server=«dfs» — de naam van de bestandserver
      • path=«Profile_Users/%(USER)» — bron op de bestandserver waar het gebruikersprofiel is opgeslagen
      • mountpoint=»~» — het montagepad in de persoonlijke map van de gebruiker

      De gebruikerslogin wordt doorgegeven in de macrovariabele «%(USER)», die door pam_mount wordt gebruikt om onze netbron te verbinden, zoals deze is ingevoerd in de grafische beheerder. Daarom is het belangrijk dat de login in de DM zonder expliciete vermelding van de domeinnaam wordt ingevoerd.

      In sssd.conf kan dit worden opgelost door te commentariëren of door de waarde False in te stellen voor de optie use_fully_qualified_names, die de modus voor volledig gekwalificeerde namen (inclusief domein) voor gebruikers en groepen inschakelt.

    2. De tweede methode is minder rechttoe rechtaan en grof, en naar mijn mening handiger en verkieslijker. Het verschil met de eerste zit alleen in de configuratie van pam_mount.
      # vim /etc/security/pam_mount.conf.xml

      Dat wil zeggen, we monteren gewoon elke map apart in de overeenkomstige catalogus.

Conclusies

In een halve maand werken op de testomgeving heeft deze combinatie verschillende langdurige en kortdurende onderbrekingen van beide controllers doorstaan, vrijwel zonder gevolgen voor de klanten (één keer verloor een klant op Windows7 het vertrouwensniveau).

Over het algemeen heb ik een vrij positieve indruk van het werken met dit product, ondanks alle nuances waarmee ik zowel in het artikel als "achter de schermen" te maken had.

Er zijn veel valkuilen, en tijdens het werken met Samba zal je ze in grote hoeveelheden tegenkomen. Toch zijn er op dit moment geen andere oplossingen die het mogelijk maken om een hybride omgeving te creëren met gebruik van een directorydienst en zonder Windows.

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster