Samba DC som en anden domænecontroller i et AD-domæne Windows 2012R2 og roamingmapper for klienter på Windows и Linux

Samba DC som en anden domænecontroller i et AD-domæne Windows 2012R2 og roamingmapper for klienter på Windows и Linux
Erkendelsen af, at jeg var i et importrod kom ikke med det samme. Først da der støt begyndte at komme nye leverancer af pc'er fra en højere organisation med Alt Linux-distributionen ombord, havde jeg mistanke om, at der var noget galt.

Men da jeg gik igennem stadierne til at acceptere det uundgåelige, blev jeg involveret og begyndte endda at nyde processen lidt. Og på et tidspunkt troede jeg, at med denne hastighed ville jeg før eller siden skulle skille mig af med løsninger til at organisere katalogtjenester fra Microsoft og bevæge mig mod noget mere eksotisk. For på forhånd at forberede sig på det uundgåelige og om muligt at fange så mange faldgruber som muligt, blev det besluttet at indsætte en testbænk, som omfatter:

  • DC1 — Windows Server 2012R2
  • DC2 - Viola Server 8.2
  • Filserver — Windows Server 2012R2
  • PC1 — Windows 7
  • PC2 - Viola Workstation 8.2

Standmål:

  1. Implementer et domæne baseret på w2k12r2. Opret et minimalt sæt af gruppepolitikker (svarende til dem, der bruges i produktionsinfrastrukturen), inklusive en politik for migrering af brugernes arbejdsmapper (Downloads/Dokumenter/Skrivebord). I sidste ende vil jeg sikre, at når en bruger skifter arbejdsstation, Windows på Linux og tilbage havde han komfortabel adgang til sine arbejdsdokumenter.
  2. Samba DC input af den anden controller. Kontrol af bibliotek og DNS-replikering
  3. Opsætning af klienter Linux at arbejde med at flytte mapper

Implementering:

  1. Installation og idriftsættelse af ny controllerMed MS-installation Windows 2012R2 er enkel og mere eller mindre klar. Der findes 1001 manualer på internettet til implementering af et domæne på Windows både bruger GUI'en og Powershell, så jeg gentager det ikke igen, jeg lader det bare være link tænd sluk. dokumentation til de nysgerrige og dem, der ønsker at genopfriske deres hukommelse.

    Der er dog stadig et vigtigt punkt på dette tidspunkt. I øjeblikket kan Samba ikke arbejde med biblioteksordninger højere end 2008R2.

    spoiler titel Mere præcist angav udviklerne denne understøttelse som eksperimentel. Men i praksis var det et forsøg på at introducere Samba som en anden DC i et eksisterende domæne. Windows med skema 69 - vil du blive mødt med følgende fejl

    DsAddEntry mislykkedes med status WERR_ACCESS_DENIED info (8567, 'WERR_DS_INCOMPATIBLE_VERSION')

    Problemet er det Windows 2012 og 2012R2 bruger WMI-værktøjer til at arbejde med domæner og skove, hvor stabil understøttelse kun er annonceret for version Samba 4.11, som udkommer inden årets udgang.
    Det følger heraf, at den eneste mulighed for at introducere samba i et AD-domæne installeret på en 2012R2-server er at nedgradere ordningen fra 69 til 47. Det skal selvfølgelig ikke gøres på en produktionsinfrastruktur uden god grund, men vi har en testbænk her, så hvorfor ikke egentlig ikke.

    Installer Alt Server 8.2. Under installationen skal du vælge profilen "Samba-DC Server (AD Controller)". På den installerede server udfører vi en komplet systemopdatering og installerer task-samba-dc-pakken, som henter alt hvad du har brug for

    # apt-get install task-samba-dc

    Hvis pludselig task-samba-dc, i modsætning til forsikringerne i dokumentationen, nægter Alta at installere alt nødvendigt selv.

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

    Dernæst går vi videre til at konfigurere Kerberos og modtage en billet. Åbn filen krb5.conf, gå til [libdefaults] sektionen, og bring den til følgende formular:

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

    Anmodning om billet

    # kinit administrator
    Password for administrator@TEST.LOCAL:

    Tjek 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 eller omdøber vi den eksisterende samba-konfiguration.

    # mv smb.conf smb.conf.bak1

    Og endelig går vi ind i AD-domænet med den anden controller:

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

    Vellykket input vil blive ledsaget af følgende log

    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 DC

    ADUC skal have en record for den nye DC i TEST.LOCAL domænet, og DNS Manager skal have en ny A record svarende til DC2.

  2. Replikering mellem controllereLad os først tjekke driften af ​​Directory Replication Service (DRS)
    # samba-tool drs showrepl

    Alle replikeringsforsøg i outputtet burde lykkes. Vores DC1 burde vises på KCC-objektlisten inden for 15 minutter efter input. 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!

    Advarsel "Ingen NC replikeret til forbindelse!" trygt kan ignoreres. Det ser ud til, at når Samba registrerer en ny DC, indstiller Samba nogle replikeringsflag forkert.

    Det ville også være en god idé at tjekke LDAP-replikering.

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

    Ovenstående kommando vil sammenligne attributværdierne for hele mappeobjekterne på DC1 og DC2.

    Eksempel på vellykket replikering

    * 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]: SUCCESS

    I nogle tilfælde kan attributterne for objekter på forskellige controllere være forskellige, og kommandoudgangen vil fortælle dig om dette. Men ikke i alle tilfælde vil dette være et tegn på et replikationsproblem.

    Det næste trin er manuelt at konfigurere stabil replikering af SysVol-biblioteket.
    Sagen er, at Samba endnu ikke understøtter DFS-R, ligesom den ikke understøttede den tidligere FRS. Derfor, for replikering mellem DC'er, Samba og Windows Den eneste fungerende løsning til dato er envejsreplikering ved hjælp af værktøjet robocopy fra sættet Windows Server 2003 Ressource Kit Værktøjer.

    For at undgå kompatibilitetsproblemer anbefaler Samba-udviklere først at installere værktøjspakken på en almindelig arbejdsstation og derefter kopiere Robocopy til controlleren i mappen "C:\Program Files (x86)".Windows RessourcesætVærktøjer»

    Efter installationen, i opgaveplanlæggeren på controlleren med Windows Vi opretter en opgave til at udføre replikering med følgende parametre:

    — Udfør for alle brugere
    — Trigger til at udføre dagligt hvert 5. minut i løbet af dagen
    — I handlingerne angiver vi stien til robocopy-værktøjet, og specificerer som argumenter:

    DC1SYSVOLtest.local DC2SYSVOLtest.local /mir /sec

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

  3. Bærbare brugermapper ved hjælp af pam_mount-konfigurationGennem erfaring fandt jeg to levedygtige muligheder for at løse dette problem med dets hjælp.
    1. Fuld montering af en profilmappe fra netværket til /home-partitionen. En simpel mulighed. Fungerer fint, hvis navnene på mapperne Dokumenter, Downloads og Desktop er de samme i begge operativsystemer. Dette forudsætter, at pc'en er på Linux er allerede blevet indtastet i domænet, og brugerne logger ind under deres domænekonti ved hjælp af ssd som en godkendelses- 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 tildelt til domænebrugere fra SSSD
      • server="dfs" - filservernavn
      • path="Profile_Users/%(USER)" — en ressource på en filserver med en hostet brugerprofil
      • monteringspunkt =”~” — mount stien til brugerens hjemmemappe

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

      I sssd.conf løses dette ved at kommentere ud eller sætte indstillingen til False brug_fuldt_kvalificerede_navne, som muliggør fuldt kvalificeret navnetilstand (inklusive domæne) for brugere og grupper.

    2. Den anden metode er mindre ligetil og klodset, og efter min mening mere bekvem og at foretrække. Forskellen fra den første er kun i pam_mount-konfigurationen
      # 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"/>

      Det vil sige, at vi simpelthen monterer hver af vores mapper separat i den tilsvarende mappe

Fund

I løbet af en halv måneds arbejde på testbænken overlevede denne pakke succesfuldt adskillige skiftende langtids- og korttidsnedlukninger af begge controllere, stort set uden konsekvenser for klienter (når en klient først er på Windows7 mistede tillidsfulde relationer).

Alt i alt havde jeg en ganske behagelig oplevelse med at arbejde med dette produkt, selv på trods af alle de nuancer, jeg skulle forholde mig til både i artiklen og "bag kulisserne."

Der er mange faldgruber, og når du arbejder med Samba, bliver du nødt til at afdække et stort antal af dem. Der findes dog i øjeblikket ingen andre løsninger, der giver dig mulighed for at organisere et hybridmiljø, både med og uden en katalogtjeneste. Windows.

Kilde: www.habr.com

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