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

Материал из ALT Linux Wiki

Системные требования

Требования к установке реплики такие же, как и для установки сервера FreeIPA (см. Системные требования к серверу FreeIPA).

Введение

Для установки реплики используется утилита ipa-replica-install. Реплики необходимо устанавливать по одной. Установка нескольких реплик одновременно не поддерживается.

Новую реплику можно установить:

  • на существующем клиенте FreeIPA путем преобразования клиента в реплику;
  • на машине, которая еще не зарегистрирована в домене FreeIPA.

В обеих этих ситуациях можно настроить реплику, добавив нужные параметры в команду ipa-replica-install.

Для возможности установки реплики должны быть установлены те же пакеты, что и при установке сервера (см. установка сервера FreeIPA):

# apt-get install freeipa-server freeipa-server-dns


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

При установке реплики на существующем клиенте FreeIPA можно выбрать один из двух способов, чтобы авторизовать установку.

Способ 1. Использовать учетные данные привилегированного пользователя:

  • пароль администратора FreeIPA будет запрошен в интерактивном режиме после запуска утилиты ipa-replica-install (поведение по умолчанию);
  • получить билет Kerberos администратора FreeIPA (по умолчанию пользователь admin) непосредственно перед запуском утилиты ipa-replica-install;
  • указать имя и пароль пользователя непосредственно в ipa-replica-install:
    # ipa-replica-install --principal admin --admin-password password
    

Способ 2. Включить узел в группу ipaservers (см. установка реплики). Членство в группе ipaservers предоставляет машине повышенные привилегии, аналогичные учетным данным администратора. Следовательно, на следующем этапе для запуска утилиты ipa-replica-install права администратора FreeIPA не потребуются.

Установка реплики в системе, не зарегистрированной в домене FreeIPA

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


При установке реплики в системе, которая еще не зарегистрирована в домене FreeIPA, утилита ipa-replica-install сначала регистрирует систему в качестве клиента, а затем устанавливает компоненты реплики. Для этого сценария также можно выбрать один из двух способов, чтобы авторизовать установку реплики.

Способ 1. Использовать учетные данные привилегированного пользователя, указав их непосредственно во время установки реплики:

# ipa-replica-install --principal admin --admin-password password

Способ 2. Использовать случайный пароль, сгенерированный на сервере FreeIPA (см. установка реплики).

Примечание: Сгенерированный пароль станет недействительным после регистрации машины в домене FreeIPA.


Параметры утилиты ipa-replica-install

По умолчанию реплика устанавливается на первый сервер FreeIPA, обнаруженный установщиком клиента. Чтобы установить реплику на определенный сервер, необходимо добавить следующие параметры в ipa-replica-install:

  • --server для указания полного доменного имени сервера (FQDN);
  • --domain для указания домена DNS FreeIPA.

При запуске без параметров ipa-replica-install настраивает только основные службы сервера. Чтобы установить дополнительные службы, например, DNS или центр сертификации (CA), следует добавить соответствующие параметры в ipa-replica-install:

  • ---setup-dns и --forwarder для установки реплики с DNS;
  • --setup-ca для установки реплики с интегрированным CA;
  • --dirsrv-cert-file, --dirsrv-pin, --http-cert-file и --http-pin для установки реплики без CA.

Полный список параметров, используемых для настройки реплики, см. man ipa-replica-install.

Установка реплики

Установка реплики на существующем клиенте FreeIPA, с использованием Host Keytab

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

Создать обратный адрес для реплики на DNS-сервере основного сервера. Для этого в веб-интерфейсе FreeIPA необходимо перейти в «Сетевые службы»→«DNS»→«Зоны DNS», выбрать в таблице запись домена (например, example.test.), в открывшемся списке открыть запись реплики (например, ipabackup), нажать на IP-адрес в поле A записи и в открывшемся окне на ссылку «Создать запись DNS»:

IPAReplicaDNS.png

  1. На любом узле FreeIPA получить билет Kerberos:
    $ kinit admin
    
  2. Добавить клиентскую машину в группу узлов ipaservers:
    $ ipa hostgroup-add-member ipaservers --hosts ipabackup.example.test
      Группа узлов: ipaservers
      Описание: IPA server hosts
      Узлы-участники: ipa.example.test, ipabackup.example.test
    -----------------------------------
    Количество добавленных участников 1
    -----------------------------------
    
  3. На клиенте запустить утилиту ipa-replica-install:
    # ipa-replica-install
    

Установка реплики с использованием случайного пароля

В этой процедуре реплика устанавливается на машину, которая еще не является клиентом FreeIPA. Для авторизации регистрации используется случайный пароль, действительный только для одной регистрации этого клиента.

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

  1. На любом сервере FreeIPA получить билет Kerberos:
    $ kinit admin
    
  2. Добавить внешнюю систему в качестве узла FreeIPA (сгенерированный случайный пароль будет использоваться для последующей установки реплики):
    $ ipa host-add hostb.example.test --random --ip-address=192.168.0.145
    ----------------------------------
    Добавлен узел "hostb.example.test"
    ----------------------------------
      Имя узла: hostb.example.test
      Случайный пароль: 2AaT0Ix8itDsYugdDGoRtBt
      Пароль: True
      Таблица ключей: False
      Managed by: hostb.example.test
    
  3. Добавить систему в группу узлов ipaservers:
    $ ipa hostgroup-add-member ipaservers --hosts hostb.example.test
      Группа узлов: ipaservers
      Описание: IPA server hosts
      Узлы-участники: ipa.example.test, ipabackup.example.test, hostb.example.test
    -----------------------------------
    Количество добавленных участников 1
    -----------------------------------
    
  4. На клиенте запустить утилиту ipa-replica-install, указав сгенерированный пароль в параметре --password (т.к. пароль часто содержит специальные символы, следует заключить его в одинарные кавычки):
    # ipa-replica-install  --password '2AaT0Ix8itDsYugdDGoRtBt'
    
    Пример команды установки реплики с интегрированными DNS и CA:
    # ipa-replica-install  --password '2AaT0Ix8itDsYugdDGoRtBt' --setup-ca --setup-dns --forwarder 192.168.0.151 --forwarder 8.8.8.8
    

Установка реплики с использованием учётных данных привилегированного пользователя

В этой процедуре реплика устанавливается на машину, которая еще не является клиентом FreeIPA. Для авторизации регистрации используются учётные данные привилегированного пользователя FreeIPA.

  1. Предварительно необходимо убедиться, что при настройке DNS в процессе инициализации FreeIPA была создана обратная зона DNS («Сетевые службы»→«DNS»→«Зоны DNS»):
    FreeIPA. Зоны DNS
    И в обратной зоне создана реверсивная запись для основного сервера 192.168.0.113:
    FreeIPA. Реверсивная запись для основного сервера
  2. В реверсивной зоне создать реверсивную запись для сервера репликации (кнопка «Добавить»):
    FreeIPA. Реверсивная запись для сервера репликации
    Реверсивную запись можно также создать, выполнив команду:
    # ipa dnsrecord-add 0.168.192.in-addr.arpa 145 --ptr-rec 'replica.example.test.'
    
  3. На клиенте запустить утилиту ipa-replica-install:
    # ipa-replica-install --principal admin --admin-password 12345678
    
Примечание: Пример запуска утилиты ipa-replica-install с указанием дополнительных параметров:
# ipa-replica-install --principal admin --admin-password 12345678 --setup-ca --setup-dns --forwarder 192.168.0.151 --forwarder 8.8.8.8


С интегрированным DNS и без CA

Здесь предполагается, что первый сервер был установлен в режиме CA-less (см. Установка сервера в режиме CA-less). В этом случае можно предоставить необходимые сертификаты вручную.

На сервере, где создавались сертификаты для сервера:

  1. Создать noise файл, заполненный случайными числами:
    # head -c20 /dev/random > ~/test_ca/noise.txt
    
  2. Создать запрос на сертификат (в CN необходимо указать имя хоста будущей реплики, на запрос «Enter value for the key identifier fields», следует ввести вывод команды echo $SKID):
    # SKID="0x`openssl rand -hex 20`"
    # echo $SKID
    0xa30f48abf89afae77e481c712d234ff0e312d44e
    # certutil -d ~/test_ca -R -s CN=ipabackup.example.test,O=IPA -o /tmp/replicacert.req -k rsa -g 2048 -z ~/test_ca/noise.txt -f ~/test_ca/password.txt -a --extSKID
    
    Generating key.  This may take a few moments...
    
    Adding Subject Key ID extension.
    Enter value for the key identifier fields,enter to omit:
    0xa30f48abf89afae77e481c712d234ff0e312d44e
    Is this a critical extension [y/N]? 
    n
    
  3. Подписать запрос на сертификат:
    # export CERT_SERIAL=$(($CERT_SERIAL + 1))
    # certutil -d ~/test_ca -C -c "CA" -i /tmp/replicacert.req -o /tmp/replicacert.pem -m $CERT_SERIAL -v 120 -f ~/test_ca/password.txt -1 -5 -a
    
    В ответ на запросы команды дать следующие ответы:
      2 - Key encipherment
      9 - done
      Is this a critical extension [y/N]? n
      1 - SSL Server
      9 - done
      Is this a critical extension [y/N]? n
    
  4. Импортировать полученный сертификат (на запрос команды, следует ввести пароль к закрытому ключу):
    # certutil -d ~/test_ca -A -i /tmp/replicacert.pem -n Replica-Cert -a -t ,,
    Enter Password or Pin for "NSS Certificate DB":
    
  5. Экспортировать сертификат в PKCS#12:
    # pk12util -o ~/test_ca/replicacert1.p12 -n Replica-Cert1 -d ~/test_ca -k ~/test_ca/password.txt -w ~/test_ca/password.txt
    pk12util: PKCS12 EXPORT SUCCESSFUL
    
  6. Скопировать сертификат в формате PKCS#12 на будущую реплику.

Настройка репликации LDAP-каталога:

# ipa-replica-install \
    --dirsrv-cert-file ~/test_ca/replicacert.p12 \
    --dirsrv-pin SECret.123 \
    --http-cert-file ~/test_ca/replicacert.p12 \
    --http-pin SECret.123 \
    --no-pkinit

….
The ipa-replica-install command was successful

С интегрированными DNS и CA в системе, не зарегистрированой в домене FreeIPA

Пример, настройки репликации LDAP-каталога:

# ipa-replica-install --password='2AaT0Ix8itDsYugdDGoRtBt'
Configuring client side components
This program will set up IPA client.
Version 4.9.7

Discovery was successful!
Client hostname: hostb.example.test
Realm: EXAMPLE.TEST
DNS Domain: example.test
IPA Server: ipa.example.test
BaseDN: dc=example,dc=test

The ipa-client-install command was successful

The ipa-replica-install command was successful
Примечание: Сначала будет установлен клиент, а затем реплика.


Проверка реплики

После создания реплики можно проверить, реплицирует ли реплика данные должным образом:

  1. Создать пользователя на новой реплике:
    $ ipa user-add test_user
    
  2. Убедиться, что пользователь виден на другой реплике:
    $ ipa user-show test_user
    

После настройки репликации посмотреть топологию можно в веб-интерфейсе FreeIPA («IPA-сервер» → «Топология» → «Topology Graph»):

FreeIPA. Topology Graph

Отладочная информация

При установке реплики FreeIPA отладочная информация добавляется в следующие файлы журнала на реплике:

  • /var/log/ipareplica-install.log
  • /var/log/ipareplica-conncheck.log
  • /var/log/ipaclient-install.log
  • /var/log/httpd2/error_log
  • var/log/dirsrv/slapd-INSTANCE-NAME/access
  • /var/log/dirsrv/slapd-INSTANCE-NAME/errors
  • /var/log/ipaserver-install.log

При установке реплики FreeIPA отладочная информация также добавляется в следующие файлы журнала на сервере FreeIPA:

  • /var/log/httpd2/error_log
  • var/log/dirsrv/slapd-INSTANCE-NAME/access
  • /var/log/dirsrv/slapd-INSTANCE-NAME/errors

Удаление реплики

Администратор FreeIPA может удалить реплику FreeIPA из топологии. Дополнительные сведения см. в Удаление сервера FreeIPA.