Samba DC som anden controller i AD-domænet Windows 2012R2 og flytbare mapper for klienter på Windows og Linux

Samba DC som anden controller i AD-domænet Windows 2012R2 og flytbare mapper for klienter på Windows og Linux
Det var ikke straks, at jeg indså, at jeg var havnet i en importsubstitution. Først da friske leverancer af pc'er fra overordnede organisationer konsekvent begyndte at ankomme med "Alt Linux" distributionssoftware om bord, mistænkte jeg, at noget var galt.

Men i processen med at komme igennem de uundgåelige stadier blev jeg involveret og begyndte endda at få lidt glæde af processen. På et tidspunkt tænkte jeg, at med den udvikling ville jeg før eller siden måtte skille mig af med Microsofts løsninger til katalogtjenester og bevæge mig mod noget mere eksotisk. Derfor blev det besluttet at forberede sig på det uundgåelige i god tid og forsøge at fange så mange skjulte faldgruber som muligt ved at oprette en testbænk, som inkluderede:

  • DC1 — Windows Server 2012R2
  • DC2 — Alt Server 8.2
  • Filserver — Windows Server 2012R2
  • PC1 — Windows 7
  • PC2 — Alt Arbejdsstation 8.2

Opgaver for testbænken:

  1. Oprette et domæne baseret på w2k12r2. Oprette et minimum af gruppepolitikker (svarende til dem, der anvendes i den arbejdsmæssige infrastruktur), inklusive politik for overførsel af brugerens arbejdsmapper (Downloads/Dokumenter/Skrivebord). I sidste ende ønsker jeg, at når brugeren skifter arbejdsplads fra Windows til Linux og tilbage, skal de have nem adgang til deres arbejdsdokumenter.
  2. Indsamling af Samba DC som den anden controller. Kontrol af replikation af katalogtjenester og DNS
  3. Konfiguration af Linux-klienter til at arbejde med flyttede mapper

