Установка вторичного сервера FreeIPA на CentOS и настройка репликации

Обновлено Обновлено: Опубликовано Опубликовано:

Используемые термины: FreeIPACentOS.

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

Процедура выполняется по следующему плану:

  1. Подключение вторичного сервера к FreeIPA в качестве клиента.
  2. Изменение принадлежности к группе для узла вторичного сервера.
  3. Настройка репликации.

Наша инструкция подойдет для Rocky Linux или CentOS 7.

Подготовка вторичного сервера

Для работы FreeIPA принципиально важны правильные настройки времени, DNS и брандмауэра.

DNS

Клиентские компьютеры (а первое, что мы делаем, это настраиваем наш вторичный сервер в качестве клиента FreeIPA) должны быть настроены на использование DNS-сервера, который мы сконфигурировали на сервере FreeIPA во время его установки. В сетевых настройках указываем использовать наш сервер ipa для разрешения имен:

  1. Пример настройки сети в CentOS / Rocky Linux
  2. Настройка сети с помощью netplan (Debian, Ubuntu).
  3. В устаревающих системах на основе deb настройка выполняется в файле /etc/network/interfaces (опция dns-nameservers) или /etc/resolv.conf (опция nameserver).

После внесения изменений мы должны перезагрузить сетевые службы и, желательно, убедиться, что используется нужный DNS-сервер (с помощью команды nslookup или dig).

Время

Установим часовой пояс:

timedatectl set-timezone Europe/Moscow

* в данном примере используется московское время.

Затем устанавливаем и запускаем утилиту для синхронизации времени chrony.

yum install chrony

systemctl enable chronyd --now

Имя сервера

Для корректной работы вторичного сервера, необходимо, задать ему полное доменное имя (FQDN). Выполняем команду:

hostnamectl set-hostname ipa-server-2.dmosk.local

* где ipa-server-2.dmosk.local — имя сервера, которое будет использоваться.

Брандмауэр

Необходимо открыть несколько портов, которые используются службами FreeIPA:

firewall-cmd --permanent --add-port=53/{tcp,udp} --add-port={80,443}/tcp --add-port={88,464}/{tcp,udp} --add-port=123/udp --add-port={389,636}/tcp

firewall-cmd --reload

* где:

  • 53 — запросы DNS.
  • 80 и 443 — http и https для доступа к веб-интерфейсу управления.
  • 88 и 464 — kerberos и kpasswd.
  • 123 — синхронизация времени.
  • 389 и 636 — ldap и ldaps соответственно.

SELinux

Отключаем SELinux командами:

setenforce 0

sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config

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

Устанавливаем freeipa-server. Команды немного отличаются в зависимости от версии CentOS.

а) для Rocky Linux / CentOS 8:

dnf install @idm:DL1

yum install ipa-server ipa-server-dns

б) для CentOS 7:

yum install ipa-server ipa-server-dns

* предполагается, что мы будем реплицировать данные каталога + DNS, поэтому мы установим также пакет ipa-server-dns.

После установки пакетов ipa-server и ipa-server-dns можно переходить к подключению к основному серверу.

Выполним конфигурирование клиента командой:

ipa-client-install --mkhomedir --domain=dmosk.local --realm=DMOSK.LOCAL --server=ipa-server.dmosk.local

Если в нашей сети всего один FreeIPA, система предупредит, что автообнаружение серверов для аварийного переключения не может работать. Соглашаемся и отвечаем yes:

If you proceed with the installation, services will be configured to always access the discovered server for all operations and will not fail over to other servers in case of failure.
Proceed with fixed values and no DNS discovery? [no]: yes

Система отобразить настройки LDAP в консоли, например:

Client hostname: ipa-server-2.dmosk.local
Realm: DMOSK.LOCAL
DNS Domain: DMOSK.LOCAL
IPA Server: ipa-server.dmosk.local
BaseDN: dc=dmosk,dc=local

Если эти настройки верны, отвечаем положительно на запрос Continue to configure the system with these values?

Continue to configure the system with these values? [no]: yes

Система спросит, от какого пользователя производить настройку — вводим admin:

User authorized to enroll computers: admin

... и пароль:

Password for admin@DMOSK.LOCAL:

Начнется процесс конфигурации — после его завершения:

...
Configured /etc/openldap/ldap.conf
NTP enabled
Configured /etc/ssh/ssh_config
Configured /etc/ssh/sshd_config
Configuring DMOSK.LOCAL as NIS domain.
Client configuration complete.
The ipa-client-install command was successful

... сразу проверим, что клиент может получать билет от сервера:

kinit admin

...  и вводим пароль от пользователя admin.

Проверяем, что билет получен:

klist

Ответ должен быть, примерно, следующим:

Ticket cache: KCM:0
Default principal: admin@DMOSK.LOCAL

Valid starting       Expires              Service principal
09/20/2021 16:23:05  09/21/2021 15:25:28  krbtgt/DMOSK.LOCAL@DMOSK.LOCAL

Клиент настроен. Удаляем полученный билет:

kdestroy

И переходим к добавлению нового узла в группу серверов IPA.

