ActiveDirectory/Trusts

Материал из ALT Linux Wiki

Поддержка доверительных отношений с Samba

Поддерживается:

  • Доверительное отношение между лесами доменов (forest trust). Это доверие может быть установленным между двумя Samba-доменами или Samba-доменом и Windows-доменом.
  • Внешние доверительные отношения (external trust). Это доверие может быть установленным между двумя Samba-доменами или Samba-доменом и Windows-доменом.
  • Добавление пользователей и групп доверенного домена в группы доверяющего домена, но при этом необходимо использовать SID пользователей и групп, чтобы добавить их в свою группу (имя пользователя или имя группы использовать невозможно).
  • В RSAT появится контейнер ForeignSecurityPrincipal для всех добавленных пользователей и групп из доверенного домена. Таким образом Microsoft показывает, что пользователь или группа являются частью доверенного домена.

Особенности и ограничения:

  • Для входа в доверенный домен через SSSD надо использовать тип связи External, а не Forest.
  • Не применяются правила фильтрации SID.
  • Обе стороны траста должны полностью доверять друг другу. Это означает, что администратор из домена A может управлять всеми объектами в домене Б и наоборот.
  • Выборочная аутентификация в настоящий момент не поддерживается. Возможно создание таких доверий, но KDC и winbindd всё равно будут их игнорировать.
  • Нельзя создать доверительные отношения между доменами в одном дереве с одним и тем же пространством имён верхнего уровня. NetBIOS имена доменов должны отличаться (домен MYDOMAIN.WIN и MYDOMAIN.NEW будут иметь одинаковое короткое имя — MYDOMAIN, это приведет к невозможности установки доверительных отношений).
  • Winbind на клиентских машинах не распознаёт доверенные домены, что приводит к проблемам с обновлением паролей учетных записей доверенного домена после их истечения. Чтобы устранить эту проблему, необходимо внести изменения в конфигурационный файл smb.conf на Linux-клиентах, подключенных через Winbind. В секции [global] этого файла следует добавить соответствующую опцию:
winbind scan trusted domains = yes

Перезапустить сервис winbind:

#systemctl restart winbind.service
  • При использовании групповой политики (на контроллерах в win-домене) "Сетевая безопасность: минимальная сеансовая безопасность для серверов на базе NTLM SSP (включая безопасный RPC)" с опцией "требовать сеансовую безопасность NTLMv2" в разделе "Конфигурация компьютера\Конфигурация Windows\Параметры безопасности\Локальные политики\Параметры безопасности" не строится траст между win-доменом и samba-доменом. При включении этой политики после построения траста некорректно работают доверительные отношения между windows-доменом и samba-доменом. Не выполняется проверка траста (samba-tool domain trust validate) и не выполняется вход на пользователями из доверенного домена на машинах с winbind. Примечание: После редактирования политики и ее применения на win-домене необходимо перезапустить сервис samba.

Для управления доверием можно использовать инструмент командной строки samba-tool. ⁠

Команда Описание Примечание
domain trust create <домен> Создать доверие домена или леса Можно использовать следующие опции:

–type=TYPE — тип доверия (external,forest);

–direction=DIRECTION — направление доверия (incoming,outgoing,both);

–create-location=LOCATION  — где создать объект доверенного домена (local,both);

–quarantined=yes|no — применять к доверию специальные правила фильтрации SID (при –type=external по умолчанию yes, при –type=forest по умолчанию no);

-U USERNAME — имя пользователя.

domain trust modify <домен> Изменить доверие домена или леса
domain trust delete <домен> Удалить доверие домена или леса Можно использовать следующие опции:

–delete-location=LOCATION  — где удалить объект доверенного домена (local, both);

-U USERNAME — имя пользователя.

domain trust list Вывести список доверительных отношений домена
domain trust show <домен> Показать сведения о доверенном домене
domain trust validate <домен> Проверить доверие к домену Можно использовать следующие опции:

–validate-location=LOCATION — где проверить объект доверенного домена ( local, both);

-U USERNAME — имя пользователя.

