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.

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

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

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

    Инсталираме ALT Server 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"

    Успешното въвеждане ще бъде съпроводено с следния лог.

    Намиране на записваем DC за домейн 'test.local'
    Намерен DC DC1.TEST.LOCAL
    Парола за [TESTadministrator]:
    Връзка с основния мастър e31d7da6-8f56-4420-8473-80f2b3a31338._msdcs.TEST.LOCAL
    DNS име на новия основен мастър е DC1.TEST.LOCAL
    Работна група е TEST
    Област е TEST.LOCAL
    Добавяне на CN=DC2,OU=Domain Controllers,DC=TEST,DC=LOCAL
    Добавяне на CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=TEST,DC=LOCAL
    Добавяне на CN=NTDS Settings,CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=TEST,DC=LOCAL
    Добавяне на SPN на CN=DC2,OU=Domain Controllers,DC=TEST,DC=LOCAL
    Настройка на паролата за акаунта на DC2$
    Активиране на акаунта
    Извикване на bare provision
    Търсене на IPv4 адреси
    Търсене на IPv6 адреси
    Няма да бъде назначен IPv6 адрес
    Настройка на share.ldb
    Настройка на secrets.ldb
    Настройка на регистъра
    Настройка на базата данни за привилегии
    Настройка на idmap db
    Настройка на SAM db
    Настройка на части и настройки на sam.ldb
    Настройка на sam.ldb rootDSE
    Предварително зареждане на схемата на Samba 4 и AD
    Конфигурация на Kerberos, подходяща за Samba AD, е генерирана в /var/lib/samba/private/krb5.conf
    Provision OK за домейн DN DC=TEST,DC=LOCAL
    Започване на репликацията
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] обекти[402/1426] свързани_values[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] обекти[804/1426] свързани_values[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] обекти[1206/1426] свързани_values[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] обекти[1608/1426] свързани_values[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] обекти[1743/1426] свързани_values[0/0]
    Анализ и прилагане на схеми на обектите
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] обекти[402/2240] свързани_values[0/24]
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] обекти[804/2240] свързани_values[0/24]
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] обекти[1206/2240] свързани_values[0/24]
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] обекти[1608/2240] свързани_values[0/24]
    Partition[CN=Configuration,DC=TEST,DC=LOCAL] обекти[1772/2240] свързани_values[24/24]
    Репликиране на критични обекти от базовия DN на домейна
    Partition[DC=TEST,DC=LOCAL] обекти[109/110] свързани_values[26/29]
    Partition[DC=TEST,DC=LOCAL] обекти[394/5008] свързани_values[29/29]
    Завършено с винаги реплицирана NC (основен, конфигурационен, схема)
    Репликиране на DC=DomainDnsZones,DC=TEST,DC=LOCAL
    Partition[DC=DomainDnsZones,DC=TEST,DC=LOCAL] обекти[42/42] свързани_values[0/0]
    Репликиране на DC=ForestDnsZones,DC=TEST,DC=LOCAL
    Partition[DC=ForestDnsZones,DC=TEST,DC=LOCAL] обекти[20/20] свързани_values[0/0]
    Exop на[CN=RID Manager$,CN=System,DC=TEST,DC=LOCAL] обекти[3] свързани_values[0]
    Завършване на SAM базата данни
    Добавяне на 1 дистанционен DNS запис за DC2.TEST.LOCAL
    Добавяне на DNS A запис DC2.TEST.LOCAL за IPv4 IP: 192.168.90.201
    Добавяне на DNS CNAME запис 6ff1df40-cbb5-41f0-b7b3-53a27dde8edf._msdcs.TEST.LOCAL за DC2.TEST.LOCAL
    Всички останали DNS записи (като _ldap SRV записи) ще бъдат създадени с samba_dnsupdate при първото стартиране
    Репликиране на нови DNS записи в DC=DomainDnsZones,DC=TEST,DC=LOCAL
    Partition[DC=DomainDnsZones,DC=TEST,DC=LOCAL] обекти[1/42] свързани_values[0/0]
    Репликиране на нови DNS записи в DC=ForestDnsZones,DC=TEST,DC=LOCAL
    Partition[DC=ForestDnsZones,DC=TEST,DC=LOCAL] обекти[1/20] свързани_values[0/0]
    Изпращане на DsReplicaUpdateRefs за всички реплицирани партиции
    Настройка на isSynchronized и dsServiceName
    Настройка на базата данни за секрети
    Присъедини се към домейн TEST (SID S-1-5-21-3959064270-1572045903-2556826204) като DC

    В ADUC трябва да се появи запис за нов DC в домейн TEST.LOCAL, а в диспетчера на DNS — нова А запис, съответстваща на DC2.

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

    Всички опити за репликация в изхода трябва да са успешни. В списъка на обектите KCC, в рамките на 15 минути след въвеждане, нашият DC1 на Windows трябва да се появи.

    Дефолтно-първо-име-на-сайтаDC2
    	Опции на DSA: 0x00000001
    	GUID на DSA обект: 0e9f5bce-ff59-401e-bdbd-fc69df3fc6bf
    	Идентификатор на извикване на DSA: 017997b5-d718-41d7-a3f3-e57ab5151b5c
    
    	==== ВХОДЯЩИ СЪСЕДИ ====
    
    	DC=ForestDnsZones,DC=test,DC=local
    	        Дефолтно-първо-име-на-сайтаDC1 чрез RPC
    	                GUID на DSA обект: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Последен опит @ Пн Май 27 12:56:31 2019 MSK беше успешен
    	                0 последователни неуспеха.
    	                Последен успех @ Пн Май 27 12:56:31 2019 MSK
    
    	DC=DomainDnsZones,DC=test,DC=local
    	        Дефолтно-първо-име-на-сайтаDC1 чрез RPC
    	                GUID на DSA обект: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Последен опит @ Пн Май 27 12:56:32 2019 MSK беше успешен
    	                0 последователни неуспеха.
    	                Последен успех @ Пн Май 27 12:56:32 2019 MSK
    
    	CN=Schema,CN=Configuration,DC=test,DC=local
    	        Дефолтно-първо-име-на-сайтаDC1 чрез RPC
    	                GUID на DSA обект: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Последен опит @ Пн Май 27 12:56:32 2019 MSK беше успешен
    	                0 последователни неуспеха.
    	                Последен успех @ Пн Май 27 12:56:32 2019 MSK
    
    	DC=test,DC=local
    	        Дефолтно-първо-име-на-сайтаDC1 чрез RPC
    	                GUID на DSA обект: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Последен опит @ Пн Май 27 12:56:32 2019 MSK беше успешен
    	                0 последователни неуспеха.
    	                Последен успех @ Пн Май 27 12:56:32 2019 MSK
    
    	CN=Configuration,DC=test,DC=local
    	        Дефолтно-първо-име-на-сайтаDC1 чрез RPC
    	                GUID на DSA обект: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Последен опит @ Пн Май 27 12:56:33 2019 MSK беше успешен
    	                0 последователни неуспеха.
    	                Последен успех @ Пн Май 27 12:56:33 2019 MSK
    
    	==== ИЗХОДЯЩИ СЪСЕДИ ====
    
    	DC=ForestDnsZones,DC=test,DC=local
    	        Дефолтно-първо-име-на-сайтаDC1 чрез RPC
    	                GUID на DSA обект: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Последен опит @ Чт Май 23 16:40:03 2019 MSK беше успешен
    	                0 последователни неуспеха.
    	                Последен успех @ Чт Май 23 16:40:03 2019 MSK
    
    	DC=DomainDnsZones,DC=test,DC=local
    	        Дефолтно-първо-име-на-сайтаDC1 чрез RPC
    	                GUID на DSA обект: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Последен опит @ Чт Май 23 16:40:03 2019 MSK беше успешен
    	                0 последователни неуспеха.
    	                Последен успех @ Чт Май 23 16:40:03 2019 MSK
    
    	CN=Schema,CN=Configuration,DC=test,DC=local
    	        Дефолтно-първо-име-на-сайтаDC1 чрез RPC
    	                GUID на DSA обект: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Последен опит @ Чт Май 23 16:40:08 2019 MSK беше успешен
    	                0 последователни неуспеха.
    	                Последен успех @ Чт Май 23 16:40:08 2019 MSK
    
    	DC=test,DC=local
    	        Дефолтно-първо-име-на-сайтаDC1 чрез RPC
    	                GUID на DSA обект: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Последен опит @ Чт Май 23 16:40:08 2019 MSK беше успешен
    	                0 последователни неуспеха.
    	                Последен успех @ Чт Май 23 16:40:08 2019 MSK
    
    	CN=Configuration,DC=test,DC=local
    	        Дефолтно-първо-име-на-сайтаDC1 чрез RPC
    	                GUID на DSA обект: 60fb339d-efa3-4585-a42d-04974e6601b7
    	                Последен опит @ Пн Май 27 12:12:17 2019 MSK беше успешен
    	                0 последователни неуспеха.
    	                Последен успех @ Пн Май 27 12:12:17 2019 MSK
    
    	==== KCC КОНЕКЦИОННИ ОБЕКТИ ====
    
    	Връзка --
    	        Име на връзката: 6d2652b3-e723-4af7-a19f-1ee48915753c
    	        Активирана        : TRUE
    	        DNS име на сървъра : DC1.test.local
    	        DN име на сървъра  : CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=local
    	                Тип транспорт: RPC
    	                опции: 0x00000001
    	Предупреждение: Няма NC, репликиран за връзката!

    Предупреждение «No NC репликирана за свързване!» може да се игнорира смело. Появява се, защото при регистрацията на нов DC Samba неправилно се задават някои флагове за репликация.

    Също така не би било зле да проверите репликацията на LDAP.

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

    Командата, посочена по-горе, ще сравни стойностите на атрибутите на обектите в целия каталог на DC1 и DC2.

    Пример за успешна репликация

    * Сравняване на контекста [DOMAIN]...
    
    	* Обекти, които ще бъдат сравнени: 249
    
    	* Резултат за [DOMAIN]: УСПЕХ
    
    	* Сравняване на контекста [CONFIGURATION]...
    
    	* Обекти, които ще бъдат сравнени: 1750
    
    	* Резултат за [CONFIGURATION]: УСПЕХ
    
    	* Сравняване на контекста [SCHEMA]...
    
    	* Обекти, които ще бъдат сравнени: 1739
    
    	* Резултат за [SCHEMA]: УСПЕХ
    
    	* Сравняване на контекста [DNSDOMAIN]...
    
    	* Обекти, които ще бъдат сравнени: 42
    
    	* Резултат за [DNSDOMAIN]: УСПЕХ
    
    	* Сравняване на контекста [DNSFOREST]...
    
    	* Обекти, които ще бъдат сравнени: 20
    
    	* Резултат за [DNSFOREST]: УСПЕХ

    В редица случай атрибутите на обектите на различни контролери могат да се различават и изходът от командата ще го покаже. Но не във всички случаи това ще е признак за проблем с репликацията.

    Следващият етап е да се настрои ръчно стабилната репликация на каталога SysVol.
    Факт е, че Samba все още не поддържа DFS-R, нито предишния FRS. Следователно, за репликация между DC Samba и Windows, единственото работещо решение дотук е еднопосочната репликация с помощта на утилитата Robocopy от комплекта Windows Server 2003 Resource Kit Tools.

    Разработчиците на Samba, за да избегнат проблеми с съвместимостта, препоръчват първо да инсталирате комплекта утилити на обикновена работна станция и след това да копирате 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, за свързване на нашия мрежов ресурс, в информацията, подадена в дисплейния мениджър. Затова е важно, логинът в DМ да се подава без явното посочване на домейна.

      В sssd.conf това се решава чрез коментиране или задаване на стойност False за опцията use_fully_qualified_names, която включва режим на пълни имена (включително домейн) за потребители и групи.

    2. Вторият метод е по-малко директен и по-груб, но според мен е по-удобен и предпочитан. Разликата от първия вариант е само в конфигурацията на pam_mount
      # vim /etc/security/pam_mount.conf.xml

      Тоест просто монтираме всяка наша папка в съответната директория

Изводи

За половин месец работа на тестовия стенд тази конфигурация успешно оцелялa няколко последователни дългосрочни и краткосрочни прекъсвания на двата контролера, практически без последствия за клиентите (веднъж клиент на Windows7 загуби доверителни отношения).

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

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

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

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