Настройка на сервере FreeIPA

На стороне сервера IPA нам необходимо добавить узел для нашего вторичного сервера в группу ipaservers. Это можно сделать в веб-интерфейсе (раздел Идентификация - Группы - Группы узлов). Но мы рассмотрим пример для работы из командной строки.

Авторизовываемся в консоли от администратора:

kinit admin

Добавляем наш хост в группу ipaservers:

ipa hostgroup-add-member ipaservers --hosts ipa-server-2.dmosk.local

Мы должны увидеть что-то на подобие:

  Host-group: ipaservers
  Description: IPA server hosts
  Member hosts: ipa-server.dmosk.local, ipa-server-2.dmosk.local
-------------------------
Number of members added 1

Теперь можно переходить к настройке репликации.

Настройка репликации

Репликация будет настраиваться в несколько шагов:

  • Настройка DNS для корректного разрешения имен в момент конфигурирования реплики.
  • Настройка репликации каталога.
  • Репликация центра сертификации.

Рассмотрим их выполнение подробнее.

1. Добавление записей в DNS

На сервере создаем запись PTR в обратной зоне DNS. Это можно сделать через веб-интерфейс в разделе Сетевые службы - DNS - Зоны DNS.

А также, в момент установки у нас еще нет корректно работающей DNS на вторичном узле, но система может требовать разрешения имени хоста — добавим нужную запись в hosts:

vi /etc/hosts

...
192.168.0.15 ipa-server.dmosk.local
192.168.0.16 ipa-server-2.dmosk.local

* предполагается, что у нас хост ipa-server с адресом 192.168.0.15 и ipa-server-2 с 192.168.0.16.

2. Репликация каталога

Выполняем команду:

ipa-replica-install --setup-dns --no-forwarders

Мы увидим ошибку, что невозможно разрешить обратное имя нашего хоста, либо игнорируем ее:

Lookup failed: Preferred host ipa-server-2.dmosk.local does not provide DNS.
Reverse DNS resolution of address 192.168.0.16 (ipa-server-2.dmosk.local) failed. Clients may not function properly. Please check your DNS setup. (Note that this check queries IPA DNS directly and ignores /etc/hosts.)
Continue? [no]: yes

,,, либо возвращаемся к вопросу добавления записи PTR — возможно, была допущена ошибка.

Ждем — в конечном итоге мы увидим:

...
The ipa-replica-install command was successful

3. Установка ipa-ca

После настройки репликации мы увидим предупреждение:

WARNING: The CA service is only installed on one server (ipa-server.dmosk.local).
It is strongly recommended to install it on another server.
Run ipa-ca-install(1) on another master to accomplish this.

Оно означает, что роль центра сертификации пока находится только на первом сервере. Рекомендуется ее также установить на вторичный сервер. Для этого запускаем команду:

ipa-ca-install

Дожидаемся ее выполнения. Мы должны увидеть:

...
Done configuring certificate server (pki-tomcatd).
Updating DNS system records

После настройки репликации

Наш вторичный сервер готов к работе и может выполнять запросы. Нам нужно провести несколько проверок и изменить сетевые настройки для серверов и клиентов.

Рассмотрим процесс подробнее.

1. Проверка работы DNS.

С любого компьютера в сети выполняем dns-запрос к новому серверу, например:

nslookup ipa-server.dmosk.local 192.168.0.16

* в данном примере мы делаем запрос адреса для первичного сервера через DNS вторичного. 

Система должна вернуть ответ на подобие:

Server:        192.168.0.16
Address:    192.168.0.16#53

Name:    ipa-server.dmosk.local
Address: 192.168.0.15

2. Проверяем состояние работы контроллеров.

Для этого есть утилита ipa-healthcheck. Ставим ее командой:

yum install ipa-healthcheck

Для общего анализа вводим:

ipa-healthcheck --failures-only

Для проверки репликации:

ipa-healthcheck --source ipahealthcheck.ds.replication --failures-only

3. Смена DNS.

И так, у нас дополнительный сервер IPA и DNS. Стоит добавить вторичный сервер, как альтернативный DNS на серверах и клиентах.

Делать новый сервер первичным или вторичным — дело десятое. Главное, чтобы клиенты могли отправлять соответствующие запросы.

Примеры настроек сети для различных систем:

  • CentOS / Rocky Linux.
  • Debian, Ubuntu с помощью netplan.
  • В устаревающих системах на основе deb настройка выполняется в файле /etc/network/interfaces (опция dns-nameservers) или /etc/resolv.conf (опция nameserver).

Также если в нашей сети используется DHCP, добавляем для раздачи новый DNS.

Возможные ошибки

Рассмотрим некоторые ошибки, с которыми сталкивался я при работе с репликой FreeIPA.

No DNA range defined

С данной ошибкой мы, скорее всего, столкнемся при проверке ipa-healthcheck на вторичном сервере. Полный текст:

... No DNA range defined. If no masters define a range then users and groups cannot be created.

Причина: данное предупреждение нам говорит о том, что на вторичном сервере не задан диапазон DNA, который определяет начальный и конечный идентификаторы создаваемых объектов (UIDs). Таким образом, вторичный сервер не сможет использоваться для создания новых объектов.