Implementering:

  1. Installation og oprettelse af den nye controllerMed installationen af MS Windows 2012R2 er det ganske simpelt og mere eller mindre forståeligt. Der er 1001 guides på internettet til oprettelse af domæner på Windows både ved hjælp af GUI og med Powershell-værktøjer, så jeg vil ikke gentage det unødvendigt, jeg vil kun efterlade linket den officielle dokumentation til dem, der er nysgerrige, og dem der ønsker at friske hukommelsen op.

    Men der er dog et vigtigt punkt i denne sammenhæng. I dag kan Samba ikke arbejde med katalogskemaer over 2008R2.

    Spoileroverskrift Eller rettere sagt, udviklerne har erklæret denne støtte som eksperimentel. Men i praksis vil et forsøg på at indføre Samba som den anden DC i et eksisterende Windows-domæne med skema 69 møde denne fejl

    DsAddEntry mislykkedes med status WERR_ACCESS_DENIED info (8567, ‘WERR_DS_INCOMPATIBLE_VERSION’)

    Problemet er, at Windows 2012 og 2012R2 bruger WMI-værktøjer til at arbejde med domæner og skove, og stabil support for dette blev først annonceret i Samba 4.11, som skal udgives inden årets udgang.
    Det betyder, at den eneste måde at introducere Samba i et AD-domæne, der kører på en 2012R2-server, er at nedgradere skemaet fra 69 til 47. Selvfølgelig skal man ikke gøre dette i en produktionsinfrastruktur uden vægtige grunde, men vi har et testmiljø, så hvorfor ikke.

    Installerer Alt Server 8.2. Under installationen vælger vi profilen "Samba-DC Server (AD-controller)". På den installerede server foretager vi en fuld opdatering af systemet og installerer pakken task-samba-dc, som vil bringe alt nødvendigt med sig.

    # apt-get install task-samba-dc

    Hvis task-samba-dc, trods dokumentationens forsikringer fra Alta, nægter at installere alt nødvendig software.

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

    Derefter går vi videre med konfigurationen af Kerberos og indhentning af en billet. Vi åbner filen krb5.conf, går til sektionen [libdefaults] og ændrer det til følgende:

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

    Anmoder om en billet

    # kinit administrator
    Password for administrator@TEST.LOCAL:

    Kontrollerer listen over modtagne Kerberos-billetter

    # 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 sletter vi eller omdøber den eksisterende Samba-konfiguration.

    # mv smb.conf smb.conf.bak1

    Og endelig tilføjer vi den som en sekundær controller i AD:

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

    Den vellykkede tilføjelse vil blive ledsaget af følgende log

    Finder en skrivbar DC til domænet 'test.local'
    Found DC DC1.TEST.LOCAL
    Adgangskode for [TESTadministrator]:
    Genopretter forbindelse til navngivning master e31d7da6-8f56-4420-8473-80f2b3a31338._msdcs.TEST.LOCAL
    DNS-navnet for den nye navngivning master er DC1.TEST.LOCAL
    arbejdsgruppe er TEST
    område er TEST.LOCAL
    Tilføjer CN=DC2,OU=Domain Controllers,DC=TEST,DC=LOCAL
    Tilføjer CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=TEST,DC=LOCAL
    Tilføjer CN=NTDS Settings,CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=TEST,DC=LOCAL
    Tilføjer SPN'er til CN=DC2,OU=Domain Controllers,DC=TEST,DC=LOCAL
    Indstiller kontoens adgangskode for DC2$
    Aktiverer konto
    Kalder bare provision
    Ser efter IPv4-adresser
    Ser efter IPv6-adresser
    Ingen IPv6-adresse vil blive tildelt
    Indstiller share.ldb
    Indstiller secrets.ldb
    Indstiller registreringsdatabasen
    Indstiller privilegiedatabase
    Indstiller idmap db
    Indstiller SAM db
    Indstiller sam.ldb partitioner og indstillinger
    Indstiller sam.ldb rootDSE
    Forlader Samba 4 og AD skemaet
    En Kerberos-konfiguration egnet til Samba AD er blevet genereret i /var/lib/samba/private/krb5.conf
    Provision OK for domæne DN DC=TEST,DC=LOCAL
    Starter replikation
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objekter[402/1426] linkede værdier[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objekter[804/1426] linkede værdier[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objekter[1206/1426] linkede værdier[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objekter[1608/1426] linkede værdier[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objekter[1743/1426] linkede værdier[0/0]
    Analysere og anvende skema-objekter
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objekter[402/2240] linkede værdier[0/24]
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objekter[804/2240] linkede værdier[0/24]
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objekter[1206/2240] linkede værdier[0/24]
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objekter[1608/2240] linkede værdier[0/24]
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objekter[1772/2240] linkede værdier[24/24]
    Replikerer kritiske objekter fra basis DN for domænet
    Partition[DC=TEST,DC=LOCAL] objekter[109/110] linkede værdier[26/29]
    Partition[DC=TEST,DC=LOCAL] objekter[394/5008] linkede værdier[29/29]
    Færdig med altid replikerede NC (basis, konfiguration, skema)
    Replikerer DC=DomainDnsZones,DC=TEST,DC=LOCAL
    Partition[DC=DomainDnsZones,DC=TEST,DC=LOCAL] objekter[42/42] linkede værdier[0/0]
    Replikerer DC=ForestDnsZones,DC=TEST,DC=LOCAL
    Partition[DC=ForestDnsZones,DC=TEST,DC=LOCAL] objekter[20/20] linkede værdier[0/0]
    Exop på[CN=RID Manager$,CN=System,DC=TEST,DC=LOCAL] objekter[3] linkede værdier[0]
    Forpligtende SAM-database
    Tilføjer 1 fjern DNS-poster for DC2.TEST.LOCAL
    Tilføjer DNS A-post DC2.TEST.LOCAL for IPv4 IP: 192.168.90.201
    Tilføjer DNS CNAME-post 6ff1df40-cbb5-41f0-b7b3-53a27dde8edf._msdcs.TEST.LOCAL for DC2.TEST.LOCAL
    Alle andre DNS-poster (som _ldap SRV-poster) oprettes via samba_dnsupdate ved første opstart
    Replikerer nye DNS-poster i DC=DomainDnsZones,DC=TEST,DC=LOCAL
    Partition[DC=DomainDnsZones,DC=TEST,DC=LOCAL] objekter[1/42] linkede værdier[0/0]
    Replikerer nye DNS-poster i DC=ForestDnsZones,DC=TEST,DC=LOCAL
    Partition[DC=ForestDnsZones,DC=TEST,DC=LOCAL] objekter[1/20] linkede værdier[0/0]
    Sender DsReplicaUpdateRefs for alle de replikerede partitioner
    Indstiller isSynchronized og dsServiceName
    Indstiller secrets-database
    Blede ind i domænet TEST (SID S-1-5-21-3959064270-1572045903-2556826204) som en DC

    I ADUC-værktøjet skal der optræde en post om den nye DC i domænet TEST.LOCAL, og i DNS-manageren skal der være en ny A-post, der svarer til DC2.

  2. Replikation mellem kontrollereLad os først kontrollere, om tjenesten til katalogreplikation (DRS) fungerer
    # samba-tool drs showrepl

    Alle replikationsforsøg i outputtet skal være succesfulde. I KCC-objeklisten skal vores DC1 på Windows fremgå inden for 15 minutter efter indtastning.

    Standard-Første-Websted-NavnDC2
    	DSA Muligheder: 0x00000001
    	DSA objekt GUID: 0e9f5bce-ff59-401e-bdbd-fc69df3fc6bf
    	DSA invocationId: 017997b5-d718-41d7-a3f3-e57ab5151b5c
    
    	==== INDBOENDE NABOER ====
    
    	DC=ForestDnsZones,DC=test,DC=local
    	        Standard-Første-Websted-NavnDC1 via RPC
    	                DSA objekt GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Sidste forsøg @ Man May 27 12:56:31 2019 MSK var vellykket
    	                0 på hinanden følgende fejl.
    	                Sidste succes @ Man May 27 12:56:31 2019 MSK
    
    	DC=DomainDnsZones,DC=test,DC=local
    	        Standard-Første-Websted-NavnDC1 via RPC
    	                DSA objekt GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Sidste forsøg @ Man May 27 12:56:32 2019 MSK var vellykket
    	                0 på hinanden følgende fejl.
    	                Sidste succes @ Man May 27 12:56:32 2019 MSK
    
    	CN=Schema,CN=Configuration,DC=test,DC=local
    	        Standard-Første-Websted-NavnDC1 via RPC
    	                DSA objekt GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Sidste forsøg @ Man May 27 12:56:32 2019 MSK var vellykket
    	                0 på hinanden følgende fejl.
    	                Sidste succes @ Man May 27 12:56:32 2019 MSK
    
    	DC=test,DC=local
    	        Standard-Første-Websted-NavnDC1 via RPC
    	                DSA objekt GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Sidste forsøg @ Man May 27 12:56:32 2019 MSK var vellykket
    	                0 på hinanden følgende fejl.
    	                Sidste succes @ Man May 27 12:56:32 2019 MSK
    
    	CN=Configuration,DC=test,DC=local
    	        Standard-Første-Websted-NavnDC1 via RPC
    	                DSA objekt GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Sidste forsøg @ Man May 27 12:56:33 2019 MSK var vellykket
    	                0 på hinanden følgende fejl.
    	                Sidste succes @ Man May 27 12:56:33 2019 MSK
    
    	==== UDBOENDE NABOER ====
    
    	DC=ForestDnsZones,DC=test,DC=local
    	        Standard-Første-Websted-NavnDC1 via RPC
    	                DSA objekt GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Sidste forsøg @ Tor May 23 16:40:03 2019 MSK var vellykket
    	                0 på hinanden følgende fejl.
    	                Sidste succes @ Tor May 23 16:40:03 2019 MSK
    
    	DC=DomainDnsZones,DC=test,DC=local
    	        Standard-Første-Websted-NavnDC1 via RPC
    	                DSA objekt GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Sidste forsøg @ Tor May 23 16:40:03 2019 MSK var vellykket
    	                0 på hinanden følgende fejl.
    	                Sidste succes @ Tor May 23 16:40:03 2019 MSK
    
    	CN=Schema,CN=Configuration,DC=test,DC=local
    	        Standard-Første-Websted-NavnDC1 via RPC
    	                DSA objekt GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Sidste forsøg @ Tor May 23 16:40:08 2019 MSK var vellykket
    	                0 på hinanden følgende fejl.
    	                Sidste succes @ Tor May 23 16:40:08 2019 MSK
    
    	DC=test,DC=local
    	        Standard-Første-Websted-NavnDC1 via RPC
    	                DSA objekt GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Sidste forsøg @ Tor May 23 16:40:08 2019 MSK var vellykket
    	                0 på hinanden følgende fejl.
    	                Sidste succes @ Tor May 23 16:40:08 2019 MSK
    
    	CN=Configuration,DC=test,DC=local
    	        Standard-Første-Websted-NavnDC1 via RPC
    	                DSA objekt GUID: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Sidste forsøg @ Man May 27 12:12:17 2019 MSK var vellykket
    	                0 på hinanden følgende fejl.
    	                Sidste succes @ Man May 27 12:12:17 2019 MSK
    
    	==== KCC FORBINDELSESOBJEKTER ====
    
    	Forbindelse --
    	        Forbindelsesnavn: 6d2652b3-e723-4af7-a19f-1ee48915753c
    	        Aktiveret        : SAND
    	        Server DNS navn : DC1.test.local
    	        Server DN navn  : CN=NTDS Settings,CN=DC1,CN=Servers,CN=Standard-Første-Websted,CN=Sites,CN=Configuration,DC=test,DC=local
    	                TransportType: RPC
    	                muligheder: 0x00000001
    	Advarsel: Ingen NC repliceret for forbindelse!

    Advarsel «Ingen NC repliceret for forbindelse!» kan trygt ignoreres. Det opstår fordi, når en ny Samba DC registreres, sætter den nogle replikationsflags forkert.

    Det vil også være klogt at tjekke LDAP-replikationen.

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

    Den ovenfor angivne kommando vil sammenligne attributværdierne for objekterne i hele kataloget mellem DC1 og DC2.

    Eksempel på vellykket replikation

    * Sammenligner [DOMAIN]-kontekst...
    
    	* Objekter, der skal sammenlignes: 249
    
    	* Resultat for [DOMAIN]: SUCCESS
    
    	* Sammenligner [CONFIGURATION]-kontekst...
    
    	* Objekter, der skal sammenlignes: 1750
    
    	* Resultat for [CONFIGURATION]: SUCCESS
    
    	* Sammenligner [SCHEMA]-kontekst...
    
    	* Objekter, der skal sammenlignes: 1739
    
    	* Resultat for [SCHEMA]: SUCCESS
    
    	* Sammenligner [DNSDOMAIN]-kontekst...
    
    	* Objekter, der skal sammenlignes: 42
    
    	* Resultat for [DNSDOMAIN]: SUCCESS
    
    	* Sammenligner [DNSFOREST]-kontekst...
    
    	* Objekter, der skal sammenlignes: 20
    
    	* Resultat for [DNSFOREST]: SUCCESS

    I visse tilfælde kan attributterne for objekter på forskellige controllere variere, og outputtet fra kommandoen vil informere om det. Men det vil ikke altid være et tegn på replikationsproblemer.

    Næste skridt er at manuelt indstille en stabil replikation af SysVol-kataloget.
    Sagen er, at Samba endnu ikke understøtter DFS-R, ligesom den ikke understøttede den tidligere FRS. Derfor er det eneste nuværende fungerende løsning til replikation mellem en Samba DC og Windows envejsreplikation ved hjælp af værktøjet Robocopy fra pakken Windows Server 2003 Resource Kit Tools.

    Udviklerne af Samba anbefaler, for at undgå kompatibilitetsproblemer, først at installere værktøjssættet på en almindelig arbejdsstation, og derefter kopiere Robocopy til controllere i mappen «C:Program Files (x86)Windows Resource KitsTools»

    Efter installationen opretter vi en opgave i Task Scheduler på controllere med Windows til at udføre replikationen med følgende parametre:

    — Udfør for alle brugere
    — Udløser til udførelse Dagligt hver 5. minut i løbet af dagen
    — I handlingerne angiver vi stien til robocopy-værktøjet, og bl.a. angiver vi argumenterne:

    DC1SYSVOLtest.local DC2SYSVOLtest.local /mir /sec

    I dette tilfælde kopierer vi indholdet af SysVol-kataloget fra DC1 til DC2.

  3. Bærbare brugermapper ved hjælp af pam_mount-konfigurationenJeg har gennem erfaring fundet to levedygtige løsninger på denne opgave ved hjælp af det.
    1. Fuld montering af mappen med profilen fra netværket i sektionen /home. Enkel løsning. Fungerer glimrende, hvis navne på mapperne Mine dokumenter, Downloads og Skrivebordet er ens i begge operativsystemer. Det forudsættes, at PC'en på Linux allerede er blevet introduceret i domænet, og brugerne logger ind med deres domænebrugerkonti, ved hjælp af sssd som autentificerings- og autorisationsmekanisme.
      # 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"/>
      

      hvor:

      • uid="100000000-2000000000" — UID-område, der tildeles domænebrugere fra SSSD
      • server="dfs" — navnet på filserveren
      • path="Profile_Users/%(USER)" — ressource på filserveren, hvor brugerens profil er placeret
      • mountpoint="~" — monteringspunkt i brugerens hjemmemappe

      Brugerens login overføres til makrovariablen «%(USER)», som bruges af pam_mount til at forbinde vores netværksressource i den form, den er indtastet i displaymanageren. Derfor er det vigtigt, at login i DM indtastes uden at angive domænenavnet eksplicit.

      I sssd.conf løses dette ved at kommentere eller sætte værdien False i indstillingen use_fully_qualified_names, som aktiverer tilstanden for fulde navne (herunder domænenavne) for brugere og grupper.

    2. Den anden metode er mindre ligetil og grov, og efter min mening mere praktisk og foretrukken. Forskellen fra den første er kun i konfigurationen af pam_mount.
      # vim /etc/security/pam_mount.conf.xml

      Det vil sige, at vi blot monterer hver af vores mapper separat i den tilsvarende katalog

Konklusioner

I løbet af et og et halv måneders arbejde på testmiljøet har denne opsætning overlevet flere vekslende langvarige og kortvarige afbrydelser af begge controllere, næsten uden konsekvenser for kunderne (én gang mistede en kunde på Windows7 de betroede relationer).

Overordnet set har jeg stadig en ganske positiv oplevelse med at arbejde med dette produkt, på trods af de nuancer, jeg stødte på både i artiklen og "bag kulisserne".

Der er mange faldgruber, og under arbejdet med Samba skal man forvente at finde dem i stort antal. Ikke desto mindre findes der i dag ingen andre løsninger, der muliggør organisering af en hybrid miljø ved hjælp af en katalogtjeneste uden at anvende Windows.

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster