Samba DC като втори домейн контролер в AD домейн Windows 2012R2 и роуминг папки за клиенти на Windows и Linux

Samba DC като втори домейн контролер в AD домейн Windows 2012R2 и роуминг папки за клиенти на Windows и Linux
Осъзнаването, че съм във вносна каша, не дойде веднага. Едва когато започнаха стабилно да пристигат нови доставки на персонални компютри от по-висока организация с дистрибуцията на Alt Linux на борда, заподозрах, че нещо не е наред.

Въпреки това, докато преминавах през етапите на приемане на неизбежното, се включих и дори започнах малко да се наслаждавам на процеса. И в един момент си помислих, че с това темпо рано или късно ще трябва да се разделя с решенията за организиране на справочни услуги от Microsoft и да се ориентирам към нещо по-екзотично. Ето защо, за да се подготвим предварително за неизбежното и, ако е възможно, да хванем възможно най-много клопки, беше решено да се разположи тестов стенд, който включва:

  • DC1 — Windows Server 2012R2
  • DC2 - Viola сървър 8.2
  • Файлов сървър — Windows Server 2012R2
  • ПК1 — Windows 7
  • PC2 - работна станция Viola 8.2

Цели на щанда:

  1. Разполагане на домейн, базиран на w2k12r2. Създаване на минимален набор от групови правила (подобни на тези, използвани в производствената инфраструктура), включително правило за мигриране на работните папки на потребителите (Изтегляния/Документи/Работен плот). В крайна сметка искам да гарантирам, че когато потребител смени работната си станция, Windows на Linux и обратно той имаше удобен достъп до служебните си документи.
  2. Samba DC вход от втория контролер. Проверка на директория и DNS репликация
  3. Настройка на клиенти Linux за работа с преместващи се папки

Изпълнение:

  1. Монтаж и пускане в експлоатация на нов контролерС инсталация на MS Windows 2012R2 е прост и горе-долу ясен. В интернет има 1001 ръководства за внедряване на домейн на Windows както използвайки графичния потребителски интерфейс, така и Powershell, така че няма да го повтарям, просто ще оставя връзка включено изключено. документация за любопитните и тези, които искат да опреснят паметта си.

    В този момент обаче все още има един важен момент. В момента Samba не може да работи със схеми на директории, по-високи от 2008R2.

    спойлер заглавие По-точно, разработчиците заявиха, че тази поддръжка е експериментална. Но на практика това е опит за въвеждане на Samba като втори контролер на домейна в съществуващ домейн. Windows със схема 69 - ще бъдете посрещнати със следната грешка

    DsAddEntry е неуспешен със статус WERR_ACCESS_DENIED информация (8567, 'WERR_DS_INCOMPATIBLE_VERSION')

    Проблемът е, че Windows 2012 и 2012R2 използват WMI инструменти за работа с домейни и гори, стабилна поддръжка за които е обявена само за версия Samba 4.11, която се очаква да излезе преди края на тази година.
    От това следва, че единствената възможност за въвеждане на samba в AD домейн, разположен на 2012R2 сървър, е да се понижи схемата от 69 на 47. Разбира се, това не трябва да се прави в производствена инфраструктура без основателна причина, но имаме тестов стенд тук, така че защо не всъщност не.

    Инсталирайте Alt Server 8.2. По време на инсталацията изберете профила „Samba-DC Server (AD Controller)“. На внедрения сървър извършваме пълна актуализация на системата и инсталираме пакета task-samba-dc, който ще изтегли всичко необходимо

    # apt-get install task-samba-dc

    Ако изведнъж task-samba-dc, противно на уверенията на документацията, Alta отказва да инсталира всичко необходимо сама.

    # 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

    Сега изтриваме или преименуваме съществуващата конфигурация на samba.

    # 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 snap-in трябва да има запис за новия DC в домейна TEST.LOCAL, а в DNS мениджъра трябва да има нов A запис, съответстващ на DC2.

  2. Репликация между контролериПърво, нека проверим работата на услугата за репликация на директории (DRS)
    # samba-tool drs showrepl

    Всички опити за репликация в изхода трябва да са успешни. Нашият DC1 трябва да се появи в списъка с обекти на KCC в рамките на 15 минути след въвеждането. 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!

    предупреждение „Няма репликиран NC за връзка!“ може безопасно да се игнорира. Изглежда, че при регистриране на нов DC Samba неправилно задава някои флагове за репликация.

    Също така би било добра идея да проверите 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.
    Работата е там, че Samba все още не поддържа DFS-R, точно както не поддържаше и по-ранния FRS. Следователно, за репликация между домейни, Samba и Windows Единственото работещо решение до момента е еднопосочно репликация с помощта на помощната програма Robocopy от комплекта Windows Server Инструменти от комплекта ресурси за 2003 г..

    За да избегнат проблеми със съвместимостта, разработчиците на Samba препоръчват първо да инсталирате пакета помощни програми на обикновена работна станция и след това да копирате Robocopy на контролера в папката "C:\Program Files (x86)".Windows Комплекти ресурсиИнструменти»

    След инсталацията, в планировчика на задачите на контролера с 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
      • сървър = "dfs" - име на файлов сървър
      • path="Profile_Users/%(USER)" — ресурс на файлов сървър с хостван потребителски профил
      • точка на монтиране=”~” — път за монтиране до домашната папка на потребителя

      Потребителското влизане се предава на макропроменливата „%(USER)“, използвана от pam_mount за свързване на нашия мрежов ресурс, както е въведено в диспечера на дисплея. Ето защо е важно данните за вход да бъдат въведени в DM, без изрично да се посочва името на домейна.

      В 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 загубени доверителни взаимоотношения).

Като цяло имах доста приятно изживяване от работата с този продукт, въпреки всички нюанси, с които трябваше да се справя както в статията, така и „зад кулисите“.

Има капани, много от тях, и докато работите със Samba, ще трябва да откриете голям брой от тях. В момента обаче няма други решения, които да ви позволяват да организирате хибридна среда, както със, така и без услуга за директории. Windows.

Източник: www.habr.com

Купете надежден хостинг за сайтове с DDoS защита, VPS VDS сървъри 🔥 Купете надежден уеб хостинг със защита от DDoS атаки, VPS VDS сървъри | ProHoster