Доверительные отношения между Samba DC и Windows Server с Active Directory

Установка доверительных отношений между Windows 2012R2 и SambaDC

Имя домена Контроллер домена IP address ОС контроллера домена Уровень работы домена Версия Samba
Домен Linux TEST.ALT DC1.TEST.ALT 10.64.224.108 Alt Server 10.2 2012_R2 4.19.7
Домен Windows WIN.DOM DC2.WIN.DOM 10.64.224.116 Windows Server 2012R2 2012R2 -

Настройка DNS

Windows Server с AD

На AD сервере необходимо создать сервер условной пересылки для зоны Samba домена.

В графическом интерфейсе:

1. Открыть Диспетчер DNS (DNS Manager).

2. В разделе Серверы условной пересылки (Conditional Forwarders) добавить новый сервер пересылки, указав FQDN или IP-адрес сервера Samba:

TrustDns1.png

3. Сохранить настройки.

В командной строке:

PS$ Add-DnsServerConditionalForwarderZone -Name lin.loc -MasterServers 172.16.100.135 -ReplicationScope Forest

Samba DC

Создание сервера условной перессылки для службы DNS.

  • При использовании DNS бэкенда BIND9_DLZ добавить в конец файла /etc/bind/options.conf (или /etc/bind/ddns.conf) строки:
zone "win.dom" in {
 type forward;
 forwarders { 10.64.224.116; };
 };

И перезапустить службу DNS:

# systemctl restart bind.service
  • Если используется DC с DNS бэкенд SAMBA_INTERNAL, самый простой способ заставить работать разрешение имен — настроить DNS-прокси между двумя доменами. DNS-прокси будет перенаправлять запрос между доменами и внешним DNS-серверами. В примере, в качестве DNS-прокси используется отдельный сервер (IP-адрес 10.64.224.105) с настроенным bind9.

На контроллере домена необходимо выполнить следующие действия: Указать DNS-прокси, как сервер пересылки в файле /etc/samba/smb.conf (в параметре dns forwarder). Например:

dns forwarder = 10.64.224.105 8.8.8.8

Перезапустить службу samba:

# systemctl restart samba

На сервере bind9:

1. Отредактировать файл /etc/bind/options.conf:

  • Отключить проверку DNSSEC, для этого в секцию options добавить параметр:
dnssec-validation no;
  • В конец файла добавить информацию о зонах:
zone "win.dom" in {
 	type forward;
 	forwarders { 10.64.224.116; };
 };

2. Перезапустить службу DNS:

# systemctl restart bind.service

Подробнее про настройку домена можно прочесть в документации ALT Linux Team

Примечание: Если удалённый DNS-сервер не использует DNSSEC и включить проверку DNSSEC на удаленном DNS-сервере нельзя, можно отключить проверку DNSSEC на сервере AD. Для этого необходимо в файл /etc/bind/options.conf в секцию options добавить параметр:
dnssec-validation no;
И перезапустить службу DNS:
# systemctl restart bind.service

Проверка конфигурации DNS

На Samba DC:

1. Запись отвечающая за работу сервисов Kerberos через UDP и LDAP через TCP:

# dig +short -t SRV _kerberos._udp.test.alt
0 100 88 dc1.test.alt.
# dig +short -t SRV _ldap._tcp.test.alt
0 100 389 dc1.test.alt.

В выводе команд должен быть отображен список всех серверов. 2. Наличие записей для работы сервисов AD на DNS-сервере Samba:

# dig +short -t SRV _kerberos._tcp.dc._msdcs.win.dom
0 100 88 dc1.win.dom.
# dig +short -t SRV _ldap._tcp.dc._msdcs.win.dom
0 100 389 dc1.win.dom.

3. Возможность получения билета Kerberos в домене WIN.DOM:

# kinit Администратор@WIN.DOM
# klist
Ticket cache: FILE:/tmp/krb5cc_500
Default principal: Администратор@WIN.DOM

Valid starting       Expires              Service principal
09.09.2024 15:49:11  10.09.2024 01:49:11  krbtgt/WIN.DOM@WIN.DOM
	renew until 10.09.2024 15:49:01

На Windows Server с AD:

1. Запустить утилиту nslookup.exe для поиска служебных записей:

C:\> nslookup.exe
> set type=SRV

2.Ввести доменное имя для служебных записей Kerberos через UDP и LDAP через TCP:

> _kerberos._udp.test.alt
_kerberos._udp.test.alt       SRV service location:
	priority                = 0
	weight                  = 100
	port                    = 88
	svr hostname            = dc1.test.alt
…
test.alt
	primary name server = dc1.test.alt
	responsible mail addr = hostmaster.test.alt
	serial = 7
	refresh = 900 (15 mins)
	retry = 600 (10 mins)
	expire = 86400 (1 days)
	default TTL = 3600 (1 hours)
> _ldap._tcp.test.alt
_ldap._tcp.test.alt       SRV service location:
	priority                = 0
	weight                  = 100
	port                    = 389
	svr hostname            = dc1.test.alt

Создание двухстороннего транзитивного подключения

Samba DC

На контроллере домена dc1.test.alt:

# samba-tool domain trust create win.dom --type=forest --direction=both --create-location=both -Uадминистратор@WIN.DOM

где:

  • --type - указывает тип доверительного отношения, может принимать значения external и forest.
  • --direction - определяет направление доверительного отношения.
    • incoming - входящее доверие
    • outgoing - исходящее доверие
    • both - двустороннее доверие
  • --create-location - указывает место создания доверительного отношения.
    • local - объект доверенного домена будет создан только в локальном домене, доверительные отношения будут зарегистрированы и настроены только со стороны вашего домена, без внесения изменений в конфигурацию удаленного домена.
    • both - объект доверенного домена будет создан в обоих доменах.

При появлении запроса необходимо ввести пароль администратора.

Примечание: Для входа в доверенный домен через SSSD надо использовать тип связи external, а не forest.
Примечание: В случае использования Trust Secret Key в параметре –create-location нужно заменить опцию both на local. Samba DC прежде чем создать доверительные отношения сначала запросит Trust Key (Incoming Trust Password/Outgoing Trust Password), созданный ранее при настройке в Windows.


Windows Server с AD

В домене win.dom открываем «Диспетчер серверов», и выбираем «Средства» — «Active Directory — Домены и Доверие»:

TrustAD1.png

В открывшемся окне в контекстном меню домена WIN.DOM необходимо выбрать «Свойства». Откроется окно свойств, в котором нужно перейти во вкладку «Отношения доверия» и нажать на «Создать отношение доверия»:

TrustWin-dom.png

В открывшемся мастере создания отношения доверия вводим имя домена Samba DC. В данном случае TEST.ALT:

TrustName.png

На следующей вкладке «Тип доверия» выбираем «Доверие леса»:

TrustType.png

Далее во кладке «Направление отношения доверия» выбираем «Двухстороннее»:

TrustDirection.png

В открывшемся окне «Стороны отношения доверия» необходимо выбрать, на каком из доменов будет применена настройка. В нашем случае у нас есть права администратора для обоих доменов, поэтому выбираем пункт «Для данного и указанного домена».

Если был выбран параметр «Только для данного домена», то необходимо будет задать Trust Secret Key, который в дальнейшем будет использоваться при создании доверительного отношения на стороне Samba DC.

TrustParties.png

На следующем этапе мастер свяжется с доменом TEST.ALT (если он доступен), и запросит логин и пароль от пользователя с правами установки доверительных отношений в домене TEST.ALT:

TrustUserName.png

Далее на вкладке «Уровень проверки подлинности исходящего доверия — Локальный лес» выбираем «Проверка подлинности в лесу»:

TrustAuthentication.png

Тоже самое выбираем и на следующей вкладке «Уровень проверки подлинности исходящего доверия — Указанный лес».

После очередного нажатия на кнопку «Далее» мастер в окне «Выбор доверия завершен» выдаст уведомление о том, что готов создать новое отношение доверия, и покажет краткую сводку по выбранным параметрам. Соглашаемся с параметрами, после чего должно появиться уведомление о том, что создание доверия успешно завершено:

TrustCreationComplete.png

После нажатия на «Далее» появится окно «Подтверждение исходящего доверия», а после него «Подтверждение входящего отношения доверия». Здесь и в первом и во втором окне оставляем «Нет, не подтверждаю это исходящее/входящее отношение доверие», так как на стороне Samba DC доверие нами еще не создавалось:

TrustConfirm.png

Отношение доверия успешно создано:

TrustCompletion.png

Проверка доверия

Проверка доверия с dc1.test.alt:

  • просмотр доверия:
  # samba-tool domain trust show WIN.DOM
 LocalDomain Netbios[TEST] DNS[test.alt] SID[S-1-5-21-3099202228-3607437695-3279060739]
 TrustedDomain:

 NetbiosName:    WIN-DOM
 DnsName:        win.dom
 SID:            S-1-5-21-3096440084-565096806-4224734732
 Type:           0x2 (UPLEVEL)
 Direction:      0x3 (BOTH)
 Attributes:     0x8 (FOREST_TRANSITIVE)
 PosixOffset:    0x00000000 (0)
 kerb_EncTypes:  0x18 (AES128_CTS_HMAC_SHA1_96,AES256_CTS_HMAC_SHA1_96)
 Namespaces[2] TDO[win.dom]:
 TLN: Status[Enabled]                  DNS[*.win.dom]
 DOM: Status[Enabled]                  DNS[win.dom] Netbios[WIN-DOM] SID[S-1-5-21-3096440084-565096806-4224734732]
  • список трастов:
# samba-tool domain trust list
Type[Forest]   Transitive[Yes] Direction[BOTH]     Name[win.dom]

В разных доменах могут быть разные результаты. Результат зависит от типа траста, который установлен с этим доменом. Если после настройки доверия возникли проблемы с доступом пользователей из трастового домен в свой домен, тогда следует проверить, действительно ли установлен траст:

# samba-tool domain trust validate win.dom -UАдминистратор@WIN.DOM
LocalDomain Netbios[TEST] DNS[test.alt] SID[S-1-5-21-3099202228-3607437695-3279060739]
LocalTDO Netbios[WIN-DOM] DNS[win.dom] SID[S-1-5-21-3096440084-565096806-4224734732]
OK: LocalValidation: DC[\\DC2.win.dom] CONNECTION[WERR_OK] TRUST[WERR_OK] VERIFY_STATUS_RETURNED
OK: LocalRediscover: DC[\\DC2.win.dom] CONNECTION[WERR_OK]
RemoteDC Netbios[DC2] DNS[DC2.win.dom] 		ServerType[PDC,GC,LDAP,DS,KDC,TIMESERV,CLOSEST,WRITABLE,FULL_SECRET_DOMAIN_6,ADS_WEB_SERVICE,DS_8,DS_9]
Password for [Администратор@WIN.DOM]:
OK: RemoteValidation: DC[\\dc1.test.alt] CONNECTION[WERR_OK] TRUST[WERR_OK] VERIFY_STATUS_RETURNED
OK: RemoteRediscover: DC[\\dc1.test.alt] CONNECTION[WERR_OK]

Проверка доверия с dc2.win.dom:

Проверку можно осуществить в свойствах домена WIN.DOM во вкладке «Отношения доверия».

TrustWindom2.png

Необходимо выбрать домен, который вы хотите проверить и нажать «Свойства»:

CheckTrust.png

Для подтверждения или сброса состояния этого отношения доверия и для обновления его суффиксов маршрутизируемых имен необходимо нажать «Проверка»:

TrustResultCheck.png

Доверительные отношения между двумя доменами на основе Samba

Имя домена Контроллер домена IP address ОС контроллера домена Версия Samba
TEST.ALT DC1.TEST.ALT 10.64.224.118 Alt Server 10.2 4.19.7
EXAMPLE.ALT DC2.EXAMPLE.ALT 10.64.224.117 Alt Server 10.2 4.19.7