Решение: задаем данный диапазон. Это можно сделать с мастера.

Выполняем команду:

ipa-replica-manage dnarange-show

Она нам покажет, какие на данный момент заданы диапазоны, например:

ipa-server.dmosk.local: 849400000-849599999
ipa-server-2.dmosk.local: No range set

* как видим, для нашего нового сервера ipa-server-2.dmosk.local диапазон не задан.

Посмотреть начальное значение и максимальное для количества идентификатором можно командой:

ipa idrange-find

Разбиваем наш диапазон на два:

ipa-replica-manage dnarange-set ipa-server.dmosk.local 849400000-849499999

ipa-replica-manage dnarange-set ipa-server-2.dmosk.local 849500000-849599999

Готово — теперь оба наших сервера могут выдавать идентификаторы для объектов.

PKINIT certificate request failed

Ошибка появляется в момент настройки CA на реплике на одном из этапов команды ipa-ca-install. Полный текст:

PKINIT certificate request failed: Certificate issuance failed (CA_UNREACHABLE: Server at https://ipa-server-2.dmosk.local/ipa/json failed request, will retry: 4016 (Failed to authenticate to CA REST API).)
Failed to configure PKINIT
Full PKINIT configuration did not succeed
The setup will only install bits essential to the server functionality
You can enable PKINIT after the setup completed using 'ipa-pkinit-manage'

При этом, сама настройка CA отрабатываем корректно.

Для решения выполним команду, которую нам рекомендует мастер настройки:

ipa-pkinit-manage enable

Topology does not allow server

При попытке удалить сервер из реплики командой ipa-replica-manage del мы можем получить ошибку:

Removal of 'servername1.domain.foo' leads to disconnected topology in suffix 'domain':
Topology does not allow server servername1.domain.foo to replicate with servers:
    servername2.domain.foo

Причина: топология репликации построена через удаляемый сервер и если мы его удалим, то репликация станет невозможной. 

Решение: на портале управления IPA переходим в раздел IPA-сервер - Топология - Topology Graph. Мы увидим визуальное предстваление, как постоен процесс репликации. Необходимо перестроить топологию таким образом, чтобы удаляемый сервер не играл в ней центральную роль.

Удаление узла

Если у нас появилась необходимость удалить один из серверов FreeIPA, мы должны удалить настройку реплики и после уже можно удалять саму роль FreeIPA.

Список текущих серверов можно посмотреть командой:

ipa-replica-manage list

Для удаления реплики вводим (на любом хосте FreeIPA, кроме удаляемого):

ipa-replica-manage del ipa-server.dmosk.local

* указываем, что мы отключаем реплику для сервера ipa-server.dmosk.local.

Теперь удаляем настройку для FreeIPA (на хосте, который нужно удалить):

ipa-server-install --uninstall -U

Готово.

На клиентских компьютерах не забываем убрать из списка DNS удаленный сервер.

Дополнительные настройки

Рассмотрим настройки, которые не являются обязательными, но могут оказаться полезными.

Создание SRV для сервиса синхронизации времени

Данная запись не является обязательной и не создается по умолчанию ни при поднятии мастера, ни при настройке реплики. Давайте это исправим:

ipa dnsrecord-add dmosk.local _ntp._udp --srv-priority=0 --srv-weight=100 --srv-port=123 --srv-target=ipa-server.dmosk.local.

ipa dnsrecord-add dmosk.local _ntp._udp --srv-priority=0 --srv-weight=100 --srv-port=123 --srv-target=ipa-server-2.dmosk.local.

* в данном примере мы создадим 2 записи типа SRV для двух наших серверов.

Смена диапазона идентификаторов

Выше мы уже говорили про диапазоны идентификаторов, которые задействуются при создании объектов. По умолчанию, создается диапазон с большими значениями. На практике, могут встретиться приложения, которые не смогут работать с учетными записями, имеющими данные большие значения.

Сменить настройки диапазона нельзя — система выдаст ошибку. Но мы можем создать новый диапазон и использовать его.

Создаем диапазон:

ipa idrange-add "New Range" --base-id=50000 --range-size=20000

* в данном примере мы создаем диапазон с названием New Range, первый идентификатор равен 50000, всего идентификаторов 20000.

Теперь мы можем назначить значения из нового диапазона для наших серверов:

ipa-replica-manage dnarange-set ipa-server.dmosk.local 50000-59999

ipa-replica-manage dnarange-set ipa-server-2.dmosk.local 60000-69999

Смена CRL generation master

Для инфраструктуры FreeIPA характерно использование только одного мастера по отзыву сертификатов (Certificate Revocation List). Проверить статус работы сервиса можно командой:

ipa-crlgen-manage status

Если мы видим:

CRL generation: enabled

... то данный сервер является мастером.

Если мы хотим перенести данную роль на другой сервер, то сначала мы отключаем crlgen на текущем сервере:

ipa-crlgen-manage disable

После разрешаем ее на новом сервере:

ipa-crlgen-manage enable

# CentOS # Безопасность # Серверы
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет