Download PDF
Download page Настройка доверительных отношений FreeIPA - Active Directory.
Настройка доверительных отношений FreeIPA - Active Directory
Данная статья применима к:
- Astra Linux
Исходные настройки
Предполагается, что к началу настройки доверительных отношений выполнены следующие условия:
- имеется домен Active Directory (AD), с настроенным и работающим контроллером домена:
- с условным именем домена windomain.ad (имена доменов FreeIPA и Windows AD должны различаться);
- соответственно, с именем NETBIOS WINDOMAIN;
- имеется выделенный сервер контроллера домена:
- с условным названием winserver;
- с фиксированным IP-адресом (далее <IP-адрес_сервера_AD>);
под управлением Windows Server 2008 R2 или другого сервера Windows, поддерживающего роль контроллера домена;
В данном примере использовался английский вариант сервера. Если вы используете русский вариант сервера - не забудьте перевести названия групп AD.адинистратор сервера AD имеет имя Administrator, и его пароль известен;
Команда ipa trust-add не поддерживает кириллицу в учетной записи администратора ADЕсли для администратора домена AD создается дополнительная учетная запись, то эта запись не просто должна быть добавлена в группу Domain Admins, а эта группа должна быть выбрана основной, иначе может возникать ошибка доступа CIFS 3221225506.
- имеется сервер FreeIPA с настроенным доменом FreeIPA:
- с условным названием ipadomain.ipa;
- соответственно, с именем NETBIOS IPADOMAIN;
- имеется выделенный сервер FreeIPA:
- с операционной системой Astra Linux;
- с условным названием ipaserver;
- с фиксированным IP-адресом (далее <IP-адрес_сервера_FreeIPA>);
- администратор сервера FreeIPA имеет имя admin и его пароль известен;
серверы winserver и ipaserver находятся в одной сети, и на всех серверах успешно выполняются команды
ping <IP-адрес_сервера_FreeIPA>и
ping <IP-адрес_сервера_AD>Для корректного взаимодействия контроллеров доменов FreeIPA и Windows AD они должны находиться в одной широковещательной зоне сети (broadcast zone). Нарушение этого требования может вести к задержкам в работе клиентов доменов.
Предполагается, что к началу настройки доверительных отношений службы FreeIPA уже установлены и запущены, настройка FreeIPA выполнялась по инструкции Контроллер ЕПП FreeIPA в Astra Linux с помощью инструментов fly-admin-freeipa-server или astra-freeipa-server. Если настройка FreeIPA выполнялась иным способом, то необходимо убедиться, что установлен пакет freeipa-server-trust-ad (установить его).
FreeIPA: Включение доверительных отношений
Полномочия администратора
Получаем полномочия администратора домена, и, заодно, проверяем работоспособность служб FreeIPA. Следующие команды на сервере FreeIPA должны выполняться без ошибок:
id admin
getent passwd admin
Включение службы доверительных отношений
Включаем службу доверительных отношений во FreeIPA командой:
После запуска команды:
- На все вопросы ответить «да» («y»), несмотря на то, что по умолчанию там «нет».
- Ввести пароль администратора домена IPA.
- Проверить правильность автоматического определения доменного имени, и нажать Enter.
- Еще раз ответить «y».
Настройка и проверка перенаправления DNS
Добавление зоны перенаправления осуществляется командой:
На сервере FreeIPA:
ipa dnsforwardzone-add <имя_домена_Windows_AD> --forwarder=<IP-адрес_сервера_AD> --forward-policy=onlyНа сервере Windows AD:
dnscmd 127.0.0.1 /ZoneAdd <имя_домена_FreeIPA> /Forwarder <IP-адрес_сервера_FreeIPA>
При выполнении команды на сервере FreeIPA проверяется корректность работы добавляемого сервера перенаправления. Если на сервере FreeIPA включена проверка подписей DNS (включена по умолчанию в Astra Linux Special Edition x.7), а зона DNS в Windows AD не подписана, то будет выдано предупреждение "ipa: WARNING: Сбой проверки DNSSEC: запись "... SOA" не прошла проверку DNSSEC на сервере ..." и перенаправление имен работать не будет. В этом случае:
- На сервере Windows AD подписать зону DNS, для чего открыть консоль AD DNS, выбрать необходимую зону нажатием правой кнопки мыши и выбрать DNSSEC - Подписать зону - Использовать рекомендуемые параметры.
На сервере FreeIPA получить от сервера Windows AD параметры ключей:
dig dnskey windomain.ad. @<IP-адрес_Windows_AD> +noall +answerПример ответа:; <<>> DiG 9.11.3-1ubuntu1.11-Debian <<>> dnskey srv.rbt. @10.7.21.21 +noall +answer ;; global options: +cmd windomain.ad. 3600 IN DNSKEY 256 3 8 AwEAAcaRV/UHxAmt2ESvWxGHgoIgtEasYABj5i4kJfcs+Tiuy+jbTgKf kZx8LDyTBAIEC9ZX8en1R1ZNzUS1T1xZKGJ2IHqJU2BobiIQ0qFVSDLL 0+GbOCLP7npDB0OPhqgOcaF8j3m2+TtP2ssqaGbPrT5Ya+nkRwr0G6ik e3m6uTRD windomain.ad. 3600 IN DNSKEY 256 3 8 AwEAAZIBjJ7fkvuDTvuPBNA9K8glJhp1Kf8SJ2Ppchq2bpE7W/6hVxqP zdnrpjaaPYSxuIMQFqIRz2QtkJ1VHkLdnzOm6Tpa4Wsr+dX5XUUTkV72 k4Hl+QVKPCGpthqIb8j60kYa7PXRKMDv4Jw+U96YsQbA621/M10/8UZB bD3iJ0x9 windomain.ad. 3600 IN DNSKEY 257 3 8 AwEAAa+KDuNaIQ5ChuMYDIS4Y6GQtXiQJ1qtU7+CDwn2zgVPyoqi1DLc l8IIWyGRDsGU2NUXnem704dwghGpUQ9XbzJCKzueC/dQSUS5mdZjhvrm +/knsCizku7/0x5B9U3Kj911pAe5CPUY7r1dKQtYYINiAmnJprIuUbBs jogC4IYTA6mMmEW2cvOmuNfpAB4IxnFZLmXA4lE0DR3JCVLsnxQ20Gq1 TErWSd7st458RKPp4mEt1mU2JYWltJYA82lp0WLqXOO1B/ievLWESnvH oyGclg0lzm4LHc9Opd3zNRQYea4IFN2WHXIkOThqlA291Gw4gw85eBhs xdNpd2dDHts= windomain.ad. 3600 IN DNSKEY 257 3 8 AwEAAb6hMq89Tf4Cf5ND6R/R8FYcbHd5uyxUo2pOlvLkw8VWL1/Ix8Xp abymJ6a8lMKU39CKfp/lxMxWbPicOpT72vnoDhfbck9O17EwI40PmMI3 51acR5EtdQwtwz44aNmO7QlXSdYJLYrvEq76M3jn2O1wFgb+oSQZFA2U 9b9/ssc8uBzLuCMC7DbHFU7V4hb36LlheqnNecYti1Og5MckEfU01MCg SwoNBd1pkyi+S5hszIaSI5Q28DVBA/lDdF7zRIFlvs7DdAwPdrODhx/o QjN40cQZj+DAVeR/vZnGUK+lBQ+gXTjOqfECJKyVOuljzL+IwBb74xzO 9c1Nl0/Uz+E=
CODEДобавить в конец файла /etc/bind/bind.keys перед закрытием секции managed-keys два последних полученных ключа и привести их в корректный формат по аналогии с уже имеющимися там ключами: в полученных ключах заменить пробел на перенос на новую строку. Сам ключ должен быть заключен в двойные кавычки и завершен точкой с запятой. Пример:
windomain.ad. initial-key 257 3 8 "AwEAAa+KDuNaIQ5ChuMYDIS4Y6GQtXiQJ1qtU7+CDwn2zgVPyoqi1DLc l8IIWyGRDsGU2NUXnem704dwghGpUQ9XbzJCKzueC/dQSUS5mdZjhvrm +/knsCizku7/0x5B9U3Kj911pAe5CPUY7r1dKQtYYINiAmnJprIuUbBs jogC4IYTA6mMmEW2cvOmuNfpAB4IxnFZLmXA4lE0DR3JCVLsnxQ20Gq1 TErWSd7st458RKPp4mEt1mU2JYWltJYA82lp0WLqXOO1B/ievLWESnvH oyGclg0lzm4LHc9Opd3zNRQYea4IFN2WHXIkOThqlA291Gw4gw85eBhs xdNpd2dDHts="; windomwin.ad. initial-key 257 3 8 "AwEAAb6hMq89Tf4Cf5ND6R/R8FYcbHd5uyxUo2pOlvLkw8VWL1/Ix8Xp abymJ6a8lMKU39CKfp/lxMxWbPicOpT72vnoDhfbck9O17EwI40PmMI3 51acR5EtdQwtwz44aNmO7QlXSdYJLYrvEq76M3jn2O1wFgb+oSQZFA2U 9b9/ssc8uBzLuCMC7DbHFU7V4hb36LlheqnNecYti1Og5MckEfU01MCg SwoNBd1pkyi+S5hszIaSI5Q28DVBA/lDdF7zRIFlvs7DdAwPdrODhx/o QjN40cQZj+DAVeR/vZnGUK+lBQ+gXTjOqfECJKyVOuljzL+IwBb74xzO 9c1Nl0/Uz+E=";
CODEПосле внесение изменений перезапустить службу bind9-pkcs11:
sudo systemctl restart bind9-pkcs11
Проверки успешного выполнения настройки перенаправления.
Проверки на сервере FreeIPA:
Проверка #1, сервер должен быть доступен по его имени:
ping -c 3 winserver.windomain.adПроверка #2, доменная служба должна быть доступна:
dig SRV _ldap._tcp.ipadomain.ipaПроверка #3, доменная служба должна быть доступна:
dig SRV _ldap._tcp.windomain.adПроверка #4, работоспособность службы samba
Использование ключа -k налагает обязательное условие:
команда должна выполняться из сессии (от имени) пользователя, на которого был получен билет Kerberos. При этом, как указано выше, обращения к samba от имени непривилегированных пользователей не работают.
Например, если из сессии локального пользователя localadmin получить билет kinit admin@ipadomain.ipa, а потом попробовать выполнить команду smbclient с опцией -k, результатом будет ошибка доступа, так как localadmin не имеет билета Kerberos.
Если команда выполняется от имени пользователя admin@ipadomain.ipa (доменного администратора) - опять будет ошибка, так как пользователь admin не является суперпользователем.При этом на других (клиентских) компьютерах привилегии суперпользователя для выполнения обращений к samba не требуются.
Последовательность действия для проверки:
- получить принципал admin (администратора домена) для суперпользователя;
- войти в сессию пользователя admin, что позволит использовать принципал admin;
- выполнить команду с правами суперпользователя, чтобы получить доступ к конфигурации samba.
Последовательность команд для сессии локального администратора (команды должны выполнятся в единой сессии):sudo login adminПоследовательность команд для сессии доменного администратора (admin):
kinit
smbclient -k -L ipaserver.ipadomain.ipa
exitsudo kinit
sudo smbclient -k -L ipaserver.ipadomain.ipa
Проверки на сервере Windows AD (команды выполняются в PowerShell):
Resolve-DnsName -Name _ldap._tcp.Default-First-Site-Name._sites.dc._msdcs.ipadomain.ru -Type any
Установление доверительных отношений между доменами
Устанавливаем одностороннее доверительное отношение, т.е. одностороннее доверие к Active Directory, при котором:
- область FreeIPA доверяет лесу доменов Active Directory, используя механизм доверительных отношений между деревьями доменов AD;
- дерево доменов AD не доверяет области FreeIPA;
- пользователи дерева доменов AD получают доступ к ресурсам области FreeIPA.
Команда установления доверительных отношений должна выполняться на сервере (сервере-реплике) FreeIPA из сессии локального или доменного администратора (при включенном МКЦ - администратора с высоким уровнем целостности) с использованием sudo (см. выше пример проверки доступа к samba). Пример команды:
Для проверки результатов установления доверительных отношений можно использовать команды:
получение списка доверенных доменов:
ipa trust-fetch-domains <имя_домена_Windows_AD>поиск домена, домен должен быть найден:
ipa trustdomain-find <имя_домена_Windows_AD>
Добавление групп пользователей
Для англоязычного варианта сервера:
ipa group-add --desc='ad domain external map' ad_admins_external --external
ipa group-add --desc='ad domain users' ad_admins
ipa group-add-member ad_admins_external --external 'windomain.ad\Domain Admins'
(на запросы «member_user» и «member_group» просто нажать «ввод»)
ipa group-add-member ad_admins --groups ad_admins_externalДля русскоязычного варианта сервера:
ipa group-add --desc='ad domain external map' ad_admins_external --external
ipa group-add --desc='ad domain users' ad_admins
ipa group-add-member ad_admins_external --external 'windomain.ad\Администраторы домена'
(на запросы «member_user» и «member_group» просто нажать «ввод»)
ipa group-add-member ad_admins --groups ad_admins_external
Получение идентификатора безопасности пользователей AD
на сервере AD командой из оболочки CMD (но не из оболочки PowerShell!):
на сервере IPA:
Добавление разделяемого каталога
Добавление разделяемого каталога /share_dir, доступного для пользователей AD под именем «share_name»:
sudo net conf setparm 'share_name' 'comment' 'Trust test share'
sudo net conf setparm 'share_name' 'read only' 'no'
sudo net conf setparm 'share_name' 'valid users' "@ad_admins"
sudo net conf setparm 'share_name' 'path' '/share_dir'
Авторизация пользователей AD
После установления доверительных отношений между доменами пользователи AD получают возможность авторизоваться и входить на рабочие станции в домене под управлением FreeIPA, пользуясь своими идентификаторами, присвоенными в домене AD.
При этом, идентификатор пользователя должен быть указан в виде <идентификатор_пользователя_AD>@<имя_домена>
, где имя домена должно быть указано строчными буквами, например, winuser@windomain.ad
.
С учетом того, что пользователи Windows привыкли к тому, что Windows во многих случаях не различает строчные и заглавные буквы, можно выполнить дополнительные настройки рабочей станции, позволяющие указывать имя домена AD также и заглавными буквами. Для этого на рабочей станции, на которой будет осуществляться авторизация, добавить в файл /etc/krb5.conf в секцию [realms] два параметра:
[realms]
IPADOMAIN.IPA = {
.....
auth_to_local = RULE:[1:$1@$0](^.*@WINDOMAIN.AD$)s/@WINDOMAIN.AD/@windomain.ad/
auth_to_local = DEFAULT
.....
}
Далее можно будет входить на эту рабочую станцию с указанием идентификатора пользователя в виде <идентификатор_пользователя_AD>@<ИМЯ_ДОМЕНА_AD>
, где <ИМЯ_ДОМЕНА_AD>
может быть написано либо строчными, либо заглавными буквами, например: winuser@WINDOMAIN.AD
.