Версия для печати
Пятница, 17 ноября 2017 11:23

Разворачиваем FreeIPA сервер

Автор
Оцените материал
(13 голосов)

Продолжаем тему импортозамещения в IT. Актуально не только для гос. учреждений, но и для тех организаций которые считают что цены на MS Windows неадекватно завышены, а функционал для их задач избыточен. Здесь и приходит на помощь сообщество свободного программного обеспечения.

Ранее речь шла о замене MS Active Directory на свободный аналог Samba DC. Это решение почти полностью заменяет (с некоторыми ограничениями) MS AD. Хорошо работает, если в сети остаются много ПК под управлением Windows. Но как и MS AD практически не работает с клиентами Unix (Linux). Если стоит задача полностью в сети избавиться от Microsoft, то одно из решений использовать сервер идентификации и авторизации FreeIPA.

Все работы будут производится на ОС Rosa Cobalt (он же CentOS 7, он же RedHat 7)

В данном примере мы рассмотрим конфигурацию из трех серверов IPA (два в центральном офисе и один в удаленном). А также создадим доверительные отношения между доменом IPA и доменом MS Active Directory.

Исходные данные:

  • dc01.rpn.loc - первый сервер в корневом домене
    Имя сервера - dc01
    FQDN - dc01.rpn.loc
    IP - 192.168.20.105
    Домен IPA (REALM)- RPN.LOC
  • dc02.rpn.loc - второй сервер в корневом домене
    Имя сервера - dc02
    FQDN - dc02.rpn.loc
    IP - 192.168.20.106
    Домен IPA (REALM)- RPN.LOC
  • dc.01.rpn.loc - сервер в удаленном офисе
    Имя сервера - dc
    FQDN - dc.01.rpn.loc
    IP - 192.168.20.107
    Домен IPA (REALM)- RPN.LOC
  • addc.win.loc - контроллер домена Active Directory в центральном офисе
    Имя сервера - addc
    FQDN - adsc.win.loc
    IP - 192.168.20.108
    Домен AD (REALM)- WIN.LOC

Важно. В общем случае имя DNS домена и REALM в домене IPA могут быть различными. Но в этом случае невозможно будет настроить доверительные отношения между IPA и MS Active Directory (более подробно об этом речь пойдет ниже). Нам же нужно будет затем настроить доверительные отношения между доменами. Поэтому имена доменов (DNS и REALM) мы делаем одинаковыми.

