Samba DC kot drugi kontroler v AD domene Windows 2012R2 in premikljive mape za stranke na Windows in Linux

Samba DC kot drugi kontroler v AD domene Windows 2012R2 in premikljive mape za stranke na Windows in Linux
Zavedanje, da sem se znašel v uvozni zamenjavi, ni prišlo takoj. Šele ko so iz višje organizacije redne dobave računalnikov začele prispirati s distribucijo „Alt Linux“ na krovu, sem začel dvomiti v situacijo.

Vendar sem se v procesu prehajanja skozi stadije sprejemanja neizbežnega vključeval in celo nekoliko užival v procesu. V nekem trenutku sem pomislil, da bom prej ko slej moral posloviti od rešitev za organizacijo storitve katalogov od Microsofta in se usmeriti k nečemu bolj eksotičnemu. Zato, da bi se vnaprej pripravili na neizbežno in po možnosti ujeli čim več podvodnih kamenov, smo se odločili postaviti testno okolje, ki vključuje:

  • DC1 — Windows Server 2012R2
  • DC2 — Alt Server 8.2
  • File Server — Windows Server 2012R2
  • PC1 — Windows 7
  • PC2 — Alt Delovna postaja 8.2

Naloge okolja:

  1. Postaviti domeno na osnovi w2k12r2. Ustvariti minimalni nabor skupinskih politik (podobno tistim, ki se uporabljajo v delovni infrastrukturi), vključno s politiko prenosa delovnih map uporabnikov (Prenosi/Dokumenti/Delovna površina). Na koncu si želimo, da bi imel uporabnik pri preklopu s sistema Windows na Linux in nazaj udoben dostop do svojih delovnih dokumentov.
  2. Vnos Samba DC kot drugega kontrolerja. Preverjanje replikacije storitve katalogov in DNS.
  3. Nastavitev Linux odjemalcev za delo s premakljivimi mapami.

Izvedba:

  1. Namestitev in vnos novega kontrolerja.Z namestitvijo MS Windows 2012R2 je vse preprosto in dokaj jasno. Na spletu je 1001 priročnik za postavitev domene na Windows, tako preko GUI kot preko PowerShell, zato ne bom ponavljal in bom pustil le povezavo na uradno dokumentacijo, za radovedne in tiste, ki si želijo osvežiti spomin.

    Vendar pa je v tej točki še ena pomembna stvar. Danes Samba ne zna delovati s shemami katalogov, višjimi od 2008R2.

    Naslov spojlerja Na kratko, podpira jo razvijalci, a kot eksperimentalna. Vendar pa bo na praksi poskus vnosa Sambe kot drugega DC v obstoječo Windows domeno s shemo 69 naletel na naslednjo napako:

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

    Težava je v tem, da Windows 2012 in 2012R2 za delo z domenskimi in drevesnimi storitvami uporabljata orodja WMI, katerih stabilna podpora je napovedana šele za različico Samba 4.11, ki naj bi izšla do konca tega leta.
    Iz tega izhaja, da je edina možnost za uvajanje Sambe v AD domeno, nameščeno na strežniku 2012R2, znižanje sheme s 69 na 47. Seveda tega na produkcijski infrastrukturi brez utemeljenega razloga ne bi smeli početi, a imamo testno okolje, zato zakaj pa ne.

    Namestimo Alt Server 8.2. Med namestitvijo izberemo profil „Samba-DC strežnik (AD kontroler)“. Na nameščenem strežniku popolnoma posodobimo sistem in namestimo paket task-samba-dc, ki bo potegnil vse potrebno.

    # apt-get install task-samba-dc

    Če pa se zgodi, da task-samba-dc kljub zagotovilom dokumentacije Alti ne bo namestil vsega potrebnega.

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

    Nato preidemo k nastavitvi Kerberosa in pridobivanju vozovnice. Odprimo datoteko krb5.conf, preidemo v razdelek [libdefaults] in jo prilagodimo na naslednji način:

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

    Zažene se zahteva za vozovnico.

    # kinit administrator
    Password for administrator@TEST.LOCAL:

    Preverimo seznam pridobljenih Kerberosovih vozovnic.

    # 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

    Zdaj izbrišemo ali preimenujemo obstoječo konfiguracijo Sambe.

    # mv smb.conf smb.conf.bak1

    In končno se vpišemo v domeno AD kot drugi kontroler:

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

    Uspešen vpis bo spremljal naslednji zapis

    Ciljamo na pisljiv DC za domeno 'test.local'
    Najden DC DC1.TEST.LOCAL
    Geslo za [TESTadministrator]:
    Ponovno se povezujemo na nazivnega masterja e31d7da6-8f56-4420-8473-80f2b3a31338._msdcs.TEST.LOCAL
    DNS ime novega nazivnega masterja je DC1.TEST.LOCAL
    delovna skupina je TEST
    kraljestvo je TEST.LOCAL
    Dodajamo CN=DC2,OU=Domain Controllers,DC=TEST,DC=LOCAL
    Dodajamo CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=TEST,DC=LOCAL
    Dodajamo CN=NTDS Settings,CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=TEST,DC=LOCAL
    Dodajanje SPN-jev za CN=DC2,OU=Domain Controllers,DC=TEST,DC=LOCAL
    Nastavljanje gesla računa za DC2$
    Omogočanje računa
    Klicanje osnovne oskrbe
    Iskanje IPv4 naslovov
    Iskanje IPv6 naslovov
    Noben IPv6 naslov ne bo dodeljen
    Nastavljanje share.ldb
    Nastavljanje secrets.ldb
    Nastavljanje registra
    Nastavljanje baze privilegijev
    Nastavljanje idmap db
    Nastavljanje SAM db
    Nastavljanje sam.ldb delitev in nastavitev
    Nastavljanje sam.ldb rootDSE
    Prednalaganje sheme Samba 4 in AD
    Konfiguracija Kerberos, primerna za Samba AD, je bila ustvarjena na /var/lib/samba/private/krb5.conf
    Oskrba OK za domeno DN DC=TEST,DC=LOCAL
    Začinjanje replikacije
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objekti[402/1426] povezani_vrednosti[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objekti[804/1426] povezani_vrednosti[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objekti[1206/1426] povezani_vrednosti[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objekti[1608/1426] povezani_vrednosti[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objekti[1743/1426] povezani_vrednosti[0/0]
    Analiza in uporaba shematskih objektov
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objekti[402/2240] povezani_vrednosti[0/24]
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objekti[804/2240] povezani_vrednosti[0/24]
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objekti[1206/2240] povezani_vrednosti[0/24]
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objekti[1608/2240] povezani_vrednosti[0/24]
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] objekti[1772/2240] povezani_vrednosti[24/24]
    Replikacija kritičnih objektov iz osnovnega DN domene
    Partition[DC=TEST,DC=LOCAL] objekti[109/110] povezani_vrednosti[26/29]
    Partition[DC=TEST,DC=LOCAL] objekti[394/5008] povezani_vrednosti[29/29]
    Delo z vedno replikacijo NC (osnovna, konfiguracija, shema)
    Replikacija DC=DomainDnsZones,DC=TEST,DC=LOCAL
    Partition[DC=DomainDnsZones,DC=TEST,DC=LOCAL] objekti[42/42] povezani_vrednosti[0/0]
    Replikacija DC=ForestDnsZones,DC=TEST,DC=LOCAL
    Partition[DC=ForestDnsZones,DC=TEST,DC=LOCAL] objekti[20/20] povezani_vrednosti[0/0]
    Exop na[CN=RID Manager$,CN=System,DC=TEST,DC=LOCAL] objekti[3] povezani_vrednosti[0]
    Zavezujoče SAM baza
    Dodajanje 1 oddaljenih DNS zapisov za DC2.TEST.LOCAL
    Dodajanje DNS A zapisa DC2.TEST.LOCAL za IPv4 IP: 192.168.90.201
    Dodajanje DNS CNAME zapisa 6ff1df40-cbb5-41f0-b7b3-53a27dde8edf._msdcs.TEST.LOCAL za DC2.TEST.LOCAL
    Vsi drugi DNS zapisi (kot _ldap SRV zapisi) bodo ustvarjeni samba_dnsupdate ob prvi zagonu
    Replikacija novih DNS zapisov v DC=DomainDnsZones,DC=TEST,DC=LOCAL
    Partition[DC=DomainDnsZones,DC=TEST,DC=LOCAL] objekti[1/42] povezani_vrednosti[0/0]
    Replikacija novih DNS zapisov v DC=ForestDnsZones,DC=TEST,DC=LOCAL
    Partition[DC=ForestDnsZones,DC=TEST,DC=LOCAL] objekti[1/20] povezani_vrednosti[0/0]
    Pošiljanje DsReplicaUpdateRefs za vse replikirane delitve
    Nastavitev isSynchronized in dsServiceName
    Nastavljanje baze skrivnosti
    Pridružili smo se domenu TEST (SID S-1-5-21-3959064270-1572045903-2556826204) kot DC

    V orodju ADUC se mora pojaviti zapis o novem DC v domeni TEST.LOCAL, v upravitelju DNS pa nova A zapis, ki ustreza DC2.

  2. Replikacija med kontrolerjiNajprej preverimo delovanje storitve replikacije katalogov (DRS)
    # samba-tool drs showrepl

    Vse poskusi replikacije v izhodu morajo biti uspešni. Na seznamu objektov KCC bi se moral v 15 minutah po vnosu pojaviti naš DC1 na Windows.

    Imeni-Prototipa-Pervogo-SaytaDC2
    	Varianti DSA: 0x00000001
    	GUID ob'ekta DSA: 0e9f5bce-ff59-401e-bdbd-fc69df3fc6bf
    	Invokatsiya DSA: 017997b5-d718-41d7-a3f3-e57ab5151b5c
    
    	==== VKHODYASHCHIE SOSEDI ====
    
    	DC=ForestDnsZones,DC=test,DC=local
    	        Imeni-Prototipa-Pervogo-SaytaDC1 cherez RPC
    	                GUID ob'ekta DSA: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Poslednyaya popytka @ Pon May 27 12:56:31 2019 MSK udalas'
    	                0 posledenikh neudach.
    	                Posledniy uspekhi @ Pon May 27 12:56:31 2019 MSK
    
    	DC=DomainDnsZones,DC=test,DC=local
    	        Imeni-Prototipa-Pervogo-SaytaDC1 cherez RPC
    	                GUID ob'ekta DSA: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Poslednyaya popytka @ Pon May 27 12:56:32 2019 MSK udalas'
    	                0 posledenikh neudach.
    	                Posledniy uspekhi @ Pon May 27 12:56:32 2019 MSK
    
    	CN=Schema,CN=Configuration,DC=test,DC=local
    	        Imeni-Prototipa-Pervogo-SaytaDC1 cherez RPC
    	                GUID ob'ekta DSA: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Poslednyaya popytka @ Pon May 27 12:56:32 2019 MSK udalas'
    	                0 posledenikh neudach.
    	                Posledniy uspekhi @ Pon May 27 12:56:32 2019 MSK
    
    	DC=test,DC=local
    	        Imeni-Prototipa-Pervogo-SaytaDC1 cherez RPC
    	                GUID ob'ekta DSA: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Poslednyaya popytka @ Pon May 27 12:56:32 2019 MSK udalas'
    	                0 posledenikh neudach.
    	                Posledniy uspekhi @ Pon May 27 12:56:32 2019 MSK
    
    	CN=Configuration,DC=test,DC=local
    	        Imeni-Prototipa-Pervogo-SaytaDC1 cherez RPC
    	                GUID ob'ekta DSA: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Poslednyaya popytka @ Pon May 27 12:56:33 2019 MSK udalas'
    	                0 posledenikh neudach.
    	                Posledniy uspekhi @ Pon May 27 12:56:33 2019 MSK
    
    	==== VYKHODYASHCHIE SOSEDI ====
    
    	DC=ForestDnsZones,DC=test,DC=local
    	        Imeni-Prototipa-Pervogo-SaytaDC1 cherez RPC
    	                GUID ob'ekta DSA: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Poslednyaya popytka @ Cht May 23 16:40:03 2019 MSK udalas'
    	                0 posledenikh neudach.
    	                Posledniy uspekhi @ Cht May 23 16:40:03 2019 MSK
    
    	DC=DomainDnsZones,DC=test,DC=local
    	        Imeni-Prototipa-Pervogo-SaytaDC1 cherez RPC
    	                GUID ob'ekta DSA: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Poslednyaya popytka @ Cht May 23 16:40:03 2019 MSK udalas'
    	                0 posledenikh neudach.
    	                Posledniy uspekhi @ Cht May 23 16:40:03 2019 MSK
    
    	CN=Schema,CN=Configuration,DC=test,DC=local
    	        Imeni-Prototipa-Pervogo-SaytaDC1 cherez RPC
    	                GUID ob'ekta DSA: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Poslednyaya popytka @ Cht May 23 16:40:08 2019 MSK udalas'
    	                0 posledenikh neudach.
    	                Posledniy uspekhi @ Cht May 23 16:40:08 2019 MSK
    
    	DC=test,DC=local
    	        Imeni-Prototipa-Pervogo-SaytaDC1 cherez RPC
    	                GUID ob'ekta DSA: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Poslednyaya popytka @ Cht May 23 16:40:08 2019 MSK udalas'
    	                0 posledenikh neudach.
    	                Posledniy uspekhi @ Cht May 23 16:40:08 2019 MSK
    
    	CN=Configuration,DC=test,DC=local
    	        Imeni-Prototipa-Pervogo-SaytaDC1 cherez RPC
    	                GUID ob'ekta DSA: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Poslednyaya popytka @ Pon May 27 12:12:17 2019 MSK udalas'
    	                0 posledenikh neudach.
    	                Posledniy uspekhi @ Pon May 27 12:12:17 2019 MSK
    
    	==== KCC SVYAZI ====
    
    	Svyaz' --
    	        Imya svyazi: 6d2652b3-e723-4af7-a19f-1ee48915753c
    	        Vklucheno      : TRUE
    	        DNS imya servera : DC1.test.local
    	        DN imya servera  : CN=NTDS Settings,CN=DC1,CN=Servers,CN=Imeni-Prototipa-Pervogo-Sayta,CN=Sites,CN=Configuration,DC=test,DC=local
    	                Tip transporta: RPC
    	                opcii: 0x00000001
    	Preduprezhdenie: Net NC, kotoraya repliciruetsya dlya svyazi!

    Preduprezhdenie «No NC replicated for Connection!» to lahko ignoriramo. Pojavi se, ker ob registraciji novega DC Samba napačno nastavi nekatere zastavice replikacije.

    Prav tako bo dobro preveriti replikacijo LDAP.

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

    Zgornja ukazna vrstica bo primerjala vrednosti atributov objektov celotnega imenika na DC1 in DC2.

    Primer uspešne replikacije

    * Compariranje [DOMAIN] konteksta...
    
    	* Objekti za primerjavo: 249
    
    	* Rezultat za [DOMAIN]: USPEH
    
    	* Compariranje [CONFIGURATION] konteksta...
    
    	* Objekti za primerjavo: 1750
    
    	* Rezultat za [CONFIGURATION]: USPEH
    
    	* Compariranje [SCHEMA] konteksta...
    
    	* Objekti za primerjavo: 1739
    
    	* Rezultat za [SCHEMA]: USPEH
    
    	* Compariranje [DNSDOMAIN] konteksta...
    
    	* Objekti za primerjavo: 42
    
    	* Rezultat za [DNSDOMAIN]: USPEH
    
    	* Compariranje [DNSFOREST] konteksta...
    
    	* Objekti za primerjavo: 20
    
    	* Rezultat za [DNSFOREST]: USPEH

    V nekaterih primerih se lahko atributi objektov na različnih krmilnikih razlikujejo, izhod ukaza pa vas bo o tem obvestil. Vendar to ne pomeni vedno, da gre za težavo z replikacijo.

    Naslednji korak je ročna nastavitev stabilne replikacije imenika SysVol.
    Stvar je v tem, da Samba zaenkrat ne podpira DFS-R, prav tako kot ni podpirala prejšnjega FRS. Zato je edina trenutno delujoča rešitev za replikacijo med DC Samba in Windows enosmerna replikacija z uporabo orodja Robocopy iz kompleta Windows Server 2003 Resource Kit Tools.

    Razvijalci Sambe, da bi se izognili težavam s združljivostjo, priporočajo, da najprej namestite komplet orodij na navadno delovno postajo, šele nato pa kopirate Robocopy na krmilnik v mapo „C:Program Files (x86)Windows Resource KitsTools“

    Po namestitvi v načrtovalniku opravil na krmilniku Windows ustvarimo opravilo za izvedbo replikacije z naslednjimi parametri:

    — Izvedba za vse uporabnike
    — Triger za izvedbo Dnevno vsakih 5 minut čez dan
    — V dejanjih zapišemo pot do orodja robocopy, kot argumente pa navedemo:

    DC1SYSVOLtest.local DC2SYSVOLtest.local /mir /sec

    V tem konkretnem primeru kopiramo vsebino imenika SysVol z DC1 na DC2.

  3. Prenosljive mape uporabnikov s pomočjo konfiguracije pam_mountZ eksperimentiranjem sem odkril dva življenjska okolišča za reševanje te naloge s to metodo.
    1. Popolno montiranje mape s profilom iz omrežja v razdelek /home. Preprost način. Odlično deluje, če se imena map Moji dokumenti, Prenosi in Delovna površina ujemajo v obeh operacijskih sistemih. Predpostavlja se, da je PC na Linuxu že vključen v domeno in uporabniki se prijavljajo s svojimi domenami računi, pri čemer se uporablja mehanizem za avtentikacijo in avtorizacijo sssd.
      # 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"/>
      

      kde:

      • uid=«100000000-2000000000» — razpon UID, dodeljen domenskim uporabnikom iz SSSD
      • server=«dfs» — ime datotečnega strežnika
      • path=«Profile_Users/%(USER)» — vir na datotečnem strežniku z uporabniškim profilom
      • mountpoint=»~» — pot montaže v domačo mapo uporabnika

      Uporabniško ime se prenaša v makro spremenljivko «%(USER)», ki jo uporablja pam_mount za povezovanje z našim omrežnim virom, v obliki, v kateri je vnesena v upravljalcu zaslona. Zato je pomembno, da se v DM uporabniško ime vnese brez izrecnega navajanja domena imena.

      V sssd.conf se to reši z dodajanjem komentarja ali z nastavitvijo vrednosti False v opcijo use_fully_qualified_names, ki omogoča način polnih imen (vključno z domeno) za uporabnike in skupine.

    2. Drugi način je manj neposreden in grob, in po mojem mnenju bolj priročen in priporočljiv. Razlika od prvega je le v konfiguraciji pam_mount
      # vim /etc/security/pam_mount.conf.xml

      To pomeni, da preprosto ločeno montiramo vsako našo mapo v ustrezno mape

Zaključki

V pol meseca dela na testnem okolju je ta povezava uspešno preživela več dolgotrajnih in kratkotrajnih izklopov obeh nadzornih strežnikov, praktično brez posledic za stranke (enkrat je stranka na Windows7 izgubila zaupne odnose).

Na splošno imam precej prijetne vtise o delu s tem izdelkom, kljub vsem podrobnostim, s katerimi sem se srečal tako v članku kot tudi 'za kulisami'.

Obstajajo skrite pasti, je jih veliko, in med delom s Sambo jih boste morali ujete v velikem številu. Kljub temu trenutno ne obstajajo drugačna rešitev, ki bi omogočila organizacijo hibridnega okolja z uporabo storitve imenika in brez uporabe sistema Windows.

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster