Samba DC у якасці другога кантролера ў дамене AD Windows 2012R2 і перамяшчаюцца тэчкі для кліентаў на Windows и Linux

Samba DC у якасці другога кантролера ў дамене AD Windows 2012R2 і перамяшчаюцца тэчкі для кліентаў на Windows и Linux
Усведамленне таго, што я патрапіў у імпартазамес прыйшло не адразу. Толькі калі з вышэйстаячай арганізацыі свежыя пастаўкі ПК сталі стабільна прыязджаць з дыстрыбутывам "Альт Лінукс" на борце, я западозрыў нядобрае.

Аднак падчас праходжання па стадыях прыняцця непазбежнага я ўцягнуўся і нават крыху пачаў атрымліваць задавальненне ад працэсу. А ў нейкі момант падумаў, што такімі тэмпамі рана ці позна мне давядзецца раставацца з рашэннямі па арганізацыі службы каталогаў ад Microsoft і рухацца ў бок чагосьці больш экзатычнага. Таму, каб загадзя падрыхтавацца да непазбежнага, і па магчымасці вылавіць пабольш падводных камянёў, было вырашана разгарнуць тэставы стэнд, улучальны ў сябе:

  • DC1 - Windows Server 2012R2
  • DC2 - Альт Сервер 8.2
  • File Server - Windows Server 2012R2
  • PC1 - Windows 7
  • PC2 - Альт Рабочая станцыя 8.2

Задачы стэнда:

  1. Разгарнуць дамен на базе w2k12r2. Стварыць мінімальны набор групавых палітык (аналагічна якія выкарыстоўваюцца ў працоўнай інфраструктуры), уключаючы палітыку пераносу працоўных тэчак карыстачоў (Загрузкі/Дакументы/Працоўны стол). У канчатковым выніку хочацца, каб пры змене карыстальнікам працоўнага месца з Windows на Linux і назад ён меў камфортны доступ да сваіх працоўных дакументаў.
  2. Увод Samba DC другім кантролерам. Праверка рэплікацыі службы каталогаў і DNS
  3. Настройка кліентаў Linux на працу з перамяшчаюцца тэчкамі