Первый сервер FreeIPA

  1. Устанавливаем ОС в режиме минимальной установки
  2. Подключаем необходимые репозитарии (на Rosa Cobalt правим файл /etc/yum.repos.d/rels.repo, на CentOS подключаем репозитарий EPEL)
    В CentOS 8 (RH 8) включаем необходимые компоненты:
    yum module enable idm:DL1
    yum distro-sync
    
  3. Обновляем систему.
  4. Если в локальной сети не используется ipv6, то отключаем его.
  5. Добавляем в файл /etc/hosts данные нашего сервера:
    192.168.20.105    dc01.rpn.loc    dc01
    
  6. Устанавливаем необходимые пакеты:
    yum install bind bind-utils bind-dyndb-ldap ipa-server ipa-client ipa-server-dns ipa-server-trust-ad samba-client samba-winbind-clients
    
    Все зависимые пакеты установятся автоматически.
    Небольшая хитрость (глюк), касающаяся CentOS 8.
    По умолчанию устанавливаются (на момент написания статьи) FreeIPA Server 4.8.0-13 и Samba 4.10.
    Но если в дальнейшем планируется использовать доверительные отношения с доменом Active Directory, то в данной связке ничего не получиться. Дело в том, что в составе FreeIPA Server идет модуль, заточенный для работы с Samba 4.9.1 и Samba в составе FreeIPA просто не может стартовать. Поэтому сразу откатываем версию самбы до 4.9.1:
    yum downgrade samba
    
  7. Замыкаем запросы DNS на этот же сервер. Приводим файл /etc/resolv.conf к виду:
  8. search rpn.loc
    nameserver 192.168.20.105
    
  9. Открываем в файерволе необходимые порты:
    firewall-cmd --permanent --add-port={53,80,88,135,138,139,389,443,445,464,636,1024-1300,3268,8443}/tcp
    firewall-cmd --permanent --add-port={53,88,123,138,139,389,445,464}/udp
    firewall-cmd --reload
    
  10. На всякий случай в файл /etc/named.conf вносим изменения:
    listen-on port 53 { any; }
    //listen-on-v6 port 53 { ::1; };
    allow-query { any; }
    dnssec-validation no;
    
    "dnssec-validation no" необходимо, что бы заработал форвардинг на внешний DNS. Если внешний DNS поддерживает dnssec, то можно ничего не менять.
  11. Запускаем DNS сервер
    systemctl start named
    
  12. Запускаем установку сервера IPA:
    ipa-server-install --realm=RPN.LOC
    
    Здесь мы задаем адрес имя домена IPA. Все остальные параметры вводим в интерактивном режиме
    • Отвечаем yes на вопрос о необходимости настройки интегрированного DNS сервера
    • Подтверждаем имя хоста
    • Подтверждаем имя домена
    • Вводим и подтверждаем пароль административного пользователя
    • Вводим подтверждаем пароль пользователя admin (основной администратор сервера IPA)
    • Подтверждаем необходимость настроить пересылку DNS запросов
    • Первым сервером в список форварда заносится адрес, записанный в resolv.conf. Подтверждаем, что нужно добавить еще внешний DNS сервер
    • Вводим адрес внешнего DNS. На повторный запрос просто нажимаем Enter
    • Отвечаем yes на вопрос о необходимости создания обратной зоны.
    • Подтверждаем создание обратной зоны для адреса нашего сервера.
    • Подтверждаем имя создаваемой зоны.
    • Выводится список настроенных нами параметров. Подтверждаем и продолжаем установку
    • Начинается достаточно длительный процесс установки. Если все нормально, то в конце выдаст сообщение о завершении установки и необходимости открыть порты в файрволе (их мы уже открыли)
  13. Проверяем установку:
    #kinit admin
    Password for Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.
    #klist
    
    Если все нормально, то увидим данные пользователя admin
  14. Запрещаем сервис времени chronyd
    systemctl stop chronyd
    systemctl disable chronyd
    
  15. Если у нас в сети уже есть сервер времени, настраиваем сервер NTP на то, что бы он забирал время с нашего внутреннего сервера времени. Для этого в файле /etc/ntp.conf комментируем все сервера времени и добавляем свой. Перезапускаем и проверяем сервер времени:
    systemctl restart ntpd
    ntpq -p
    
  16. На всякий случай перезагружаем сервер.
  17. Добавляем в DNS запись о нашем сервере времени:
    # kinit admin
    ipa dnsrecord-add rpn.loc _ntp._udp --srv-priority=0 --srv-weight=100 --srv-port=123 --srv-target=dc01.rpn.loc.
    
    Если команда выдает "ERROR: отсутствуют изменения для выполнения", то это значит - соответствующая запись уже была добавлена в зону DNS.
  18. После всех этих процедур станет доступна вэб-консоль администрирования сервера IPA, находящаяся по адресу: https://dc01.rpn.loc/ipa/ui/
  19. Если что-то пошло не так, то прежде чем повторить установку сервера нужно запустить команду очистки предыдущей установки
    ipa-server-install --uninstall
    
  20. В итоге мы получили работающий сервер аутентификации и авторизации FreeIPA. Но как и в случае с Active Directory необходим второй и последующие сервера для обеспечения отказоустойчивости и производительности.

Устанавливаем сервер репликации FreeIPA

  1. Выполняем шаги 1-10 раздела "Первый сервер FreeIPA" с поправками на новое имя сервера и IP адрес. В настройках сервера DNS указываем адрес первого сервера FreeIPA
  2. В файл /etc/hosts кроме устанавливаемого сервера вносим так же данные нашего первого сервера FreeIPA
  3. Файл /etc/resolv.conf оставляем без изменений (указываем в качестве DNS сервера установленный первый сервер FreeIPA).
  4. Файл /etc/named.conf оставляем без изменений.
  5. Для установки сервера репликации в первую очередь устанавливаем ipa клиент:
    ipa-client-install --domain=rpn.loc --server=dc01.rpn.loc --realm=RPN.LOC --principal=admin --password=PASSWORD --enable-dns-updates
    
    После выполнения этой операции хост dc02.rpn.loc должен появиться в веб-интерфейсе FreeIPA. Переходим к настройке репликации LDAP-каталога.
  6. Останавливаем и запрещаем автозапуск сервера chronyd:
    systemctl stop chronyd
    systemctl disable chronyd
    
  7. Вносим в файл /etc/ntp.conf данные нашего первого контроллера:
    server dc01.rpn.loc
    
    Остальные сервера точного времени запрещаем.
  8. Запускаем ntpd и разрешаем его автозапуск:
    systemctl start ntpd
    systemctl enable ntpd
    
  9. После этого выполняем собственно установку репликации LDAP-каталога:
    ipa-replica-install
    
  10. Добавляем в DNS второй NTP сервер:
    kinit admin
    ipa dnsrecord-add rpn.loc _ntp._udp --srv-priority=0 --srv-weight=100 --srv-port=123 --srv-target=dc02.rpn.loc.
    
  11. Устанавливаем репликацию DNS зон:
    ipa-dns-install
    
  12. После окончания установки перезагружаем сервер
  13. Устанавливаем репликацию CA:
    ipa-ca-install
    
  14. Исправляем файл /etc/ntp.conf (убираем левые сервера времени и назначаем наш первый контроллер в качестве единственного сервера времени)
  15. Если что-то пошло не так, то выполняем:
    ipa-server-install --uninstall
    
    Устраняем ошибки и повторяем все начиная с п.5
  16. После настройки и репликации контроллеров посмотреть топологию можно в веб-интерфейсе FreeIPA (IPA Server -> Topology -> Topology Graph).

Установка сервера FreeIPA в филиале.

Прежде чем устанавливать сервер в филиале несколько слов о теории и принципе организации территориально распределенной структуре FreeIPA.

FreeIPA всегда должен иметь собственный основной домен, например example.com или ipa.example.com, который не должен использоваться совместно с другой системой управления идентификацией на основе Kerberos, поскольку в противном случае на уровне системы Kerberos будут возникать конфликты. Например, если оба FreeIPA и Active Directory используют один и тот же домен, доверительные отношения никогда не будут возможны, а также невозможно автоматическое обнаружение клиентского сервера через DNS SRV-записи.

Клиентские машины не обязательно должны находиться в том же домене, что и FreeIPA-серверы. Например, FreeIPA может быть доменом ipa.example.com а клиенты в домене clients.example.com , просто нужно иметь четкое сопоставление между доменом DNS и областью Kerberos. Стандартным методом для создания сопоставления являются записи TXT DNS. (FreeIPA DNS добавляет их автоматически.)

Домен Active Directory - сложная система. Он включает в себя логически структурированный набор ресурсов (машины, пользователи, службы и т. Д.), Которые принадлежат потенциально нескольким доменам DNS. Несколько доменов DNS могут быть частью одного домена AD (где домен AD по определению совпадает с областью AD Kerberos). Несколько доменов AD можно объединить в лес. Самый первый домен AD, созданный в лесу, называется корневым доменом леса . Верхнее имя основного домена DNS домена AD используется как имя домена Kerberos AD.

Домен IPA представляет собой сложную систему. Он включает в себя логически структурированный набор ресурсов (машины, пользователи, службы и т.д.), Которые принадлежат потенциально нескольким доменам DNS. В отличие от Active Directory у нас есть один домен / область IPA для развертывания, а для Active Directory этот единственный домен IPA выглядит как отдельный лес Active Directory. Active Directory считает основной домен DNS, используемый в качестве основы для области Kerberos FreeIPA, как корневой домен леса для домена FreeIPA (например, корневой домен леса для Active Directory).

Домен FreeIPA может быть размещен в любом домене DNS, который не имеет прямого совпадения с любым доменом в лесу Active Directory. Это может быть, например, ipa.example.com , если эта зона DNS не занята каким-либо другим доменом AD в том же лесу. Это может быть ipa.ad.example.com также, это может быть например .net

Доверие между двумя лесами Active Directory всегда устанавливается как доверие между лесными корневыми доменами этих лесов. Если домен FreeIPA использует ipa.ad.example.com в качестве основной зоны DNS, мы будем говорить об установлении доверительного отношения к лесу между лесом Active Directory ad.example.com и доменом FreeIPA ipa.ad.example.com . Если существует несколько зон DNS, принадлежащих домену IPA, рекомендуется размещать записи _kerberos TXT, указывающие на имя области FreeIPA в каждом из них для правильного обнаружения сетевых ресурсов клиентами FreeIPA.

Когда вы устанавливаете первый сервер FreeIPA, вы всегда определяете имя области Kerberos для этой установки. При выборе названия области выполните следующие правила:

  • Имя области не должно конфликтовать с любым другим существующим именем области Kerberos (например, имя, используемое Active Directory).
  • Имя области должно быть в верхнем регистре ( EXAMPLE.COM ) версии основного DNS-имени домена ( example.com ).
  • Клиенты FreeIPA из нескольких разных доменов DNS ( пример .com , example .net , example .org ) могут быть объединены в единую область Kerberos ( ПРИМЕР .COM )
  • Одна установка FreeIPA всегда представляет собой единую область Kerberos.

Серверы и клиенты FreeIPA могут распространяться в разных географических точках. Механизм местоположения DNS позволяет разделить топологию на отдельные области, называемые местоположениями (отображение в географические области). Клиенты, использующие записи DNS SRV (например, SSSD) в определенном месте, затем используют серверы из того же места, что и первые (ближайшие серверы FreeIPA), и серверы из разных мест в качестве резервной копии (удаленные серверы FreeIPA).

При планировании развертывания важно иметь в виду, что функции DNS в FreeIPA требуют, по крайней мере, одного DNS-сервера в каждом месте.

FreeIPA работает в реплицированной среде с несколькими мастер-серверами. Количество серверов зависит от нескольких факторов:

  • Сколько записей в системе?
  • Сколько у вас разных географически распределенных центров обработки данных?
  • Насколько активны приложения и клиенты в отношении аутентификации и поиска LDAP.

Как правило, рекомендуется иметь по меньшей мере 2-3 реплики в каждом центре обработки данных. В каждом центре обработки данных должна быть по крайней мере одна реплика с дополнительными услугами FreeIPA, такими как PKI или DNS, если они используются. Обратите внимание, что не рекомендуется иметь более 4 соглашений о репликации на каждую реплику. В следующем примере показана рекомендуемая инфраструктура:

Топология FreeIPA             Репликация FreeIPA

Можно приступить к установки сервера в филиале.

  1. В оснастке управления FreeIPA создаем два новых местоположения (Сервера IPA -> IPA Locations): "centr" и "filial01"
  2. Заходим в созданный "centr" и добавляем два установленных ранее сервера FreeIPA.
  3. Высветится предупреждение, что необходимо перестартовать добавленные сервера. Выполняем поочередно на каждом из серверов:
    ipactl restart
    
  4. Сервер в филиале будет принадлежать DNS зоне (субдомену)"01.rpn,loc". В оснастке управления DNS сервером создаем новую зону "01.rpn.loc"
  5. В настройках зоны параметр "Динамическое обновление" переключаем на значение "Верно". Ставим галочку в параметре "разрешить синхронизацию PTR". Нажимаем "Сохранить".
  6. В зоне "rpn.loc" создаем запись типа "A", соответствующую нашему серверу в филиале (dc.01.rpn.loc с ip адресом 192.168.20.107) (т.е. необходимо добавить запись с именем "dc.01")
  7. Повторяем шаги с 1 по 14 раздела "Устанавливаем сервер репликации FreeIPA".
  8. Назначаем серверу в филиале местоположение "filial01"
    kinit admin
    ipa server-mod dc.01.rpn.loc --location=filial01
    ipactl restart
    
  9. Добавляем репликацию на второй сервер центрального офиса:
    [root@dc~]#ipa topologysegment-add
                        Имя суффикса: domain
                        Левый узел: dc02.rpn.loc
                        Правый узел: dc.01.rpn.loc
                        Имя сегмента [dc02.rpn.loc-to-dc.01.rpn.loc]: (Оставляем без изменений)
    
    Этим мы создаем репликацию LDAP между серверами dc02.rpn.loc и dc.01.rpn.loc
    То же самое проводим для CA (имя суффикса вводим "CA")
    Более наглядно и может быть быстрее можно сделать в вэб-интерфейсе управления FreeIPA (Сервер IPA -> Topology Graph)

Установка клиента FreeIPA на рабочую станцию и подключение к серверу.

Работы будут проводится на рабочей станции ROSA Cobalt WS. На CentOS и RedHat действия аналогичные.

Рабочая станция будет находится в филиале и принадлежать домену 01.centr.rpn.

  1. Устанавливаем имя компьютера:
    hostnamectl set-hostname ws.01.rpn.loc
    
  2. Настраиваем DNS на сервер в этом домене (dc.01.rpn.loc)
  3. Устанавливаем необходимые пакеты:
    yum install ipa-client ipa-client bind-utils zip
    
  4. Останавливаем и запрещаем автозапуск сервиса chronyd.
  5. Запускаем установку клиента:
    ipa-client-install --domain=rpn.loc --server=dc.01.rpn.loc --realm RPN.LOC --principal=admin --password=PASSWORD --mkhomedir --enable-dns-updates
    
  6. После этого можно входить на компьютер под учетной записью пользователя FreeIPA.
  7. Если машина до этого была в других доменах или есть проблемы со входом пользователей рекомендуется очистить кэш sssd:
    # systemctl stop sssd
    # rm -f /var/lib/sss/db/*
    # rm -f /var/lib/sss/mc/*
    # systemctl start sssd
    

