Samba/InterdomainTrustRelationships
Установка доверительных отношений между Windows 2012R2 и SambaDC
Исходные данные
- Домен Windows:
Имя домена - WIN.DOM Контроллер домена - DC1.WIN.DOM IP address - 172.16.100.124 ОС контроллера домена - Windows Server 2012R2 Уровень работы домена - 2012R2
- Домен Linux:
Имя домена - LIN.LOC Контроллер домена - DC2.LIN.LOC IP address - 172.16.100.135 ОС контроллера домена - Alt 9 Server Уровень работы домена - 2012_R2 Версия Samba - 4.12.11
Основная задача - описать процесс создания двухсторонних доверительных отношений между доменами на базе Windows AD и Samba DC. Проверить возможность входа пользователей и групп одного домена в другой и наоборот.
Настройка на стороне Windows
1. Для службы DNS создать сервер условной перессылки
PS$ Add-DnsServerConditionalForwarderZone -Name lin.loc -MasterServers 172.16.100.135 -ReplicationScope Forest
2. Создание двухстороннего транзитивного подключения
Настройка на стороне Linux
Предполагается, что домен уже настроен согласно документации, и функционирует с настроенным BIND9_DLZ в качестве DNS-backend.
1. Создать сервер условной перессылки для службы DNS. Для этого добавить в конец файла /etc/bind/ddns.conf следующие строки:
zone "win.dom" in {
type forward;
forwarders { 172.16.100.124; };
};
2. Проверяем возможность получения билета Kerberos в домене WIN.DOM:
# kinit admin@WIN.DOM
# klist
Ticket cache: KEYRING:persistent:0:0
Default principal: admin@WIN.DOM
Valid starting Expires Service principal
31.03.2021 22:25:36 01.04.2021 08:25:36 krbtgt/WIN.DOM@WIN.DOM
renew until 07.04.2021 22:25:30
3. Создание двухстороннего транзитивного подключения:
# samba-tool domain trust create win.dom --type=forest --direction=both --create-location=both -Uadmin@WIN
В случае использования Trust Secret Key в параметре --create-location нужно заменить опцию both на local, тогда после ввода пароля администратора, Samba DC прежде чем создать доверительные отношения сначала запросит Trust Key, созданный ранее при настройке в Windows.
В общем случае ваш вывод после ввода указанной команды должен быть примерно похож, на представленный ниже
LocalDomain Netbios[LIN] DNS[lin.loc] SID[S-1-5-21-1859323732-4157578351-390439025]
RemoteDC Netbios[DC1] DNS[DC1.WIN.DOM]
ServerType[PDC,GC,LDAP,DS,KDC,TIMESERV,CLOSEST,WRITABLE,GOOD_TIMESERV,FULL_SECRET_DOMAIN_6,ADS_WEB_SERVICE,DS_8,__unknown_00008000__]
Password for [admin@WIN]:
RemoteDomain Netbios[WIN] DNS[WIN.DOM] SID[S-1-5-21-534750258-3577407189-1049577339]
Creating remote TDO.
Remote TDO created.
Setting supported encryption types on remote TDO.
Creating local TDO.
Local TDO created
Setting supported encryption types on local TDO.
Setup local forest trust information...
Namespaces[2] TDO[WIN.DOM]:
TLN: Status[Enabled] DNS[*.WIN.DOM]
DOM: Status[Enabled] DNS[WIN.DOM] Netbios[WIN] SID[S-1-5-21-534750258-3577407189-1049577339]
Setup remote forest trust information...
Namespaces[2] TDO[lin.loc]:
TLN: Status[Enabled] DNS[*.lin.loc]
DOM: Status[Enabled] DNS[lin.loc] Netbios[LIN] SID[S-1-5-21-1859323732-4157578351-390439025]
Validating outgoing trust...
OK: LocalValidation: DC[\\DC1.WIN.DOM] CONNECTION[WERR_OK] TRUST[WERR_OK] VERIFY_STATUS_RETURNED
Validating incoming trust...
OK: RemoteValidation: DC[\\dc2.lin.loc] CONNECTION[WERR_OK] TRUST[WERR_OK] VERIFY_STATUS_RETURNED
Success.
Настройка SSSD
В файл /etc/sssd/sssd.conf добавляем доверенный домен:
[domain/LIN.LOC/WIN.DOM]
use_fully_qualified_names = false
Перезапускаем sssd:
# systemctl restart sssd
Проверка:
# getent passwd petrov
petrov@win.dom:*:1588801103:1588801103:Petr Petrov:/home/win.dom/petrov:/bin/bash
В случае проблем с авторизацией пользователем из доверенного домена, в sssd.conf в секцию основного домена можно вписать
krb5_validate = false
Подводные камни и ограничения
1. Не применяются правила фильтрации SID
2. Вы не можете добавить пользователей и группы доверенного домена в доменные группы доверяющего домена.
3. Для входа в доверенный домен через SSSD надо использовать тип связи External, а не Forest.
4. Убедитесь, что NetBIOS имена доменов отличаются. Т.е. домен MYDOMAIN.WIN и MYDOMAIN.NEW будут иметь одинаковое короткое имя - MYDOMAIN. Это приведет к невозможности установки доверительных отношений.
5. Winbind на клиентских машинах не распознаёт доверенные домены, что приводит к проблемам с обновлением паролей учетных записей доверенного домена после их истечения. Чтобы устранить эту проблему, необходимо внести изменения в конфигурационный файл smb.conf на Linux-клиентах, подключенных через Winbind. В секции [global] этого файла следует добавить соответствующую опцию:
winbind scan trusted domains = yes
Перезапустить сервис winbind:
#systemctl restart winbind.service
6. При использовании групповой политики (на контроллерах в win-домене) "Сетевая безопасность: минимальная сеансовая безопасность для серверов на базе NTLM SSP (включая безопасный RPC)" с опцией "требовать сеансовую безопасность NTLMv2" в разделе "Конфигурация компьютера\Конфигурация Windows\Параметры безопасности\Локальные политики\Параметры безопасности" не строится траст между win-доменом и samba-доменом.
При включении этой политики после построения траста некорректно работают доверительные отношения между windows-доменом и samba-доменом. Не выполняется проверка траста (samba-tool domain trust validate) и не выполняется вход на пользователями из доверенного домена на машинах с winbind.