рэалізацыя:

  1. Ўстаноўка і ўвод новага кантролераЗ усталёўкай MS Windows 2012R2 усё проста і больш менш зразумела. У інтэрнэце ёсць 1001 мануал па разгортванні дамена на Windows як з дапамогай GUI так і сродкамі Powershell, таму паўтараць лішні раз не буду, пакіну толькі спасылку на оф. дакументацыю, для цікаўных і тых, хто захоча асвяжыць памяць.

    Аднак адзін важны момант у дадзеным пункце ўсё ж такі ёсць. На сённяшні дзень Samba не ўмее працаваць са схемамі каталога вышэй за 2008R2.

    Загаловак спойлера Дакладней распрацоўшчыкамі дадзеная падтрымка заяўлена ў якасці эксперыментальнай. Але на практыцы спроба ўводу самбы ў якасці другога DC у існуючы дамен Windows са схемай 69 - сустрэне вас наступнай памылкай

    DsAddEntry failed with status WERR_ACCESS_DENIED info (8567, 'WERR_DS_INCOMPATIBLE_VERSION')

    Праблема ў тым, што Windows 2012 і 2012R2 выкарыстоўваюць прылады WMI для працы з даменамі і лясамі, стабільная падтрымка якіх анансаваная толькі да версіі Samba 4.11, якая павінна выйсці да канца гэтага года.
    З гэтага варта, што адзіным варыянтам для ўводзін самбы ў дамен AD, разгорнуты на 2012R2 серверы, з'яўляецца паніжэнне схемы з 69 да 47. Зразумела на працоўнай інфраструктуры без важкіх чыннікаў гэтага рабіць не трэба, але ў нас тут тэставы стэнд, так што чаму б уласна і не.

    Ставім Альт Сервер 8.2. Падчас усталёўкі выбіраемы профіль «Сервер Samba-DC (кантролер AD)». На разгорнутым серверы вырабляем поўнае абнаўленне сістэмы, і ўсталёўваны пакет task-samba-dc, які пацягне за сабой усё неабходнае

    # apt-get install task-samba-dc

    Калі раптам task-samba-dc, насуперак запэўненням дакументацыі Альта адмовіцца ставіць усё неабходнае сам.

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

    Далей пераходзім да налады Kerberos і атрыманню цікета. Адкрываем файл krb5.conf, пераходзім у падзел [libdefaults], і прыводзім да наступнага ўвазе:

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

    Запытваем білет

    # kinit administrator
    Password for administrator@TEST.LOCAL:

    Правяраем спіс атрыманых тыкетаў Kerberos

    # 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

    Цяпер выдаляем або пераназываем існуючы канфіг самбы.

    # mv smb.conf smb.conf.bak1

    І нарэшце ўводны ў дамен AD другім кантролерам:

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

    Паспяховы ўвод будзе суправаджацца наступным логам

    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 павінна з'явіцца запіс аб новым DC у дамене TEST.LOCAL, а ў дыспетчары DNS – новы А запіс, які адпавядае DC2.

  2. Рэплікацыя паміж кантролераміДля пачатку праверым працу службы рэплікацыі каталогаў (DRS)
    # samba-tool drs showrepl

    Усе спробы рэплікацыі ў выснове павінны быць паспяховымі. У спісе аб'ектаў KCC, на працягу 15 хвілін пасля ўводу, павінен з'явіцца наш DC1 на 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!

    Папярэджанне "No NC replicated for Connection!" можна смела ігнараваць. Яно з'яўляецца з-за таго, што пры рэгістрацыі новага DC самба няправільна ўстанаўлівае некаторыя сцягі рэплікацыі.

    Гэтак жа нядрэнна будзе праверыць рэплікацыю LDAP.

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

    Указаная вышэй каманда параўнае значэнні атрыбутаў аб'ектаў усяго каталога на DC1 і DC2.

    Прыклад паспяховай рэплікацыі

    * 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

    У шэрагу выпадкаў атрыбуты аб'ектаў на розных кантролерах могуць адрознівацца, і выснова каманды дасць аб гэтым шляхта. Але далёка не ва ўсіх выпадках гэта будзе прыкметай праблемы з рэплікацыяй.

    Наступным этапам неабходна ўручную наладзіць стабільную рэплікацыю каталога SysVol.
    Справа ў тым, што самба пакуль не падтрымлівае DFS-R, зрэшты як не падтрымлівала больш раннюю FRS. Таму для рэплікацыі паміж DC Samba і Windows адзіным на сённяшні дзень працоўным рашэннем з'яўляецца аднабаковая рэплікацыя сродкамі ўтыліты Робакапія з камплекта Windows Server 2003 Resource Kit Tools.

    Распрацоўнікі самбы, у пазбяганне праблем з сумяшчальнасцю, рэкамендуюць спачатку ўсталяваць камплект утыліт на звычайную працоўную станцыю, і пасля гэтага скапіяваць Robocopy на кантролер у тэчку C:Program Files (x86)Windows Resource KitsTools»

    Пасля ўстаноўкі, у планавальніку задач на кантролеры з Windows ствараем заданне на выкананне рэплікацыі з наступнымі параметрамі:

    - Выконваць для ўсіх карыстальнікаў
    - Трыгер на выкананне Штодня кожныя 5 хвілін на працягу дня
    - У дзеяннях прапісваем шлях да ўтыліты robocopy, у якасці аргументаў паказваем:

    DC1SYSVOLtest.local DC2SYSVOLtest.local /mir /sec

    У пэўным выпадку які капіюецца змесціва каталога SysVol з DC1 на DC2.

  3. Якія пераносяцца тэчкі карыстачоў з дапамогай канфігурацыі pam_mountДасведчаным шляхам я намацаў два жыццяздольныя варыянты рашэння гэтай задачы з яго дапамогай.
    1. Поўнае мантаванне тэчкі з профілем з сеткі ў падзел /homeПросты варыянт. Выдатна адпрацоўвае, калі назвы тэчак Мае дакументы, Загрузкі і Працоўны стол супадаюць у абедзвюх аперацыйных сістэмах. Мяркуецца, што ПК на Linux ужо ўведзены ў дамен і карыстачы лагіняцца пад сваімі даменнымі ўліковымі запісамі, выкарыстаючы ў якасці механізму аўтэнтыфікацыі і аўтарызацыі 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"/>
      

      дзе:

      • uid=«100000000-2000000000» - дыяпазон UID, які прысвойваецца даменным карыстачам ад SSSD
      • server=«dfs» - імя файлавага сервера
      • path=«Profile_Users/%(USER)» - рэсурс на файлавым серверы, з размешчаным профілем карыстальніка
      • mountpoint=»~» - шлях мантавання ў хатнюю тэчку карыстальніка

      Лагін карыстальніка перадаецца ў макропеременную "% (USER)", выкарыстоўваную pam_mount, для падлучэння нашага сеткавага рэсурсу, у тым выглядзе, у якім ён уведзены ў дысплейным мэнэджары. Таму важна, каб у ДМ лагін уводзіўся без відавочнага ўказання даменнага імя.

      У sssd.conf гэта вырашаецца каментаваннем, або выстаўленнем значэння False у опцыю выкарыстоўваць_цалкам_кваліфікаваныя_імёны, якая ўключае рэжым поўных імёнаў (уключаючы дамен) для карыстальнікаў і груп.

    2. Другі спосаб меней прамалінейны і сякерны, і на мой погляд зручнейшы і пераважны. Адрозненне ад першага толькі ў канфігурацыі pam_mount
      # 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"/>

      Гэта значыць проста асобна мантуем кожную нашу тэчку ў які адпавядае ёй каталог

Высновы

За паў месяца працы на тэставым стэндзе дадзеная звязак паспяхова перажыла некалькі папераменных доўгачасовых і кароткачасовых адключэнняў абодвух кантролераў, практычна без наступстваў для кліентаў (адзін раз кліент на Windows7 страціў даверныя адносіны).

У цэлым у мяне засталіся даволі прыемныя ўражанні ад працы з гэтым прадуктам, нават не гледзячы на ​​ўсе нюансы, з якімі прыйшлося сутыкнуцца як у артыкуле, так і "за кулісамі".

Падводныя камяні ёсць, іх шмат, і па ходзе працы з самбай іх давядзецца вылоўліваць у вялікай колькасці. Тым не менш, на сённяшні дзень няма іншых рашэнняў, якія дазваляюць арганізоўваць гібрыднае асяроддзе, з выкарыстаннем службы каталогаў і без выкарыстання. Windows.

Крыніца: habr.com

Купіць надзейны хостынг для сайтаў з абаронай ад DDoS, VPS VDS серверы 🔥 Купіць надзейны хостынг для сайтаў з абаронай ад DDoS, VPS VDS серверы | ProHoster