Создание доверительных отношений с MS ActiveDirectory

Вводные данные:

  • Сервер IPA:
    Имя сервера: dc01.rpn.loc
    IP адрес: 192.168.20.105
    Домен IPA: rpn.loc
    Realm: RPN.LOC
  • Сервер AD:
    Имя сервера: addc.win.loc
    IP адрес: 192.168.20.2
    Домен AD: win.loc

Настраиваем доверительные отношения.

  1. Настраиваем DNS на обоих серверах, для того что бы они знали друг о друге:
    • На сервере IPA:
      • В параметрах зоны "rpn.loc" добавляем адрес DNS сервера AD (192.168.20.2)
      • Создаем зону перенаправления DNS "win.loc". В Параметре "Перенаправление зон" указываем адрес DNS сервера AD
    • На сервере АД:
      • В свойствах зоны "win.loc" переходим на вкладку "Передача зон" и либо разрешаем передачу зон на любой сервер, либо указываем IP адрес сервера IPA
      • В разделе "Сервер условной пересылки" создаем новый сервер. В поле DNS-домен вводим домен IPA сервера (rpn.loc). В поле IP адреса вводим адрес сервера IPA.
    Небольшое отступление в теорию. На практике встречается достаточно редко, но упомянуть об этом стоит.
    Если AD являетя поддоменом IPA (т.е. AD домен - addomain.ipadomain.example.com, IPA домен - ipadomain.example.com)
    В этом случае на IPA сервере необходимо добавить записи A и NS для AD домена:
    # ipa dnsrecord-add ipa_domain ad_hostname.ad_netbios --a-ip-address=ad_ip_address
    # ipa dnsrecord-add ipa_domain ad_netbios --ns-hostname=ad_hostname.ad_netbios
    
    В домене AD можно использовать один из двух способов.
    Первый: настраивается глобальная переадресация для пересылки DNS запросов в домен IPA:
    C:\> dnscmd 127.0.0.1 /ResetForwarders ipa_ip_address /Slave
    
    Второй: настроить зону DNS для репликации master-slave. Затем данные для этой зоны будут периодически копироваться с главного (сервера IPA) на подчиненный (сервер AD).
    Для этого сначала явно разрешите передачу зоны на сервере IPA:
    # ipa dnszone-mod ipa_domain --allow-transfer=ad_ip_address
    
    Затем добавляем DNS зону IPA в домен AD:
    C:\> dnscmd 127 0.0.1 /ZoneAdd ipa_domain /Secondary ipa_ip_address
    
    Следующий экзотический вариант: домен IPA является субдоменом AD (домен IPA - ipadomain.addomain.example.com, домен AD - addomain.example.com)
    В этом случае домене AD необходимо добавить записи A и NS для домена IPA:
    C:\> dnscmd 127.0.0.1 /RecordAdd ad_domain ipa_hostname.ipa_domain A ipa_ip_address
    C:\> dnscmd 127.0.0.1 /RecordAdd ad_domain ipa_domain NS ipa_hostname.ipa_domain
    
  2. Настраиваем сервер IPA:
    ipa-adtrust-install --add-sids --netbios-name=ipa_netbios -a mypassword1
    
    Скрипт спросит необходимо ли настраивать slapi-nis плагин для поддержки работы старых клиентов (SSSD < 1.9) с пользователем из доверенного домена: Отвечаем YES
    На IPA сервере добавлен хотя бы один пользователь (администратор сервера), поэтому скрипт предложит сгенерировать SID для всех существующих пользователей и групп: Отвечаем YES
  3. Настраиваем Samba на сервере IPA:
    # net conf setparm global 'dedicated keytab file' FILE=/etc/samba/samba.keytab
    # systemctl restart ipa
    
    Проверим проходит ли Samba аутентификацию Kerberos со стороны IPA сервера:
    # kinit admin
    # smbclient -L dc01.rpn.loc -k
    lp_load_ex: changing to config backend registry
    Domain=[RPN] OS=[Windows 6.1] Server=[Samba 4.4.4]
    
    	Sharename       Type      Comment
    	---------       ----      -------
    	IPC$            IPC       IPC Service (Samba 4.4.4)
    Domain=[RPN] OS=[Windows 6.1] Server=[Samba 4.4.4]
    
    	Server             Comment
    	---------          -------
    
    	Workgroup          Master
    	---------          -------
    
  4. Проверка конфигурации DNS:
    • На сервере Active Directory:
      Проверим наличие записей для работы сервисов IPA на DNS-сервере AD.
      Запись отвечающая за работу сервисов Kerberos через UDP и LDAP через TCP:
      C:\>nslookup.exe
      > set type=SRV
      
      > _kerberos._udp.rpn.loc.
      _kerberos._udp.rpn.loc.       SRV service location:
          priority                = 0
          weight                  = 100
          port                    = 88
          svr hostname   = dc01.rpn.loc.
      
      > _ldap._tcp.rpn.loc.
      _ldap._tcp.rpn.loc       SRV service location:
          priority                = 0
          weight                  = 100
          port                    = 389
          svr hostname   = dc01.rpn.loc.
      
      Запись отвечающая за имя Kerberos realm IPA домена:
      C:\>nslookup.exe
      > set type=TXT
      > _kerberos.rpn.loc.
      _kerberos.rpn.loc.        text =
      
          "RPN.LOC"
      
      После выполнения команды ipa-adtrust-install должны появится записи отвечающие за работу сервисов MS DC Kerberos через UDP и LDAP через TCP:
      C:\>nslookup.exe
      > set type=SRV
      > _kerberos._udp.dc._msdcs.rpn.loc.
      _kerberos._udp.dc._msdcs.rpn.loc.        SRV service location:
          priority = 0
          weight = 100
          port = 88
          svr hostname = dc01.rpn.loc.
      > _ldap._tcp.dc._msdcs.rpn.loc.
      _ldap._tcp.dc._msdcs.rpn.loc.        SRV service location:
          priority = 0
          weight = 100
          port = 389
          svr hostname = dc01.rpn.loc.
      
      Далее проверим наличие записей для работы сервисов AD на DNS-сервере AD.
      Запись отвечающая за работу сервисов Kerberos через UDP и LDAP через TCP:
      C:\>nslookup.exe
      > set type=SRV
      > _kerberos._udp.dc._msdcs.win.loc.
      _kerberos._udp.dc._msdcs.win.loc. 	SRV service location:
          priority = 0
          weight = 100
          port = 88
          svr hostname = addc.win.loc.
      > _ldap._tcp.dc._msdcs.win.loc.
      _ldap._tcp.dc._msdcs.win.loc. 	SRV service location:
          priority = 0
          weight = 100
          port = 389
          svr hostname = addc.win.loc.
      
    • На сервере IPA
      Проверим наличие записей для работы сервисов IPA на DNS-сервере IPA.
      Запись отвечающая за работу сервисов Kerberos через UDP и LDAP через TCP:
      # dig +short -t SRV _kerberos._udp.rpn.loc.
      0 100 88 dc01.rpn.loc.
      
      # dig +short -t SRV _ldap._tcp.rpn.loc.
      0 100 389 dc01.rpn.loc.
      
      Запись отвечающая за имя Kerberos realm IPA домена:
      dig +short -t TXT _kerberos.rpn.loc.
      "RPN.LOC"
      
      После выполнения команды ipa-adtrust-install должны появится записи отвечающие за работу сервисов MS DC Kerberos через UDP и LDAP через TCP:
      # dig +short -t SRV _kerberos._udp.dc._msdcs.rpn.loc.
      0 100 88 dc01.rpn.loc.
      
      # dig +short -t SRV _ldap._tcp.dc._msdcs.rpn.loc.
      0 100 389 dc01.rpn.loc.
      
      Далее проверим наличие записей для работы сервисов AD на DNS-сервере IPA. 4. Запись отвечающая за работу сервисов Kerberos через UDP и LDAP через TCP:
      # dig +short -t SRV _kerberos._udp.dc._msdcs.win.loc.
      0 100 88 addc.win.loc.
      
      # dig +short -t SRV _ldap._tcp.dc._msdcs.win.loc.
      0 100 389 addc.win.loc.
      
      Внимание! Если запись _kerberos._udp.dc._msdcs.source-win.loc. не доступна проверьте _kerberos._tcp.dc._msdcs.source-win.loc.
  5. Добавление двунаправленных доверительных отношений леса (Forest Trust) с AD:
    • Если мы имеем пароль администратора домена Active Directory:
      # ipa trust-add --type=ad ad_domain --admin Administrator --password
      
      Будет выдан запрос пароля администратора домена Active Directory после чего установятся доверительные отношения между доменами.
      По умолчанию устанавливается одностороннее доверие. Для установления двухстороннего доверия необходимо добавить параметр"--two-way=true"
      В документации сказано, что устанавливаются двух сторонние отношения между доменами. Но таким способом почему то мне их установить не удалось на ОС "ROSA Cobalt". Постоянно операция завершалась словами "Внутренняя ошибка" без всяких коментариев (на CentOS доверия установились без каких-либо проблем). Пришлось пойти немного другим путем. Выполняем команду:
      # ipa trust-add --type=ad ad_domain --admin Administrator --password --two-way=true --external=yes
      
      Важно заметить, что в этом случае устанавливаются доверительные отношения типа "внешние не транзетивные" Транзетивное доверие типа "лес" мне таким способом установить не удалось.
    • Если мы не имеем пароль администратора Active Directory, то придется работать совместно с администратором Windows. Здесь как раз нам и пригодится пароль, который мы задали в п.2 этого раздела.
      Выполняем в AD:
      Задаем имя домена IPA:
      Задаем имя домена IPA
      Задаем тип доверия: "Доверие леса"
      Задаем тип доверия
      Указываем, что отношения должны быть двухстороннии:
      Двухсторонние отношения доменов
      Назначаем создание доверия только в локальном домене.
      Создание доверительных отношений только в локальном домене.
      Задаем уровень проверки подлинности: "Проверка подлинности в лесу":
      Уровень проверки подлинности
      Задаем пароль для отношения доверия:
      Пароль для отношения доверия
      В следующих окнах читаем информацию и нажимаем далее, пока не дойдем до подтверждения исходящего доверия. Отвечаем "Нет".
      Подтверждение исходящего доверия
      Далее отвечаем "Нет" на запрос подтверждения входящего доверия:
      Подтверждение входящего доверия
      В итоговом окне нажимаем "Готово" и переходим на сервер IPA.

      Выполняем на сервере IPA:
      # kinit admin
      Password for Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.:
      # ipa trust-add --type=ad --trust-secret
      
      Задаем имя домена, с которым хотим установить доверительные отношения - WIN.LOC
      Будет запрос пароля, который мы установили ранее.
      Результат выполнения команды будет следующий:
      Имя области: WIN.LOC
      Общий секрет доверия:
      ----------------------------------------------------------------------------
      Добавлено доверие Active Directory  для области "win.loc"
      ----------------------------------------------------------------------------
         Имя области: win.loc
         Имя домена NetBIOS: WIN
         Идентификатор безопасности домена: S-1-5-21-900071258-1322473252-773024338
         Направление доверия: Доверяющий лес
         Тип доверия: Домен Active Directory
         Статус доверия: Ожидание подтверждения от удаленной стороны
      
      Возвращаемся на сервер AD и проводим завершающие действия.
      В оснастке " Домены и доверия" открываем свойства нашего домена и переходим на вкладку "Отношения доверия":
      Отношения доверия
      Открываем свойства созданного доверия и переходим на вкладку "Маршрутизация суффикса имен". Если суффиксы еще не создались, то жмем "Обновить" и получаем суффиксы нашего домена IPA:
      Маршрутизация суффикса имен
      Везде жмем "Ok" и переходим на сервер IPA.
      Проверяем состояние доверия:
      # ipa trust-show "win.loc"
         Имя области: win.loc
         Имя домена NetBIOS: WIN
         Идентификатор безопасности домена: S-1-5-21-900071258-1322473252-773024338
         Направление доверия: Доверяющий лес
         Тип доверия: Домен Active Directory
      
      Видим, что контроллер домена отчитался об успешном создании доверительных отношений с доменом AD.
    • Проверки доверительных отношений
      Запрашиваем тикет для IPA пользователя:
      # kinit admin
      
      Запрашиваем service ticket для сервиса из IPA домена:
      # kvno -S host dc.rpn.loc
      host/Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.: kvno = 2
      
      Запрашиваем service ticket сервиса из AD домена:
      # kvno -S cifs addc.win.loc
      cifs/Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.: kvno = 2
      
      Если запрос service ticket для сервиса из AD домена прошел успешно, то у нас должен появиться междоменный ticket-granting ticket, его имя krbtgt/Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.:
      # klist
      Ticket cache: KEYRING:persistent:0:0
      Default principal: Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.
      
      Valid starting       Expires              Service principal
      14.02.2017 15:43:46  15.02.2017 01:43:46  cifs/Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.
      14.02.2017 15:43:46  15.02.2017 15:42:48  krbtgt/Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.
      14.02.2017 15:43:25  15.02.2017 15:42:48  host/Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.
      14.02.2017 15:42:53  15.02.2017 15:42:48  krbtgt/Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.
      

      Проверка пользователя доверенного домена.
      В файл /etc/sssd/sssd.conf вносим строчку, отвечающую за оболочку по умолчанию
      [domain/rpn.loc]
      ...
      default_shell = /bin/bash
      ...
      
      Проверим имеет ли доступ к пользователям из доверенного домена рабочие станции IPA.
      # getent passwd user_ad@win
      Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.:*:328601108:328601108:Тестовый пользователь  AD:/home/win.loc/user_ad:/bin/bash
      
      Для того, что бы пользователь из AD мог авторизоваться на ПК из IPA на сервере IPA в файл /etc/krb5.conf нужно добавить пару строк:
      [realms]
      RPN.LOC = {
      ....
        auth_to_local = RULE:[1:$1@$0](^.*@WIN.LOC$)s/@WIN.LOC/@win.loc/
        auth_to_local = DEFAULT
      }
      
      После этого пользователь с учетными данными из Active Directory получает возможность авторизоваться на ПК, управляемые IPA.
  6. Разрешаем доступ пользователям Active Directory на защищенные ресурсы IPA.
    Прежде чем пользователи из доверенного домена смогут получить доступ к защищенным ресурсам IPA, они должны быть явно отображены в группах IPA. Отображение выполняется в два этапа:
    1. Добавление пользователей и групп из доверенного домена во внешнюю группу в IPA.
    Внешняя группа служит контейнером для ссылки на доверенных пользователей и групп домена по их идентификаторам безопасности.
    2.Сопоставление внешней группы с существующей группой POSIX в IPA. В этой группе POSIX будет назначен правильный идентификатор группы (gid), который будет использоваться как группа по умолчанию для всех входящих доверенных пользователей домена, сопоставленных с этой группой
    • Создаем внешнюю группу в IPA для доверенного домена:
      # ipa group-add --desc='ad_domain admins external map' ad_admins_external --external
      
    • Создаем POSIX группу для внешней группы ad_admins_external
      # ipa group-add --desc='ad_domain admins' ad_admins
      
    • Добавляем пользователей из доверенного домена во внешнюю группу:
      # ipa group-add-member ad_admins_external --external 'win\Domain Admins'
      
      При запросе членов группы оставляем пустой ответ и нажимаем Enter
      ПРИМЕЧАНИЕ. Поскольку аргументы в приведенной выше команде содержат обратную косую черту, пробелы и т. д., обязательно нужно использовать кавычки (').
    • Добавляем внешнюю группу в POSIX группу:
      # ipa group-add-member ad_admins --groups ad_admins_external
      
    Создаем на сервере IPA тестовую шару Samba:
    # net conf setparm 'share' 'comment' 'Trust test share'
    # net conf setparm 'share' 'read only' 'no'
    # net conf setparm 'share' 'valid users' 'ad_admins_sid'
    # net conf setparm 'share' 'path' '/path/to/share'
    
    ad_admins_sid необходимо заменить на SID из домена AD. Посмотреть его можно командой:
    # wbinfo -n 'ad_netbios\Domain Admins'
    
    Или в оснастке AD "Пользователи и компьютеры" в свойствах соответствующего объекта.
    Устанавливаем протоколы для клиента Samba:
    # net conf setparm global 'client min protocol' CORE
    # net conf setparm global 'client max protocol' SMB2_02
    
    После этого клиент из Active Directory может получить доступ на созданный нами ресурс.

Создание аккаунта для доступа к LDAP

Некоторые сервисы использующие LDAP требуют предварительно настроенной учетной записи. Использование обычной учетной записи пользователя предпочтительней, но не всегда это целесообразно делать. Можно сделать системную учетную запись следующим образом на сервере FreeIPA используя пароль Directory :

# ldapmodify -x -D 'cn=Directory Manager' -W
dn: uid=system,cn=sysaccounts,cn=etc,dc=rpn,dc=loc
changetype: add
objectclass: account
objectclass: simplesecurityobject
uid: ldapaccount
userPassword: secret123
passwordExpirationTime: 20380119031407Z
nsIdleTimeout: 0

^D

Замените пароль на более сложный. Параметр passwordExpirationTime: 20380119031407Z означает, что срок действия пароля неограничен Причина использования такой учетной записи, а не создание обычной учетной записи пользователя IPA, и использование этой системы заключается в том, что системная учетная запись существует только для привязки к LDAP. Это не настоящий пользователь POSIX, он не может войти в систему и ему не принадлежат файлы. У этого пользователя нет особых прав и он не может ничего записывать какие-либо данные на сервер LDAP FreeIPA, только права на чтение.

Дополнительная информация

Прочитано 66616 раз Последнее изменение Пятница, 01 апреля 2022 15:29
Андрей Иванов

Последнее от Андрей Иванов

Авторизуйтесь, чтобы получить возможность оставлять комментарии