FreeIPA/Установка сервера FreeIPA: различия между версиями

Материал из ALT Linux Wiki
Строка 168: Строка 168:
# certutil -d ~/test_ca -S -n "CA" -s "CN=Certificate Authority" -x -t CT,,C -1 -2 -5 -m $CERT_SERIAL -v 120 -z ~/test_ca/noise.txt -f ~/test_ca/password.txt --extSKID</source>
# certutil -d ~/test_ca -S -n "CA" -s "CN=Certificate Authority" -x -t CT,,C -1 -2 -5 -m $CERT_SERIAL -v 120 -z ~/test_ca/noise.txt -f ~/test_ca/password.txt --extSKID</source>
В ответ на запросы команды дать следующие ответы (на запрос «Enter value for the key identifier fields», следует ввести вывод команды {{cmd|echo $SKID}}):
В ответ на запросы команды дать следующие ответы (на запрос «Enter value for the key identifier fields», следует ввести вывод команды {{cmd|echo $SKID}}):
<source lang="text">     0 - Digital Signature
<source lang="text"> 0 - Digital Signature
      1 - Non-repudiation
  1 - Non-repudiation
      5 - Cert signing key
  5 - Cert signing key
      9 - done
  9 - done
      Is this a critical extension [y/N]? y
  Is this a critical extension [y/N]? y
      Is this a CA certificate [y/N]?  y
  Is this a CA certificate [y/N]?  y
      Enter the path length constraint, enter to skip [<0 for unlimited path] 0
  Enter the path length constraint, enter to skip [<0 for unlimited path] 0
      Is this a critical extension [y/N]? y
  Is this a critical extension [y/N]? y
      Enter value for the key identifier fields,enter to omit: 0xfa012b30b9407b0750b786ff5ed9f49ce3998622
  Enter value for the key identifier fields,enter to omit: 0xfa012b30b9407b0750b786ff5ed9f49ce3998622
      Is this a critical extension [y/N]? n
  Is this a critical extension [y/N]? n
      5 - SSL CA
  5 - SSL CA
      6 - S/MIME CA
  6 - S/MIME CA
      7 - Object Signing CA
  7 - Object Signing CA
      9 - done
  9 - done
      Is this a critical extension [y/N]? n </source>
  Is this a critical extension [y/N]? n </source>
Создать noise файл, заполненный случайными числами:
Создать noise файл, заполненный случайными числами:
<source lang="text" highlight="1"># head -c20 /dev/random > ~/test_ca/noise.txt</source>
<source lang="text" highlight="1"># head -c20 /dev/random > ~/test_ca/noise.txt</source>
Строка 196: Строка 196:
Enter value for the key identifier fields,enter to omit:
Enter value for the key identifier fields,enter to omit:
0xb17caf72b46288bcc9c887c89894dc917e06f724
0xb17caf72b46288bcc9c887c89894dc917e06f724
Is this a critical extension [y/N]?
Is this a critical extension [y/N]?  
n
n
</source>
</source>
Подписать запрос на сертификат:
Подписать запрос на сертификат:
<source lang="text" highlight="1-2"># export CERT_SERIAL=$(($CERT_SERIAL + 1))
<source lang="text" highlight="1-2"># export CERT_SERIAL=$(($CERT_SERIAL + 1))
# certutil -d ~/test_ca -C -c "CA" -i /tmp/servercert.req -o /tmp/servercert.pem -m $CERT_SERIAL -v 120 -f ~/test_ca/pwdfile.txt -1 -5 -a</source>
# certutil -d ~/test_ca -C -c "CA" -i /tmp/servercert.req -o /tmp/servercert.pem -m $CERT_SERIAL -v 120 -f ~/test_ca/password.txt -1 -5 -a</source>
В ответ на запросы команды дать следующие ответы:
В ответ на запросы команды дать следующие ответы:
<source lang="text">     2 - Key encipherment
<source lang="text"> 2 - Key encipherment
      9 - done
  9 - done
      Is this a critical extension [y/N]? n
  Is this a critical extension [y/N]? n
      1 - SSL Server
  1 - SSL Server
      9 - done
  9 - done
      Is this a critical extension [y/N]? n</source>
  Is this a critical extension [y/N]? n</source>
   
   
{{Note|Можно также создать отдельные сертификаты для серверов HTTP и Directory.}}
{{Note|Можно также создать отдельные сертификаты для серверов HTTP и Directory.}}

Версия от 06:44, 2 февраля 2022

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


Подготовка сервера

Установка пакетов

Установить необходимые пакеты:

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

Установка сервера

С интегрированным DNS, с интегрированным CA в качестве корневого CA

Плюсы установки сервера FreeIPA со встроенным DNS:

  • можно автоматизировать большую часть обслуживания и управления записями DNS, используя инструменты FreeIPA. Например, записи DNS SRV создаются во время установки, а затем автоматически обновляются.
  • можно иметь стабильное соединение с остальной частью Интернета, настроив глобальные серверы пересылки во время установки сервера FreeIPA. Глобальные серверы пересылки также полезны для доверительных отношений с Active Directory.
  • можно настроить обратную зону DNS, чтобы электронные письма из вашего домена не считались спамом почтовыми серверами за пределами домена FreeIPA.

Ограничения установки сервера FreeIPA со встроенным DNS:

  • FreeIPA DNS не предназначен для использования в качестве DNS-сервера общего назначения. Некоторые расширенные функции DNS не поддерживаются.
Примечание: Если в команде ipa-server-install в конфигурации по умолчанию, не указаны CA параметры, например, --external-ca или --ca-less, сервер FreeIPA устанавливается с интегрированным CA.


Интерактивная установка

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

# ipa-server-install

На первый вопрос, нужно ли сконфигурировать DNS-сервер BIND ответить утвердительно:

Do you want to configure integrated DNS (BIND)? [no]: yes

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

Примечание: Чтобы принять значение по умолчанию, необходимо нажать Enter.
Server host name [ipa.example.test]:
Please confirm the domain name [example.test]:
Please provide a realm name [EXAMPLE.TEST]:
Внимание! Эти имена нельзя изменить после завершения установки.


Задать пароль для Directory Manager (cn=Directory Manager):

Directory Manager password:
Password (confirm):

Задать пароль для администратора FreeIPA (будет создана учетная запись admin с правами администратора):

IPA admin password:
Password (confirm):

Для настройки DNS на первый запрос, нужно ли настроить перенаправления, ответить да:

Do you want to configure DNS forwarders? [yes]:

Система предложит сначала использовать DNS-серверы из настроек сети (если они прописаны) — если это устроит, оставить значение по умолчанию:

Do you want to configure these servers as DNS forwarders? [yes]:

Также можно добавить дополнительные серверы:

Enter an IP address for a DNS forwarder, or press Enter to skip: 8.8.8.8
Примечание: Этот шаг необходим в том случае, если предполагается использовать внешний сервер для обработки запросов службы имен DNS.


Оставить значение по умолчанию для попытки найти обратные зоны:

Do you want to search for missing reverse zones? [yes]
Примечание: Использование FreeIPA для управления обратными зонами не является обязательным. Для этой цели можно использовать внешнюю службу DNS.


Далее система выведет информацию о конфигурации и попросит ее подтвердить:

The IPA Master Server will be configured with:
Hostname:       ipa.example.test
IP address(es): 192.168.0.113
Domain name:    example.test
Realm name:     EXAMPLE.TEST

The CA will be configured with:
Subject DN:   CN=Certificate Authority,O=EXAMPLE.TEST
Subject base: O=EXAMPLE.TEST
Chaining:     self-signed

BIND DNS server will be configured to serve IPA domain with:
Forwarders:       8.8.8.8
Forward policy:   only
Reverse zone(s):  0.168.192.in-addr.arpa.

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

Начнется процесс конфигурации. После его завершения будет выведена подсказка со следующими шагами:

==============================================================================
Setup complete

Next steps:
    1. You must make sure these network ports are open:
        TCP Ports:
          * 80, 443: HTTP/HTTPS
          * 389, 636: LDAP/LDAPS
          * 88, 464: kerberos
          * 53: bind
        UDP Ports:
          * 88, 464: kerberos
          * 53: bind
          * 123: ntp

    2. You can now obtain a kerberos ticket using the command: 'kinit admin'
       This ticket will allow you to use the IPA tools (e.g., ipa user-add)
       and the web user interface.

Be sure to back up the CA certificates stored in /root/cacert.p12
These files are required to create replicas. The password for these
files is the Directory Manager password
The ipa-server-install command was successful

В пакетном режиме

Примечание: Скрипт установки ipa-server-install создает файл журнала /var/log/ipaserver-install.log, который может помочь определить проблему если установка завершилась ошибкой.


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

# ipa-server-install -U --hostname=$(hostname) -r EXAMPLE.TEST -n example.test -p 12345678 -a 12345678 --setup-dns --no-forwarders --no-reverse

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

  • -r REALM_NAME, --realm=REALM_NAME — имя области Kerberos для сервера FreeIPA;
  • -n DOMAIN_NAME, --domain=DOMAIN_NAME — доменное имя;
  • -p DM_PASSWORD, --ds-password=DM_PASSWORD — пароль, который будет использоваться сервером каталогов для пользователя Менеджера каталогов (DM);
  • -a ADMIN_PASSWORD,--admin-password=ADMIN_PASSWORD — пароль пользователя admin, администратора FreeIPA;
  • -U,--unattended — позволить процессу установки выбрать параметры по умолчанию, не запрашивая у пользователя информацию;
  • --hostname=HOST_NAME — полное DNS-имя этого сервера.

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

  • --setup-dns — создать зону DNS, если она еще не существует, и настроить DNS-сервер;
  • --forwarder или --no-forwarders — в зависимости от того, нужно ли настроить серверы пересылки DNS или нет;
  • --auto-reverse или --no-reverse — в зависимости от того, нужно ли настроить автоматическое обнаружение обратных зон DNS, которые должны быть созданы в FreeIPA DNS, или отключить автоматическое определение обратных зон.
Примечание: Полный список параметров можно увидеть, запустив команду ipa-server-install --help


Установка сервера FreeIPA в режиме CA-less

В этом разделе описывается, как можно установить сервер FreeIPA без центра сертификации (CA).

CA-less конфигурация требуется в тех случаях, когда у вас по какой-то причине нет возможности развернуть на FreeIPA сервис PKI dogtag. Например, это на данный момент невозможно сделать в некоторых сертифицированных конфигурациях.

Сертификаты, необходимые для установки сервера FreeIPA без центра сертификации (CA):

  • Сертификат LDAP-сервера и закрытый ключ:
    • --dirsrv-cert-file для указания сертификата и файлов закрытого ключа для сертификата сервера LDAP;
    • --dirsrv-pin для указания пароля доступа к закрытому ключу;
  • Сертификат веб-сервера Apache и закрытый ключ:
    • --http-cert-file для сертификата и файлы закрытого ключа для сертификата сервера Apache;
    • --http-pin для пароля доступа к закрытому ключу;
  • полная цепочка сертификатов CA, выдавших сертификаты серверов LDAP и Apache:
    • --dirsrv-cert-file и --http-cert-file для файлов сертификатов с полной цепочкой сертификатов ЦС или ее частью;
  • файлы сертификатов для полной цепочки сертификатов CA:
    • --ca-cert-file для файла или файлов, содержащих сертификат центра сертификации, который выдал сертификаты LDAP, Apache Server и Kerberos KDC.
  • сертификат PKINIT центра распространения ключей Kerberos (KDC) и закрытый ключ (опционально):
    • --pkinit-cert-file для SSL-сертификата Kerberos KDC и закрытого ключа;
    • --pkinit-pin для пароля доступа к закрытому ключу Kerberos KDC;
    • --no-pkinit — отключить шаги настройки pkinit. Если не предоставить сертификат PKINIT, ipa-server-install настроит сервер FreeIPA с локальным KDC с самоподписанным сертификатом.

Файлы, предоставленные с помощью --dirsrv-cert-file и --http-cert-file, в сочестании с файлом, предоставленным с помощью --ca-cert-file должны содержать полную цепочку сертификатов CA, выдавших сертификаты сервера LDAP и Apache.

Подготовка сертификатов для сервера FreeIPA

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

# mkdir ~/test_ca

Создать файл password.txt с паролем к закрытому ключу (длина пароля должна быть не меньше 8 символов):

# echo "SECret.123" > ~/test_ca/password.txt

Создать базу данных NSS:

certutil -d ~/test_ca -N -f ~/test_ca/password.txt

Создать noise файл, заполненный случайными числами:

# head -c20 /dev/random > ~/test_ca/noise.txt

Выполнить экспорт переменной CERT_SERIAL:

# export CERT_SERIAL=1

Создать CA сертификат:

# SKID="0x`openssl rand -hex 20`"
# echo $SKID
0xfa012b30b9407b0750b786ff5ed9f49ce3998622
# certutil -d ~/test_ca -S -n "CA" -s "CN=Certificate Authority" -x -t CT,,C -1 -2 -5 -m $CERT_SERIAL -v 120 -z ~/test_ca/noise.txt -f ~/test_ca/password.txt --extSKID

В ответ на запросы команды дать следующие ответы (на запрос «Enter value for the key identifier fields», следует ввести вывод команды echo $SKID):

  0 - Digital Signature
  1 - Non-repudiation
  5 - Cert signing key
  9 - done
  Is this a critical extension [y/N]? y
  Is this a CA certificate [y/N]?  y
  Enter the path length constraint, enter to skip [<0 for unlimited path] 0
  Is this a critical extension [y/N]? y
  Enter value for the key identifier fields,enter to omit: 0xfa012b30b9407b0750b786ff5ed9f49ce3998622
  Is this a critical extension [y/N]? n
  5 - SSL CA
  6 - S/MIME CA
  7 - Object Signing CA
  9 - done
  Is this a critical extension [y/N]? n

Создать noise файл, заполненный случайными числами:

# head -c20 /dev/random > ~/test_ca/noise.txt

Создать запрос на сертификат (на запрос «Enter value for the key identifier fields», следует ввести вывод команды echo $SKID):

# SKID="0x`openssl rand -hex 20`"
# echo $SKID
0xb17caf72b46288bcc9c887c89894dc917e06f724
# certutil -d ~/test_ca -R -s CN=$HOSTNAME,O=IPA -o /tmp/servercert.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:
0xb17caf72b46288bcc9c887c89894dc917e06f724
Is this a critical extension [y/N]? 
n

Подписать запрос на сертификат:

# export CERT_SERIAL=$(($CERT_SERIAL + 1))
# certutil -d ~/test_ca -C -c "CA" -i /tmp/servercert.req -o /tmp/servercert.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
Примечание: Можно также создать отдельные сертификаты для серверов HTTP и Directory.


Экспорт сертификатов в правильные форматы

Импортировать полученный сертификат:

# certutil -d ~/test_ca -A -i /tmp/servercert.pem -n Server-Cert -a -t ,,
Enter Password or Pin for "NSS Certificate DB":

Экспортировать сертификат в PKCS#12:

# pk12util -o ~/test_ca/servercert.p12 -n Server-Cert -d ~/test_ca -k ~/test_ca/password.txt -w ~/test_ca/password.txt
pk12util: PKCS12 EXPORT SUCCESSFUL

Экспортировать сертификат CA в формат PEM:

# certutil -d ~/test_ca -L -n "CA" -a > ~/test_ca/cacert.pem

Установка CA-less IPA

Установить пароль к закрытому ключу в значение переменной PSWD:

# export PSWD=$(cat ~/test_ca/password.txt)

Установить CA-less IPA:

# ipa-server-install \
    --http-cert-file ~/test_ca/servercert.p12 \
    --http-pin $PSWD \
    --dirsrv-cert-file ~/test_ca/servercert.p12 \
    --dirsrv-pin $PSWD \
    --ca-cert-file ~/test_ca/cacert.pem \
    --no-pkinit 


The log file for this installation can be found in /var/log/ipaserver-install.log
==============================================================================
This program will set up the IPA Server.
Version 4.9.7

This includes:
  * Configure the NTP client (CHRONY)
  * Create and configure an instance of Directory Server
  * Create and configure a Kerberos Key Distribution Center (KDC)
  * Configure Apache (httpd)

To accept the default shown in brackets, press the Enter key.

На первый вопрос, нужно ли сконфигурировать DNS-сервер BIND ответить утвердительно:

Do you want to configure integrated DNS (BIND)? [no]: yes

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

Примечание: Чтобы принять значение по умолчанию, необходимо нажать Enter.
Server host name [ipa.example.test]:
Please confirm the domain name [example.test]:
Please provide a realm name [EXAMPLE.TEST]:
Внимание! Эти имена нельзя изменить после завершения установки.


Задать пароль для Directory Manager (cn=Directory Manager):

Directory Manager password:
Password (confirm):

Задать пароль для администратора FreeIPA (будет создана учетная запись admin с правами администратора):

IPA admin password:
Password (confirm):

Для настройки DNS на первый запрос, нужно ли настроить перенаправления, ответить да:

Do you want to configure DNS forwarders? [yes]:

Система предложит сначала использовать DNS-серверы из настроек сети (если они прописаны) — если это устроит, оставить значение по умолчанию:

Do you want to configure these servers as DNS forwarders? [yes]:

Также можно добавить дополнительные серверы:

Enter an IP address for a DNS forwarder, or press Enter to skip: 8.8.8.8
Примечание: Этот шаг необходим в том случае, если предполагается использовать внешний сервер для обработки запросов службы имен DNS.


Оставить значение по умолчанию для попытки найти обратные зоны:

Do you want to search for missing reverse zones? [yes]
Примечание: Использование FreeIPA для управления обратными зонами не является обязательным. Для этой цели можно использовать внешнюю службу DNS.


Далее система выведет информацию о конфигурации и попросит ее подтвердить:

The IPA Master Server will be configured with:
Hostname:       ipa.example.test
IP address(es): 192.168.0.113
Domain name:    example.test
Realm name:     EXAMPLE.TEST

The CA will be configured with:
Subject DN:   CN=Certificate Authority,O=EXAMPLE.TEST
Subject base: O=EXAMPLE.TEST
Chaining:     self-signed

BIND DNS server will be configured to serve IPA domain with:
Forwarders:       8.8.8.8
Forward policy:   only
Reverse zone(s):  0.168.192.in-addr.arpa.

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

Начнется процесс конфигурации. После его завершения будет выведена подсказка со следующими шагами:

==============================================================================
Setup complete

Next steps:
    1. You must make sure these network ports are open:
        TCP Ports:
          * 80, 443: HTTP/HTTPS
          * 389, 636: LDAP/LDAPS
          * 88, 464: kerberos
          * 53: bind
        UDP Ports:
          * 88, 464: kerberos
          * 53: bind
          * 123: ntp

    2. You can now obtain a kerberos ticket using the command: 'kinit admin'
       This ticket will allow you to use the IPA tools (e.g., ipa user-add)
       and the web user interface.

The ipa-server-install command was successful

Завершение установки

После завершения сценария установки обновите записи DNS следующим образом:

  • добавить делегирование DNS из родительского домена в домен DNS FreeIPA. Например, если DNS-домен FreeIPA — ipa.example.test, добавьте запись сервера имен (NS) в родительский домен example.test;
  • добавить запись службы _ntp._udp (SRV) для сервера времени в DNS (Наличие записи SRV для сервера времени только что установленного сервера FreeIPA в DNS гарантирует, что будущие установки реплик и клиентов будут автоматически настроены для синхронизации с сервером времени, используемым этим первичным сервером FreeIPA):
    # ipa dnsrecord-add example.test _ntp._udp --srv-priority=0 --srv-weight=100 --srv-port=123 --srv-target=ipa.example.test.
    

Убедиться, что сервер FreeIPA работает:

$ kinit admin
Password for admin@EXAMPLE.TEST:
$ klist
Ticket cache: KEYRING:persistent:500:500
Default principal: admin@EXAMPLE.TEST

Valid starting       Expires              Service principal
26.01.2022 12:08:51  27.01.2022 12:08:47  krbtgt/EXAMPLE.TEST@EXAMPLE.TEST