FreeIPA/Интеграция с AD
- Домен FreeIPA — example.test
- Сервер FreeIPA — ipa.example.test (192.168.0.113)
- NetBIOS имя IPA домена: EXAMPLE
- Домен AD — test.alt
- Сервер AD — dc1.test.alt (192.168.0.122)
- NetBIOS имя AD домена: TEST
FreeIPA использует Samba для интеграции в Active Directory. Для работы Samba необходим работающий стек IPv6.
Настройка DNS
Перед подключением FreeIPA и Active Directory (AD) к доверию необходимо убедиться, что серверы видят друг друга и правильно разрешают доменные имена. В этом сценарии описывается настройка DNS для разрешения доменных имен между:
- основной сервер FreeIPA, использующий интегрированный сервер DNS и CA;
- контроллер домена AD.
Для настройки DNS необходимо:
- настроить зоны DNS на сервере FreeIPA;
- настроить условную переадресацию DNS в AD;
- проверить правильности конфигурации DNS.
Настройка зоны перенаправления DNS на сервере FreeIPA
С помощью зон перенаправления DNS (forward zone) DNS-запросы для определенной зоны можно перенаправлять на другой DNS-сервер. Например, можно перенаправлять DNS-запросы для домена AD на DNS-сервер AD.
Настройка зоны перенаправления в веб-интерфейсе FreeIPA:
- Перейти на вкладку «Сетевые службы».
- В выпадающем меню выбрать «DNS» «Зоны перенаправления DNS»:
- Нажать кнопку «Добавить».
- В диалоговом окне «Добавить зону перенаправления DNS» добавить имя зоны.
- В строке «Перенаправители зон» нажать кнопку «Добавить».
- В поле «Перенаправители зон» добавить IP-адрес сервера, для которого создается новая зона перенаправления:
- Нажать кнопку «Добавить». Зона перенаправления DNS будет добавлена:
Создание зоны переадресации DNS для домена AD в командной строке (следует указать IP-адрес удаленного DNS-сервера с параметром --forwarder):
# kinit admin
# ipa dnsforwardzone-add test.alt --forwarder=192.168.0.122 --forward-policy=first
Сервер проверит DNS-перенаправитель (перенаправители).
Это может занять некоторое время; пожалуйста, подождите...
Имя зоны: test.alt.
Активная зона: TRUE
Перенаправители зон: 192.168.0.122
Политика перенаправления: first
Если включить проверку DNSSEC на удаленном DNS-сервере нельзя, можно отключить DNSSEC на сервере FreeIPA. Для этого в файле /etc/bind/ipa-options-ext.conf следует привести параметр dnssec-validation к виду:
dnssec-validation no;
И перезапустить службу DNS:
# systemctl restart bind.service
Проверка настройки:
# dig dc1.test.alt +noall +answer
dc1.test.alt. 709 IN A 192.168.0.122
Настройка переадресации DNS в AD
В этом разделе описывается, как настроить переадресацию DNS в Active Directory для сервера FreeIPA.
Samba DC
Если используется dns_backend BIND9_DLZ добавить в файл /etc/bind/options.conf строки:
zone "example.test" {
type forward;
forwarders { 192.168.0.113; };
};
Перезапустить службу DNS:
# systemctl restart bind.service
Windows Server с AD
На AD сервере создать сервер условной пересылки для зоны IPA домена.
В графическом интерфейсе:
- Открыть «Диспетчер DNS» («DNS Manager»).
- В разделе «Серверы условной пересылки» («Conditional Forwarders») добавить новый сервер пересылки указав FQDN и IP-адрес сервера FreeIPA:
- Сохранить настройки.
В командной строке:
C:\> dnscmd 127.0.0.1 /ZoneAdd example.test /Forwarder 192.168.0.113
DNS Server 127.0.0.1 created zone example.test:
Command completed successfully
Проверка конфигурации DNS
Перед настройкой доверия необходимо убедиться, что серверы FreeIPA и AD могут разрешать себя и друг друга.
На сервере FreeIPA
Проверить наличие записей для работы сервисов IPA на DNS-сервере IPA.
- Запись отвечающая за работу сервисов Kerberos через UDP и LDAP через TCP:
# dig +short -t SRV _kerberos._udp.example.test 0 100 88 ipa.example.test. # dig +short -t SRV _ldap._tcp.example.test 0 100 389 ipa.example.test.
- В выводе команд должен быть отображен список всех серверов IPA.
- Запись отвечающая за имя Kerberos realm IPA домена:
# dig +short -t TXT _kerberos.example.test "EXAMPLE.TEST"
- Наличие записей для работы сервисов AD на DNS-сервере IPA:
# dig +short -t SRV _kerberos._tcp.dc._msdcs.test.alt 0 100 88 dc.test.alt. # dig +short -t SRV _ldap._tcp.dc._msdcs.test.alt 0 100 389 dc.test.alt.
Если в среде IPA используется встроенный DNS-сервер:
# ipa dns-update-system-records
Если в среде IPA не используется встроенный DNS-сервер. На сервере FreeIPA экспортировать записи DNS в файл:
# ipa dns-update-system-records --dry-run --out dns_records_file.nsupdate
На сервере AD
- На сервере AD запустить утилиту nslookup.exe для поиска служебных записей:
C:\>nslookup.exe > set type=SRV
- Введите доменное имя для служебных записей Kerberos через UDP и LDAP через TCP:
> _kerberos._udp.example.test _kerberos._udp.example.test SRV service location: priority = 0 weight = 100 port = 88 svr hostname = ipa.example.test ipa.example.test internet address = 192.168.0.113 > _ldap._tcp.example.test _ldap._tcp.example.test SRV service location: priority = 0 weight = 100 port = 389 svr hostname = ipa.example.test ipa.example.test internet address = 192.168.0.113
- Запись отвечающая за имя Kerberos realm IPA домена:
C:\>nslookup.exe > set type=TXT > _kerberos.example.test _kerberos.example.test text = "EXAMPLE.TEST"
Подготовка сервера FreeIPA к доверию
Установить необходимые пакеты:
# apt-get install freeipa-server-trust-ad
Прежде чем устанавливать доверительные отношения с AD, следует подготовить домен FreeIPA с помощью утилиты ipa-adtrust-install. Сконфигурировать сервер FreeIPA для доверительных отношений с AD:
# ipa-adtrust-install
The log file for this installation can be found in /var/log/ipaserver-adtrust-install.log
==============================================================================
This program will setup components needed to establish trust to AD domains for
the IPA Server.
This includes:
* Configure Samba
* Add trust related objects to IPA LDAP server
To accept the default shown in brackets, press the Enter key.
Configuring cross-realm trusts for IPA server requires password for user 'admin'.
This user is a regular system account used for IPA server administration.
admin password:
Записи DNS создаются автоматически, если FreeIPA был установлен с интегрированным DNS-сервером. Если FreeIPA установлен без встроенного DNS-сервера, ipa-adtrust-install выведет список служебных записей, которые нужно вручную добавить в DNS.
Далее скрипт сообщает, что файл /etc/samba/smb.conf уже существует и будет переписан:
WARNING: The smb.conf already exists. Running ipa-adtrust-install will break your existing samba configuration.
Do you wish to continue? [no]: yes
Скрипт спросит необходимо ли конфигурировать slapi-nis плагин для поддержки работы старых клиентов (SSSD < 1.9) с пользователем из доверенного домена:
Do you want to enable support for trusted domains in Schema Compatibility plugin?
This will allow clients older than SSSD 1.9 and non-Linux clients to work with trusted users.
Enable trusted domains support in slapi-nis? [no]: yes
При появлении запроса NetBIOS введите имя NetBIOS для домена FreeIPA или нажмите Enter, чтобы принять предложенное имя:
Trust is configured but no NetBIOS domain name found, setting it now.
Enter the NetBIOS name for the IPA domain.
Only up to 15 uppercase ASCII letters, digits and dashes are allowed.
Example: EXAMPLE.
NetBIOS domain name [EXAMPLE]:
Далее будет предложено запустить задачу генерации SID, чтобы создать SID для всех существующих пользователей:
Do you want to run the ipa-sidgen task? [no]: yes
Это ресурсоемкая задача, поэтому, если у вас много пользователей, можно запустить ее в другое время.
Done configuring CIFS.
=============================================================================
Setup complete
You must make sure these network ports are open:
TCP Ports:
* 135: epmap
* 138: netbios-dgm
* 139: netbios-ssn
* 445: microsoft-ds
* 1024..1300: epmap listener range
* 3268: msft-gc
UDP Ports:
* 138: netbios-dgm
* 139: netbios-ssn
* 389: (C)LDAP
* 445: microsoft-ds
See the ipa-adtrust-install(1) man page for more details
Перезапустить ipa:
# ipactl restart
Restarting Directory Service
Restarting krb5kdc Service
Restarting kadmin Service
Restarting named Service
Restarting httpd Service
Restarting ipa-custodia Service
Restarting pki-tomcatd Service
Restarting smb Service
Restarting winbind Service
Restarting ipa-otpd Service
Restarting ipa-dnskeysyncd Service
ipa: INFO: The ipactl command was successful
Используйте утилиту smbclient, чтобы убедиться, что Samba отвечает на аутентификацию Kerberos со стороны FreeIPA:
# smbclient -L ipa.example.test -k
lpcfg_do_global_parameter: WARNING: The "domain logons" option is deprecated
Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (Samba 4.14.10)
…
Настройка доверия
Сервер FreeIPA позволяет настроить три типа соглашений о доверии:
- одностороннее доверие — вариант по умолчанию. Одностороннее доверие позволяет пользователям и группам AD получать доступ к ресурсам в FreeIPA, но не наоборот. Домен FreeIPA доверяет лесу AD, но лес AD не доверяет домену FreeIPA;
- двустороннее доверие — позволяет пользователям и группам AD получать доступ к ресурсам в FreeIPA. Обратите внимание, что эта функция двустороннего доверия не позволяет пользователям IdM входить в системы Windows, а двустороннее доверие в IdM не дает пользователям никаких дополнительных прав по сравнению с решением одностороннего доверия в AD. Чтобы создать двустороннее доверие в команду следует добавить параметр --two-way=true;
- внешнее доверие — доверительные отношения между FreeIPA и доменом AD в разных лесах. В то время как доверие леса всегда требует установления доверия между FreeIPA и корневым доменом леса Active Directory, внешнее доверие может быть установлено от FreeIPA к домену в лесу. Рекомендуется только в том случае, если невозможно установить доверие леса между корневыми доменами леса по административным или организационным причинам. Чтобы создать внешнее доверие в команду следует добавить параметр --external=true.
В командной строке
Добавление двунаправленных доверительных отношений леса (Forest Trust) с AD:
# kinit admin
# ipa trust-add --type=ad test.alt --admin Administrator --password --two-way=true
Пароль администратора домена Active Directory:
…
При появлении запроса следует ввести пароль администратора домена Active Directory.
Чтобы увидеть список всех доверенных доменов из леса используйте следующую команду:
# ipa trustdomain-find test.alt
Имя домена: test.alt
Имя домена NetBIOS: TEST
Идентификатор безопасности домена: S-1-5-21-90931260-536030259-1550036695
Домен включён: True
---------------------------------
Количество возвращённых записей 1
---------------------------------
В веб-интерфейсе
- В веб-интерфейсе перейти на вкладку IPA-сервер.
- Выбрать пункт меню «Отношения доверия»→«Отношения доверия»:
- Нажать кнопку «Добавить».
- В диалоговом окне «Добавить отношение доверия» ввести имя домена Active Directory. В поля «Учетная запись» и «Пароль» указать учетные данные администратора AD:
- (Необязательно) Отметить пункт «Двустороннее отношение доверия», если нужно разрешить пользователям и группам AD доступ к ресурсам в FreeIPA. Однако двустороннее доверие в FreeIPA не дает пользователям никаких дополнительных прав по сравнению с односторонним доверием в AD. Оба решения считаются одинаково безопасными из-за настроек фильтрации SID доверия между лесами по умолчанию.
- (Необязательно) Отметить «Внешнее отношение доверия», если настраивается доверие с доменом AD, который не является корневым доменом леса AD.
- (Необязательно) По умолчанию сценарий установки доверия пытается определить соответствующий тип диапазона идентификаторов. Также можно явно задать тип диапазона идентификаторов.
- Нажать кнопку «Добавить».
Если доверие было успешно добавлено, сообщение об этом появится во всплывающем окне.
Проверка конфигурации Kerberos
Для проверки конфигурации Kerberos, следует проверить, возможно ли получить билет для пользователя FreeIPA и может ли пользователь FreeIPA запрашивать служебные билеты.
Запросить билет для пользователя AD:
kinit ivanov@test.alt
Password for ivanov@test.alt:
Запросить службу билетов в домене FreeIPA:
# kvno -S host ipa.example.test
host/ipa.example.test@EXAMPLE.TEST: kvno = 2
Если билет службы AD предоставлен, в списке билетов будет отображаться билет на предоставление билетов между областями (TGT) — krbtgt/IPA.DOMAIN@AD.DOMAIN:
klist
Ticket cache: KEYRING:persistent:0:krb_ccache_gyp3KvL
Default principal: ivanov@TEST.ALT
Valid starting Expires Service principal
07.02.2022 12:11:13 07.02.2022 22:10:36 host/ipa.example.test@EXAMPLE.TEST
renew until 07.02.2022 12:12:14
07.02.2022 12:12:14 07.02.2022 22:10:36 krbtgt/EXAMPLE.TEST@TEST.ALT
renew until 07.02.2022 12:12:14
07.02.2022 12:10:36 07.02.2022 22:10:36 krbtgt/TEST.ALT@TEST.ALT
renew until 08.02.2022 12:10:32
Проверка конфигурации доверия в FreeIPA
Проверка наличия записей для работы сервисов IPA на DNS-сервере IPA:
- Запись отвечающая за работу сервисов Kerberos через UDP и LDAP через TCP:
# dig +short -t SRV _kerberos._udp.dc._msdcs.example.test 0 100 88 ipa.example.test.
# dig +short -t SRV _ldap._tcp.dc._msdcs.example.test 0 100 389 ipa.example.test.
- В выводе этих команд должны быть перечислены все серверы FreeIPA, на которых была выполнена ipa-adtrust-install.
- Запись отвечающая за имя Kerberos realm IPA домена:
dig +short -t TXT _kerberos.example.test "EXAMPLE.TEST"
Проверка наличия записей для работы сервисов AD на DNS-сервере IPA.
- Запись отвечающая за работу сервисов Kerberos через UDP и LDAP через TCP:
# dig +short -t SRV _kerberos._udp.dc._msdcs.test.alt 0 100 88 dc.test.alt.
# dig +short -t SRV _ldap._tcp.dc._msdcs.test.alt 0 100 389 dc.test.alt.
Проверка конфигурации доверия в AD
- После выполнения команды ipa-adtrust-install должны появится записи отвечающие за работу сервисов MS DC Kerberos через UDP и LDAP через TCP:
C:\>nslookup.exe > set type=SRV > _kerberos._udp.dc._msdcs.example.test. _kerberos._udp.dc._msdcs.example.test SRV service location: priority = 0 weight = 100 port = 88 svr hostname = ipa.example.test > _ldap._tcp.dc._msdcs.example.test. _ldap._tcp.dc._msdcs.example.test SRV service location: priority = 0 weight = 100 port = 389 svr hostname = ipa.example.test ipa.example.test internet address = 192.168.0.113
- Проверить наличие записей для работы сервисов AD на DNS-сервере AD. Запись отвечающая за работу сервисов Kerberos через UDP и LDAP через TCP:
C:\>nslookup.exe > set type=SRV > _kerberos._udp.dc._msdcs.test.alt. _kerberos._udp.dc._msdcs.test.alt. SRV service location: priority = 0 weight = 100 port = 88 svr hostname = dc1.test.alt. dc1.domc.testc internet address = 192.168.0.122 > _ldap._tcp.dc._msdcs.test.alt. _ldap._tcp.dc._msdcs.test.alt. SRV service location: priority = 0 weight = 100 port = 389 svr hostname = dc1.dtest.alt. dc1.domc.testc internet address = 192.168.0.122
Проверка пользователей доверенного домена
Необходимо проверить имеют ли рабочие станции FreeIPA доступ к пользователям из доверенного домена.
На рабочей станции FreeIPA выполнить команду:
# getent passwd ivanov@test.alt
ivanov@test.alt:*:348001105:348001105:Иван Иванов:/home/test.alt/ivanov:
Где ivanov это пользователь из AD домена.
Назначить оболочку входа для пользователей из доверенного домена можно добавив на сервере IPA в файл /etc/sssd/sssd.conf следующую строчку:
[domain/example.test]
...
default_shell = /bin/bash
...
Вывод команды должен стать таким:
# systemctl restart sssd
# getent passwd ivanov@test.alt
ivanov@test.alt:*:348001105:348001105:Иван Иванов:/home/test.alt/ivanov:/bin/bash
Удаление доверия
В этом разделе описывается, как удалить доверие FreeIPA/AD на стороне FreeIPA.
В командной строке
- Удалить конфигурацию доверия из FreeIPA:
# ipa trust-del test.alt
- Удалить объект доверия из конфигурации Active Directory.
- Проверка удаления доверия:
# ipa trust-show test.alt ipa: ERROR: test.alt: отношение доверия не найден
В веб-интерфейсе
- В веб-интерфейсе перейти на вкладку IPA-сервер.
- Выбрать пункт меню «Отношения доверия»→«Отношения доверия».
- Выбрать объект доверия, которое требуется удалить.
- Нажать кнопку «Удалить»:
- В диалоговом окне «Удалить отношения доверия» нажать кнопку «Удалить»:
- Удалить объект доверия из конфигурации Active Directory.
Если доверие было успешно удалено, сообщение об этом появится во всплывающем окне.