FreeIPA/Интеграция с AD

Материал из ALT Linux Wiki
Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.


Примечание: В примере для создания доверительных отношений будут использоваться следующие данные:
  • Домен 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:

  1. Перейти на вкладку «Сетевые службы».
  2. В выпадающем меню выбрать «DNS» «Зоны перенаправления DNS»:
    Вкладка «Сетевые службы»
  3. Нажать кнопку «Добавить».
  4. В диалоговом окне «Добавить зону перенаправления DNS» добавить имя зоны.
  5. В строке «Перенаправители зон» нажать кнопку «Добавить».
  6. В поле «Перенаправители зон» добавить IP-адрес сервера, для которого создается новая зона перенаправления:
    Добавление зоны перенаправления DNS
  7. Нажать кнопку «Добавить». Зона перенаправления DNS будет добавлена:
    Зоны перенаправления 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. Рекомендуется включить DNSSEC на удаленном DNS-сервере.

Если включить проверку 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 домена.

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

  1. Открыть «Диспетчер DNS» («DNS Manager»).
  2. В разделе «Серверы условной пересылки» («Conditional Forwarders») добавить новый сервер пересылки указав FQDN и IP-адрес сервера FreeIPA:
    DNS Manager
  3. Сохранить настройки.

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

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.

  1. Запись отвечающая за работу сервисов 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.
  2. Запись отвечающая за имя Kerberos realm IPA домена:
    # dig +short -t TXT _kerberos.example.test
    "EXAMPLE.TEST"
    
  3. Наличие записей для работы сервисов 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.
    
Примечание: Если два первых шага не вернули все ожидаемые записи, обновите конфигурацию DNS, добавив недостающие записи.

Если в среде IPA используется встроенный DNS-сервер:

# ipa dns-update-system-records

Если в среде IPA не используется встроенный DNS-сервер. На сервере FreeIPA экспортировать записи DNS в файл:

# ipa dns-update-system-records --dry-run --out dns_records_file.nsupdate
Отправить запрос на обновление DNS на DNS-сервер с помощью утилиты nsupdate и файла dns_records_file.nsupdate.


На сервере AD

  1. На сервере AD запустить утилиту nslookup.exe для поиска служебных записей:
    C:\>nslookup.exe
    > set type=SRV
    
  2. Введите доменное имя для служебных записей 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
    
  3. Запись отвечающая за имя 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.

Внимание! Учетная запись пользователя, используемая при создании доверия (аргумент опции --admin), должна быть членом группы Domain Admins. Имя учетной записи должно быть на английском языке.


Чтобы увидеть список всех доверенных доменов из леса используйте следующую команду:

# ipa trustdomain-find test.alt
  Имя домена: test.alt
  Имя домена NetBIOS: TEST
  Идентификатор безопасности домена: S-1-5-21-90931260-536030259-1550036695
  Домен включён: True
---------------------------------
Количество возвращённых записей 1
---------------------------------

В веб-интерфейсе

  1. В веб-интерфейсе перейти на вкладку IPA-сервер.
  2. Выбрать пункт меню «Отношения доверия»→«Отношения доверия»:
    Отношения доверия
  3. Нажать кнопку «Добавить».
  4. В диалоговом окне «Добавить отношение доверия» ввести имя домена Active Directory. В поля «Учетная запись» и «Пароль» указать учетные данные администратора AD:
    Диалоговое окно «Добавить отношение доверия»
  5. (Необязательно) Отметить пункт «Двустороннее отношение доверия», если нужно разрешить пользователям и группам AD доступ к ресурсам в FreeIPA. Однако двустороннее доверие в FreeIPA не дает пользователям никаких дополнительных прав по сравнению с односторонним доверием в AD. Оба решения считаются одинаково безопасными из-за настроек фильтрации SID доверия между лесами по умолчанию.
  6. (Необязательно) Отметить «Внешнее отношение доверия», если настраивается доверие с доменом AD, который не является корневым доменом леса AD.
  7. (Необязательно) По умолчанию сценарий установки доверия пытается определить соответствующий тип диапазона идентификаторов. Также можно явно задать тип диапазона идентификаторов.
  8. Нажать кнопку «Добавить».

Если доверие было успешно добавлено, сообщение об этом появится во всплывающем окне.

Доверие было успешно добавлено

Проверка конфигурации 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:

  1. Запись отвечающая за работу сервисов 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.
  2. Запись отвечающая за имя Kerberos realm IPA домена:
    dig +short -t TXT _kerberos.example.test
    "EXAMPLE.TEST"
    

Проверка наличия записей для работы сервисов AD на DNS-сервере IPA.

  1. Запись отвечающая за работу сервисов 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.
    


Внимание! Если запись _kerberos._udp.dc._msdcs.test.alt. не доступна проверьте _kerberos._tcp.dc._msdcs.test.alt.


Проверка конфигурации доверия в AD

Примечание: Необходимо войти в систему с правами администратора.


  1. После выполнения команды 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
    
  2. Проверить наличие записей для работы сервисов 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.

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

  1. Удалить конфигурацию доверия из FreeIPA:
    # ipa trust-del test.alt
    
  2. Удалить объект доверия из конфигурации Active Directory.
  3. Проверка удаления доверия:
    # ipa trust-show test.alt
    ipa: ERROR: test.alt: отношение доверия не найден
    

В веб-интерфейсе

  1. В веб-интерфейсе перейти на вкладку IPA-сервер.
  2. Выбрать пункт меню «Отношения доверия»→«Отношения доверия».
  3. Выбрать объект доверия, которое требуется удалить.
  4. Нажать кнопку «Удалить»:
    Отношения доверия
  5. В диалоговом окне «Удалить отношения доверия» нажать кнопку «Удалить»:
    Диалоговое окно «Удалить отношения доверия»
  6. Удалить объект доверия из конфигурации Active Directory.

Если доверие было успешно удалено, сообщение об этом появится во всплывающем окне.