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