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

Материал из ALT Linux Wiki
Нет описания правки
(Запуск создания запроса на сертификат с параметром extSAN)
 
(не показано 11 промежуточных версий 2 участников)
Строка 34: Строка 34:
== Подготовка сервера ==
== Подготовка сервера ==


Для корректной работы сервера, необходимо, задать ему полное доменное имя (FQDN). Имя серверу можно назначить командой:
Для корректной работы сервера необходимо, задать ему полное доменное имя (FQDN). Имя серверу можно назначить командой:
 
<syntaxhighlight lang="bash"># hostnamectl set-hostname ipa.example.test</syntaxhighlight>
<source lang="text" highlight="1"># hostnamectl set-hostname ipa.example.test</source>


{{Note|IP-адрес сервера не должен изменяться.}}
{{Note|IP-адрес сервера не должен изменяться.}}


 
Нужно отключить работающий на порту 8080 ahttpd во избежание конфликтов с разворачиваемым tomcat и отключить HTTPS в Apache2:
Отключить ahttpd, работающий на порту 8080, во избежание конфликтов с разворачиваемым tomcat и отключить HTTPS в Apache2:
<syntaxhighlight lang="bash"># service ahttpd stop
<source lang="text" highlight="1-4"># service ahttpd stop
# a2dissite 000-default_https
# a2dissite 000-default_https
# a2disport https
# a2disport https
# service httpd2 condreload</source>
# service httpd2 condreload</syntaxhighlight>


Для ускорения установки можно установить демон энтропии haveged:
Для ускорения установки можно установить демон энтропии haveged:
<source lang="text" highlight="1-2"># apt-get install haveged
<syntaxhighlight lang="bash"># apt-get install haveged
# systemctl enable --now haveged</source>
# systemctl enable --now haveged</syntaxhighlight>


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


Установить необходимые пакеты:
Установить пакет {{pkg|freeipa-server}}:


<source lang="text" highlight="1"># apt-get install freeipa-server freeipa-server-dns</source>
<syntaxhighlight lang="bash"># apt-get install freeipa-server</syntaxhighlight>
 
Если сервер FreeIPA должен включать DNS-сервер, необходимо также установить пакет {{pkg|freeipa-server-dns}}:
 
<syntaxhighlight lang="bash"># apt-get install freeipa-server-dns</syntaxhighlight>


== Установка сервера ==
== Установка сервера ==
Строка 69: Строка 71:
* FreeIPA DNS не предназначен для использования в качестве DNS-сервера общего назначения. Некоторые расширенные функции DNS не поддерживаются.
* FreeIPA DNS не предназначен для использования в качестве DNS-сервера общего назначения. Некоторые расширенные функции DNS не поддерживаются.


{{Note|Если в команде {{cmd|ipa-server-install}} в конфигурации по умолчанию, не указаны CA параметры, например, <tt>--external-ca</tt> или <tt>--ca-less</tt>, сервер FreeIPA устанавливается с интегрированным CA.}}
{{Note|Если в команде {{cmd|ipa-server-install}} в конфигурации по умолчанию не указаны CA параметры, например, <tt>--external-ca</tt> или <tt>--ca-less</tt>, сервер FreeIPA устанавливается с интегрированным CA.}}


==== Интерактивная установка ====
==== Интерактивная установка ====
Для запуска интерактивной установки выполнить команду:
Для запуска интерактивной установки выполнить команду:
<source lang="text" highlight="1"># ipa-server-install</source>
<syntaxhighlight lang="bash"># ipa-server-install</syntaxhighlight>


На первый вопрос, нужно ли сконфигурировать DNS-сервер BIND ответить утвердительно:
На первый вопрос, нужно ли сконфигурировать DNS-сервер BIND, следует ответить утвердительно:
<source lang="text">Do you want to configure integrated DNS (BIND)? [no]: yes</source>
<syntaxhighlight lang="bash">Do you want to configure integrated DNS (BIND)? [no]: yes</syntaxhighlight>


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


{{Note| Чтобы принять значение по умолчанию, необходимо нажать '''Enter'''.}}
{{Note| Чтобы принять значение по умолчанию, необходимо нажать '''Enter'''.}}
<source lang="text">Server host name [ipa.example.test]:
<syntaxhighlight lang="bash">Server host name [ipa.example.test]:
Please confirm the domain name [example.test]:
Please confirm the domain name [example.test]:
Please provide a realm name [EXAMPLE.TEST]:</source>
Please provide a realm name [EXAMPLE.TEST]:</syntaxhighlight>


{{Attention|Эти имена нельзя изменить после завершения установки. }}
{{Attention|Эти имена нельзя изменить после завершения установки. }}


Задать пароль для Directory Manager (cn=Directory Manager):
Задать пароль для Directory Manager (cn=Directory Manager):
<source lang="text">Directory Manager password:
<syntaxhighlight lang="bash">Directory Manager password:
Password (confirm):</source>
Password (confirm):</syntaxhighlight>


Задать пароль для администратора FreeIPA (будет создана учетная запись admin с правами администратора):
Задать пароль для администратора FreeIPA (будет создана учетная запись admin с правами администратора):
<source lang="text">IPA admin password:
<syntaxhighlight lang="bash">IPA admin password:
Password (confirm):</source>
Password (confirm):</syntaxhighlight>


Для настройки DNS на первый запрос, нужно ли настроить перенаправления, ответить да:
Для настройки DNS на первый запрос, нужно ли настроить перенаправления, необходимо ответить «да»:
<source lang="text">Do you want to configure DNS forwarders? [yes]:</source>
<syntaxhighlight lang="bash">Do you want to configure DNS forwarders? [yes]:</syntaxhighlight>
Система предложит сначала использовать DNS-серверы из настроек сети (если они прописаны) — если это устроит, оставить значение по умолчанию:
Система предложит сначала использовать DNS-серверы из настроек сети (если они прописаны) — если это устроит, можно оставить значение по умолчанию:
<source lang="text">Do you want to configure these servers as DNS forwarders? [yes]:</source>
<syntaxhighlight lang="bash">Do you want to configure these servers as DNS forwarders? [yes]:</syntaxhighlight>
Также можно добавить дополнительные серверы:
Также можно добавить дополнительные серверы:
<source lang="text">Enter an IP address for a DNS forwarder, or press Enter to skip: 8.8.8.8</source>
<syntaxhighlight lang="bash">Enter an IP address for a DNS forwarder, or press Enter to skip: 8.8.8.8</syntaxhighlight>


{{Note|Этот шаг необходим в том случае, если предполагается использовать внешний сервер для обработки запросов службы имен DNS. }}
{{Note|Этот шаг необходим в том случае, если предполагается использовать внешний сервер для обработки запросов службы имен DNS. }}


Оставить значение по умолчанию для попытки найти обратные зоны:
Оставить значение по умолчанию для попытки найти обратные зоны:
<source lang="text">Do you want to search for missing reverse zones? [yes]</source>
<syntaxhighlight lang="bash">Do you want to search for missing reverse zones? [yes]</syntaxhighlight>


{{Note|Использование FreeIPA для управления обратными зонами не является обязательным. Для этой цели можно использовать внешнюю службу DNS.}}
{{Note|Использование FreeIPA для управления обратными зонами не является обязательным. Для этой цели можно использовать внешнюю службу DNS.}}


Далее система выведет информацию о конфигурации и попросит ее подтвердить:
Далее система выведет информацию о конфигурации и попросит ее подтвердить:
<source lang="text">The IPA Master Server will be configured with:
<syntaxhighlight lang="bash">The IPA Master Server will be configured with:
Hostname:      ipa.example.test
Hostname:      ipa.example.test
IP address(es): 192.168.0.113
IP address(es): 192.168.0.113
Строка 126: Строка 128:
Reverse zone(s):  0.168.192.in-addr.arpa.
Reverse zone(s):  0.168.192.in-addr.arpa.


Continue to configure the system with these values? [no]: yes</source>
Continue to configure the system with these values? [no]: yes</syntaxhighlight>


Начнется процесс конфигурации. После его завершения будет выведена подсказка со следующими шагами:
Начнется процесс конфигурации. После его завершения будет выведена подсказка со следующими шагами:
<source lang="text">==============================================================================
<syntaxhighlight lang="bash">==============================================================================
Setup complete
Setup complete


Строка 151: Строка 153:
These files are required to create replicas. The password for these
These files are required to create replicas. The password for these
files is the Directory Manager password
files is the Directory Manager password
The ipa-server-install command was successful</source>
The ipa-server-install command was successful</syntaxhighlight>


==== В пакетном режиме ====
==== В пакетном режиме ====
Строка 157: Строка 159:


Пример команды установки сервера FreeIPA в пакетном режиме:
Пример команды установки сервера FreeIPA в пакетном режиме:
<source lang="text" highlight="1"># ipa-server-install -U --hostname=$(hostname) -r EXAMPLE.TEST -n example.test -p 12345678 -a 12345678 --setup-dns --no-forwarders --no-reverse</source>
<syntaxhighlight lang="bash"># ipa-server-install -U --hostname=$(hostname) -r EXAMPLE.TEST -n example.test -p 12345678 -a 12345678 --setup-dns --no-forwarders --no-reverse</syntaxhighlight>


Для пакетной установки необходимо указать следующие параметры:
Для пакетной установки необходимо указать следующие параметры:
Строка 182: Строка 184:
Сертификаты, необходимые для установки сервера FreeIPA без центра сертификации (CA):
Сертификаты, необходимые для установки сервера FreeIPA без центра сертификации (CA):
*Сертификат LDAP-сервера и закрытый ключ:
*Сертификат LDAP-сервера и закрытый ключ:
**<tt>--dirsrv-cert-file</tt> для указания сертификата и файлов закрытого ключа для сертификата сервера LDAP;
**<tt>--dirsrv-cert-file</tt> для указания сертификата и файлов закрытого ключа сервера LDAP;
**<tt>--dirsrv-pin</tt> для указания пароля доступа к закрытому ключу;
**<tt>--dirsrv-pin</tt> для указания пароля доступа к закрытому ключу;
*Сертификат веб-сервера Apache и закрытый ключ:
*Сертификат веб-сервера Apache и закрытый ключ:
**<tt>--http-cert-file</tt> для сертификата и файлы закрытого ключа для сертификата сервера Apache;
**<tt>--http-cert-file</tt> для указания сертификата и файлов закрытого сервера Apache;
**<tt>--http-pin</tt> для пароля доступа к закрытому ключу;
**<tt>--http-pin</tt> для указания пароля доступа к закрытому ключу;
*полная цепочка сертификатов CA, выдавших сертификаты серверов LDAP и Apache:
*полная цепочка сертификатов CA, выдавших сертификаты серверов LDAP и Apache:
**<tt>--dirsrv-cert-file</tt> и <tt>--http-cert-file</tt> для файлов сертификатов с полной цепочкой сертификатов ЦС или ее частью;
**<tt>--dirsrv-cert-file</tt> и <tt>--http-cert-file</tt> для файлов сертификатов с полной цепочкой сертификатов ЦС или ее частью;
Строка 196: Строка 198:
**<tt>--no-pkinit</tt> — отключить шаги настройки pkinit. Если не предоставить сертификат PKINIT, {{cmd|ipa-server-install}} настроит сервер FreeIPA с локальным KDC с самоподписанным сертификатом.
**<tt>--no-pkinit</tt> — отключить шаги настройки pkinit. Если не предоставить сертификат PKINIT, {{cmd|ipa-server-install}} настроит сервер FreeIPA с локальным KDC с самоподписанным сертификатом.


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


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


Создать каталог для сертификатов:
Создать каталог для сертификатов:
<source lang="text" highlight="1"># mkdir ~/test_ca</source>
<syntaxhighlight lang="bash"># mkdir ~/test_ca</syntaxhighlight>
Создать файл password.txt с паролем к закрытому ключу (длина пароля должна быть не меньше 8 символов):
Создать файл password.txt с паролем к закрытому ключу (длина пароля должна быть не меньше 8 символов):
<source lang="text" highlight="1"># echo "SECret.123" > ~/test_ca/password.txt</source>
<syntaxhighlight lang="bash"># echo "SECret.123" > ~/test_ca/password.txt</syntaxhighlight>
Создать базу данных NSS:
Создать базу данных NSS:
<source lang="text" highlight="1">certutil -d ~/test_ca -N -f ~/test_ca/password.txt</source>
<syntaxhighlight lang="bash"># certutil -d ~/test_ca -N -f ~/test_ca/password.txt</syntaxhighlight>
Создать noise файл, заполненный случайными числами:
Создать noise файл, заполненный случайными числами:
<source lang="text" highlight="1"># head -c20 /dev/random > ~/test_ca/noise.txt</source>
<syntaxhighlight lang="bash"># head -c20 /dev/random > ~/test_ca/noise.txt</syntaxhighlight>
Выполнить экспорт переменной CERT_SERIAL:
Выполнить экспорт переменной CERT_SERIAL:
<source lang="text" highlight="1"># export CERT_SERIAL=1</source>
<syntaxhighlight lang="bash"># export CERT_SERIAL=1</syntaxhighlight>
Создать CA сертификат:
Создать CA сертификат:
<source lang="text" highlight="1,2,4"># SKID="0x`openssl rand -hex 20`"
<syntaxhighlight lang="bash"># SKID="0x`openssl rand -hex 20`"
# echo $SKID
# echo $SKID
0xfa012b30b9407b0750b786ff5ed9f49ce3998622
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</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</syntaxhighlight>
В ответ на запросы команды дать следующие ответы (на запрос «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
<syntaxhighlight lang="bash">  0 - Digital Signature
   1 - Non-repudiation
   1 - Non-repudiation
   5 - Cert signing key
   5 - Cert signing key
Строка 230: Строка 232:
   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 </syntaxhighlight>
Создать noise файл, заполненный случайными числами:
Создать noise файл, заполненный случайными числами:
<source lang="text" highlight="1"># head -c20 /dev/random > ~/test_ca/noise.txt</source>
<syntaxhighlight lang="bash"># head -c20 /dev/random > ~/test_ca/noise.txt</syntaxhighlight>
Создать запрос на сертификат (на запрос «Enter value for the key identifier fields», следует ввести вывод команды {{cmd|echo $SKID}}):
Создать запрос на сертификат (на запрос «Enter value for the key identifier fields», следует ввести вывод команды {{cmd|echo $SKID}}):
<source lang="text" highlight="1,2,4"># SKID="0x`openssl rand -hex 20`"
<syntaxhighlight lang="bash"># SKID="0x`openssl rand -hex 20`"
# echo $SKID
# echo $SKID
0xb17caf72b46288bcc9c887c89894dc917e06f724
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
# 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 --extSAN dns:ipa.example.test


Generating key.  This may take a few moments...
Generating key.  This may take a few moments...
Строка 246: Строка 248:
Is this a critical extension [y/N]?  
Is this a critical extension [y/N]?  
n
n
</source>
</syntaxhighlight>
Подписать запрос на сертификат:
Подписать запрос на сертификат:
<source lang="text" highlight="1-2"># export CERT_SERIAL=$(($CERT_SERIAL + 1))
<syntaxhighlight lang="bash"># 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</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</syntaxhighlight>
В ответ на запросы команды дать следующие ответы:
В ответ на запросы команды дать следующие ответы:
<source lang="text">  2 - Key encipherment
<syntaxhighlight lang="bash">  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</syntaxhighlight>
   
   
{{Note|Можно так же создать отдельные сертификаты для серверов HTTP и Directory.}}
{{Note|Можно так же создать отдельные сертификаты для серверов HTTP и Directory.}}
Строка 262: Строка 264:
==== Экспорт сертификатов в правильные форматы ====
==== Экспорт сертификатов в правильные форматы ====
Импортировать полученный сертификат (на запрос команды, следует ввести пароль к закрытому ключу):
Импортировать полученный сертификат (на запрос команды, следует ввести пароль к закрытому ключу):
<source lang="text" highlight="1"># certutil -d ~/test_ca -A -i /tmp/servercert.pem -n Server-Cert -a -t ,,
<syntaxhighlight lang="bash"># certutil -d ~/test_ca -A -i /tmp/servercert.pem -n Server-Cert -a -t ,,
Enter Password or Pin for "NSS Certificate DB":</source>
Enter Password or Pin for "NSS Certificate DB":</syntaxhighlight>
Экспортировать сертификат в PKCS#12:
Экспортировать сертификат в PKCS#12:
<source lang="text" highlight="1"># pk12util -o ~/test_ca/servercert.p12 -n Server-Cert -d ~/test_ca -k ~/test_ca/password.txt -w ~/test_ca/password.txt
<syntaxhighlight lang="bash"># 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</source>
pk12util: PKCS12 EXPORT SUCCESSFUL</syntaxhighlight>
Экспортировать сертификат CA в формат PEM:
Экспортировать сертификат CA в формат PEM:
<source lang="text" highlight="1"># certutil -d ~/test_ca -L -n "CA" -a > ~/test_ca/cacert.pem</source>
<syntaxhighlight lang="bash"># certutil -d ~/test_ca -L -n "CA" -a > ~/test_ca/cacert.pem</syntaxhighlight>


==== Установка CA-less IPA ====
==== Установка CA-less IPA ====
Установить пароль к закрытому ключу в значение переменной '''PSWD''':
Установить пароль к закрытому ключу в значение переменной '''PSWD''':
<source lang="text" highlight="1"># export PSWD=$(cat ~/test_ca/password.txt)</source>
<syntaxhighlight lang="bash"># export PSWD=$(cat ~/test_ca/password.txt)</syntaxhighlight>
Установить CA-less IPA:
Установить CA-less IPA:
<source lang="text" highlight="1-7"># ipa-server-install \
<syntaxhighlight lang="bash"># ipa-server-install \
     --http-cert-file ~/test_ca/servercert.p12 \
     --http-cert-file ~/test_ca/servercert.p12 \
     --http-pin $PSWD \
     --http-pin $PSWD \
Строка 294: Строка 296:
   * Configure Apache (httpd)
   * Configure Apache (httpd)


To accept the default shown in brackets, press the Enter key.</source>
To accept the default shown in brackets, press the Enter key.</syntaxhighlight>


На первый вопрос, нужно ли сконфигурировать DNS-сервер BIND ответить утвердительно:
На первый вопрос, нужно ли сконфигурировать DNS-сервер BIND, следует ответить утвердительно:
<source lang="text">Do you want to configure integrated DNS (BIND)? [no]: yes</source>
<syntaxhighlight lang="bash">Do you want to configure integrated DNS (BIND)? [no]: yes</syntaxhighlight>


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


{{Note| Чтобы принять значение по умолчанию, необходимо нажать '''Enter'''.}}
{{Note| Чтобы принять значение по умолчанию, необходимо нажать '''Enter'''.}}
<source lang="text">Server host name [ipa.example.test]:
<syntaxhighlight lang="bash">Server host name [ipa.example.test]:
Please confirm the domain name [example.test]:
Please confirm the domain name [example.test]:
Please provide a realm name [EXAMPLE.TEST]:</source>
Please provide a realm name [EXAMPLE.TEST]:</syntaxhighlight>


{{Attention|Эти имена нельзя изменить после завершения установки. }}
{{Attention|Эти имена нельзя изменить после завершения установки. }}


Задать пароль для Directory Manager (cn=Directory Manager):
Задать пароль для Directory Manager (cn=Directory Manager):
<source lang="text">Directory Manager password:
<syntaxhighlight lang="bash">Directory Manager password:
Password (confirm):</source>
Password (confirm):</syntaxhighlight>


Задать пароль для администратора FreeIPA (будет создана учетная запись admin с правами администратора):
Задать пароль для администратора FreeIPA (будет создана учетная запись admin с правами администратора):
<source lang="text">IPA admin password:
<syntaxhighlight lang="bash">IPA admin password:
Password (confirm):</source>
Password (confirm):</syntaxhighlight>


Для настройки DNS на первый запрос, нужно ли настроить перенаправления, ответить да:
Для настройки DNS на первый запрос, нужно ли настроить перенаправления, необходимо ответить «да»:
<source lang="text">Do you want to configure DNS forwarders? [yes]:</source>
<syntaxhighlight lang="bash">Do you want to configure DNS forwarders? [yes]:</syntaxhighlight>
Система предложит сначала использовать DNS-серверы из настроек сети (если они прописаны) — если это устроит, оставить значение по умолчанию:
Система предложит сначала использовать DNS-серверы из настроек сети (если они прописаны) — если это устроит, можно оставить значение по умолчанию:
<source lang="text">Do you want to configure these servers as DNS forwarders? [yes]:</source>
<syntaxhighlight lang="bash">Do you want to configure these servers as DNS forwarders? [yes]:</syntaxhighlight>
Также можно добавить дополнительные серверы:
Также можно добавить дополнительные серверы:
<source lang="text">Enter an IP address for a DNS forwarder, or press Enter to skip: 8.8.8.8</source>
<syntaxhighlight lang="bash">Enter an IP address for a DNS forwarder, or press Enter to skip: 8.8.8.8</syntaxhighlight>


{{Note|Этот шаг необходим в том случае, если предполагается использовать внешний сервер для обработки запросов службы имен DNS. }}
{{Note|Этот шаг необходим в том случае, если предполагается использовать внешний сервер для обработки запросов службы имен DNS. }}


Оставить значение по умолчанию для попытки найти обратные зоны:
Оставить значение по умолчанию для попытки найти обратные зоны:
<source lang="text">Do you want to search for missing reverse zones? [yes]</source>
<syntaxhighlight lang="bash">Do you want to search for missing reverse zones? [yes]</syntaxhighlight>


{{Note|Использование FreeIPA для управления обратными зонами не является обязательным. Для этой цели можно использовать внешнюю службу DNS.}}
{{Note|Использование FreeIPA для управления обратными зонами не является обязательным. Для этой цели можно использовать внешнюю службу DNS.}}


Далее система выведет информацию о конфигурации и попросит ее подтвердить:
Далее система выведет информацию о конфигурации и попросит ее подтвердить:
<source lang="text">The IPA Master Server will be configured with:
<syntaxhighlight lang="bash">The IPA Master Server will be configured with:
Hostname:      ipa.example.test
Hostname:      ipa.example.test
IP address(es): 192.168.0.113
IP address(es): 192.168.0.113
Строка 342: Строка 344:
Reverse zone(s):  0.168.192.in-addr.arpa.
Reverse zone(s):  0.168.192.in-addr.arpa.


Continue to configure the system with these values? [no]: yes</source>
Continue to configure the system with these values? [no]: yes</syntaxhighlight>


Начнется процесс конфигурации. После его завершения будет выведена подсказка со следующими шагами:
Начнется процесс конфигурации. После его завершения будет выведена подсказка со следующими шагами:
<source lang="text">==============================================================================
<syntaxhighlight lang="bash">==============================================================================
Setup complete
Setup complete


Строка 364: Строка 366:
       and the web user interface.
       and the web user interface.


The ipa-server-install command was successful</source>
The ipa-server-install command was successful</syntaxhighlight>


== Завершение установки ==
== Завершение установки ==
Строка 370: Строка 372:
*добавить делегирование DNS из родительского домена в домен DNS FreeIPA. Например, если DNS-домен FreeIPA — ipa.example.test, добавьте запись сервера имен (NS) в родительский домен example.test;
*добавить делегирование DNS из родительского домена в домен DNS FreeIPA. Например, если DNS-домен FreeIPA — ipa.example.test, добавьте запись сервера имен (NS) в родительский домен example.test;
*добавить запись службы _ntp._udp (SRV) для сервера времени в DNS (Наличие записи SRV для сервера времени только что установленного сервера FreeIPA в DNS гарантирует, что будущие установки реплик и клиентов будут автоматически настроены для синхронизации с сервером времени, используемым этим первичным сервером FreeIPA):
*добавить запись службы _ntp._udp (SRV) для сервера времени в DNS (Наличие записи SRV для сервера времени только что установленного сервера FreeIPA в DNS гарантирует, что будущие установки реплик и клиентов будут автоматически настроены для синхронизации с сервером времени, используемым этим первичным сервером FreeIPA):
*:<source lang="text" highlight="1"># ipa dnsrecord-add example.test _ntp._udp --srv-priority=0 --srv-weight=100 --srv-port=123 --srv-target=ipa.example.test.</source>
*:<syntaxhighlight lang="bash"># ipa dnsrecord-add example.test _ntp._udp --srv-priority=0 --srv-weight=100 --srv-port=123 --srv-target=ipa.example.test</syntaxhighlight>


Убедиться, что сервер FreeIPA работает:
Убедиться, что сервер FreeIPA работает:
<source lang="text" highlight="1">$ kinit admin
<syntaxhighlight lang="bash">$ kinit admin
Password for admin@EXAMPLE.TEST:</source>
Password for admin@EXAMPLE.TEST:</syntaxhighlight>
<source lang="text" highlight="1">$ klist
<syntaxhighlight lang="bash">$ klist
Ticket cache: KEYRING:persistent:500:500
Ticket cache: KEYRING:persistent:500:500
Default principal: admin@EXAMPLE.TEST
Default principal: admin@EXAMPLE.TEST


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


== Отладочная информация ==  
== Отладочная информация ==  
Строка 388: Строка 390:
*{{path|/var/log/ipaserver-install.log}}
*{{path|/var/log/ipaserver-install.log}}
*{{path|/var/log/httpd2/error_log}}
*{{path|/var/log/httpd2/error_log}}
*{{path|var/log/dirsrv/slapd-INSTANCE-NAME/access}}
*{{path|/var/log/dirsrv/slapd-INSTANCE-NAME/access}}
*{{path|/var/log/dirsrv/slapd-INSTANCE-NAME/errors}}
*{{path|/var/log/dirsrv/slapd-INSTANCE-NAME/errors}}
*{{path|/var/log/ipaserver-install.log}}


При установке CA отладочную информация также можно просмотреть в:
При установке CA отладочную информация также можно просмотреть в:
Строка 397: Строка 398:
*{{path|/var/log/pki/pki-tomcat/ca/debug.$DATE.log}}
*{{path|/var/log/pki/pki-tomcat/ca/debug.$DATE.log}}
*{{path|/var/log/pki/pki-tomcat/ca/signedAudit/ca_audit}}
*{{path|/var/log/pki/pki-tomcat/ca/signedAudit/ca_audit}}
*{{path|/var/log/pki/pki-tomcat/ca/system}}, {{path|/var/log/pki/pki-tomcat/ca/transactions}}, {{path|/var/log/pki/pki-tomcat/catalina.$DATE.log}}  
*{{path|/var/log/pki/pki-tomcat/ca/system}}, {{path|/var/log/pki/pki-tomcat/ca/transactions}}, {{path|/var/log/pki/pki-tomcat/catalina.$DATE.log}}


== Удаление неудачной установки сервера FreeIPA ==
== Удаление неудачной установки сервера FreeIPA ==
Строка 405: Строка 406:
Удалить частичную конфигурацию сервера FreeIPA:
Удалить частичную конфигурацию сервера FreeIPA:


<source lang="text" highlight="1"># ipa-server-install --uninstall</source>
<syntaxhighlight lang="bash"># ipa-server-install --uninstall</syntaxhighlight>


{{Note|Если ошибки при установке сервера FreeIPA остаются, следует переустановить ОС.  Одним из требований для установки сервера FreeIPA является чистая система без каких-либо настроек.}}
{{Note|Если ошибки при установке сервера FreeIPA остаются, следует переустановить ОС.  Одним из требований для установки сервера FreeIPA является чистая система без каких-либо настроек.}}
Строка 413: Строка 414:
Процедура удаления сервера FreeIPA ipabackup.example.test:
Процедура удаления сервера FreeIPA ipabackup.example.test:
#Если в среде FreeIPA используется интегрированный DNS, необходимо убедиться, что ipabackup.example.test не является единственным DNS-сервером в состоянии enabled:
#Если в среде FreeIPA используется интегрированный DNS, необходимо убедиться, что ipabackup.example.test не является единственным DNS-сервером в состоянии enabled:
#:<source lang="text" highlight="1"># ipa server-role-find --role 'DNS server'
#:<syntaxhighlight lang="bash"># ipa server-role-find --role 'DNS server'
----------------------------------------
----------------------------------------
установлено соответствие 2 ролей сервера
установлено соответствие 2 ролей сервера
Строка 426: Строка 427:
---------------------------------
---------------------------------
Количество возвращённых записей 2
Количество возвращённых записей 2
---------------------------------</source>
---------------------------------</syntaxhighlight>
#:Если ipabackup.example.test — единственный DNS-сервер в топологии, следует добавить роль DNS-сервера на другой сервер FreeIPA (см. {{cmd|man ipa-dns-install(1)}}).
#:Если ipabackup.example.test — единственный DNS-сервер в топологии, следует добавить роль DNS-сервера на другой сервер FreeIPA (см. {{cmd|man ipa-dns-install(1)}}).
#Если в среде используется интегрированный CA:
#Если в среде используется интегрированный CA:
#*убедиться, что ipabackup.example.test не является единственным CA в состоянии enabled:
#*убедиться, что ipabackup.example.test не является единственным CA в состоянии enabled:
#*:<source lang="text" highlight="1"># ipa server-role-find --role 'CA server'
#*:<syntaxhighlight lang="bash"># ipa server-role-find --role 'CA server'
----------------------------------------
----------------------------------------
установлено соответствие 2 ролей сервера
установлено соответствие 2 ролей сервера
Строка 443: Строка 444:
---------------------------------
---------------------------------
Количество возвращённых записей 2
Количество возвращённых записей 2
---------------------------------</source>
---------------------------------</syntaxhighlight>
#*:Если ipabackup.example.test — единственный CA в топологии, следует добавить роль CA-сервера на другой сервер FreeIPA (см. {{cmd|man ipa-ca-install(1)}}).
#*:Если ipabackup.example.test — единственный CA в топологии, следует добавить роль CA-сервера на другой сервер FreeIPA (см. {{cmd|man ipa-ca-install(1)}}).
#*если в среде были активированы хранилища (enabled vaults), убедиться что ipabackup.example.test не является единственным включенным сервером Key Recovery Authority (KRA):
#*если в среде были активированы хранилища (enabled vaults), убедиться что ipabackup.example.test не является единственным включенным сервером Key Recovery Authority (KRA):
#*:<source lang="text" highlight="1"># ipa server-role-find --role 'KRA server'
#*:<syntaxhighlight lang="bash"># ipa server-role-find --role 'KRA server'
----------------------------------------
----------------------------------------
установлено соответствие 2 ролей сервера
установлено соответствие 2 ролей сервера
Строка 459: Строка 460:
---------------------------------
---------------------------------
Количество возвращённых записей 2
Количество возвращённых записей 2
---------------------------------</source>
---------------------------------</syntaxhighlight>
#*:Если ipabackup.example.test — единственный сервер KRA в топологии, следует добавить роль сервера KRA на другой сервер FreeIPA (см. {{cmd|man ipa-kra-install(1)}}).
#*:Если ipabackup.example.test — единственный сервер KRA в топологии, следует добавить роль сервера KRA на другой сервер FreeIPA (см. {{cmd|man ipa-kra-install(1)}}).
#*убедиться, что ipabackup.example.test не является сервером обновления CA:
#*убедиться, что ipabackup.example.test не является сервером обновления CA:
#*:<source lang="text" highlight="1"># ipa config-show | grep 'CA renewal'</source>
#*:<syntaxhighlight lang="bash"># ipa config-show | grep 'CA renewal'</syntaxhighlight>
#*:Если ipabackup.example.test является сервером обновления CA, необходимо переместить роль сервера обновления CA на другой сервер.
#*:Если ipabackup.example.test является сервером обновления CA, необходимо переместить роль сервера обновления CA на другой сервер.
#*убедиться, что ipabackup.example.test не является издателем текущего списка отзыва сертификатов (CRL):
#*убедиться, что ipabackup.example.test не является издателем текущего списка отзыва сертификатов (CRL):
#*:<source lang="text" highlight="1"># ipa-crlgen-manage status</source>
#*:<syntaxhighlight lang="bash"># ipa-crlgen-manage status</syntaxhighlight>
#*:Если вывод команды показывают, что генерация CRL включена на сервере ipabackup.example.test, следует переместить роль издателя CRL на другой сервер.
#*:Если вывод команды показывают, что генерация CRL на сервере ipabackup.example.test включена, следует переместить роль издателя CRL на другой сервер.
#Подключиться к другому серверу в топологии:
#Подключиться к другому серверу в топологии:
#:<source lang="text" highlight="1">$ ssh ipa_user@another_server</source>
#:<syntaxhighlight lang="bash">$ ssh ipa_user@another_server</syntaxhighlight>
#Получить учетные данные администратора FreeIPA:
#Получить учетные данные администратора FreeIPA:
#:<source lang="text" highlight="1">$ kinit admin</source>
#:<syntaxhighlight lang="bash">$ kinit admin</syntaxhighlight>
#Удалить сервер ipabackup.example.test из топологии:
#Удалить сервер ipabackup.example.test из топологии:
#:<source lang="text" highlight="1">$ ipa server-del ipabackup.example.test</source>
#:<syntaxhighlight lang="bash">$ ipa server-del ipabackup.example.test</syntaxhighlight>
#Вернуться на ipabackup.example.test и удалить FreeIPA:
#Вернуться на ipabackup.example.test и удалить FreeIPA:
#:<source lang="text" highlight="1"># ipa-server-install --uninstall</source>
#:<syntaxhighlight lang="bash"># ipa-server-install --uninstall</syntaxhighlight>
#Далее необходимо убедиться, что все записи DNS сервера имен (NS), указывающие на ipabackup.example.test, удалены из ваших зон DNS.   
#Далее необходимо убедиться, что все записи DNS сервера имен (NS), указывающие на ipabackup.example.test, удалены из ваших зон DNS.   
[[Категория:FreeIPA]]
[[Категория:FreeIPA]]

Текущая версия от 16:17, 11 сентября 2024

В данном разделе рассмотрена установка сервера FreeIPA с доменом EXAMPLE.TEST в локальной сети 192.168.0.0/24.

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

Сервер FreeIPA следует устанавливать в чистой системе, в которой отсутствуют какие-либо пользовательские настройки для служб: DNS, Kerberos, Apache и Directory Server.

FreeIPA при настройке домена перезаписывает системные файлы. FreeIPA создает резервные копии исходных системных файлов в /var/lib/ipa/sysrestore/. При удалении сервера FreeIPA, эти файлы восстанавливаются.

RAM

Для установки с CA требуется минимально 1,2 ГБ RAM. Для демонстрационной/тестовой системы рекомендуется 2 ГБ.

Типичные требования к оперативной памяти:

  • для 10 000 пользователей и 100 групп: не менее 4 ГБ RAM и 4 ГБ Swap.
  • для 100 000 пользователей и 50 000 групп: не менее 16 ГБ RAM и 4 ГБ Swap.

DNS

Без правильно настроенной конфигурации DNS не будут работать должным образом Kerberos и SSL.

Внимание! Домен DNS не может быть изменен после установки.


Установщик FreeIPA довольно требователен к настройке DNS. Установщик выполняет следующие проверки:

  • имя узла не может быть localhost или localhost6.
  • имя узла должно быть полным (ipa.example.test)
  • имя узла должно быть разрешимым.
  • обратный адрес должен совпадать с именем хоста.

Не используйте существующий домен, если вы не являетесь владельцем домена. Рекомендуется использовать зарезервированный домен верхнего уровня из RFC2606 для частных тестовых установок, например ipa.test.

IPv6

В ядре должен быть включен протокол IPv6. Если IPv6 отключен, подключаемый модуль CLDAP, используемый службами FreeIPA, не инициализируется.

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

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

# hostnamectl set-hostname ipa.example.test
Примечание: IP-адрес сервера не должен изменяться.


Нужно отключить работающий на порту 8080 ahttpd во избежание конфликтов с разворачиваемым tomcat и отключить HTTPS в Apache2:

# service ahttpd stop
# a2dissite 000-default_https
# a2disport https
# service httpd2 condreload

Для ускорения установки можно установить демон энтропии haveged:

# apt-get install haveged
# systemctl enable --now haveged

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

Установить пакет freeipa-server:

# apt-get install freeipa-server

Если сервер FreeIPA должен включать DNS-сервер, необходимо также установить пакет freeipa-server-dns:

# apt-get install 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 --extSAN dns:ipa.example.test

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

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

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

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

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

При установке CA отладочную информация также можно просмотреть в:

  • /var/log/pki/pki-ca-spawn.$TIME_OF_INSTALLATION.log — общие вопросы, для процесса установки pkispawn
  • journalctl -u pki-tomcatd@pki-tomcat
  • /var/log/pki/pki-tomcat/ca/debug.$DATE.log
  • /var/log/pki/pki-tomcat/ca/signedAudit/ca_audit
  • /var/log/pki/pki-tomcat/ca/system, /var/log/pki/pki-tomcat/ca/transactions, /var/log/pki/pki-tomcat/catalina.$DATE.log

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

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

Удалить частичную конфигурацию сервера FreeIPA:

# ipa-server-install --uninstall
Примечание: Если ошибки при установке сервера FreeIPA остаются, следует переустановить ОС. Одним из требований для установки сервера FreeIPA является чистая система без каких-либо настроек.


Удаление сервера FreeIPA

Процедура удаления сервера FreeIPA ipabackup.example.test:

  1. Если в среде FreeIPA используется интегрированный DNS, необходимо убедиться, что ipabackup.example.test не является единственным DNS-сервером в состоянии enabled:
    # ipa server-role-find --role 'DNS server'
    ----------------------------------------
    установлено соответствие 2 ролей сервера
    ----------------------------------------
      Имя сервера: ipa.example.test
      Имя роли: DNS server
      Состояние роли: enabled
    
      Имя сервера: ipabackup.example.test
      Имя роли: DNS server
      Состояние роли: enabled
    ---------------------------------
    Количество возвращённых записей 2
    ---------------------------------
    
    Если ipabackup.example.test — единственный DNS-сервер в топологии, следует добавить роль DNS-сервера на другой сервер FreeIPA (см. man ipa-dns-install(1)).
  2. Если в среде используется интегрированный CA:
    • убедиться, что ipabackup.example.test не является единственным CA в состоянии enabled:
      # ipa server-role-find --role 'CA server'
      ----------------------------------------
      установлено соответствие 2 ролей сервера
      ----------------------------------------
        Имя сервера: ipa.example.test
        Имя роли: CA server
        Состояние роли: enabled
      
        Имя сервера: ipabackup.example.test
        Имя роли: CA server
        Состояние роли: enabled
      ---------------------------------
      Количество возвращённых записей 2
      ---------------------------------
      
      Если ipabackup.example.test — единственный CA в топологии, следует добавить роль CA-сервера на другой сервер FreeIPA (см. man ipa-ca-install(1)).
    • если в среде были активированы хранилища (enabled vaults), убедиться что ipabackup.example.test не является единственным включенным сервером Key Recovery Authority (KRA):
      # ipa server-role-find --role 'KRA server'
      ----------------------------------------
      установлено соответствие 2 ролей сервера
      ----------------------------------------
        Имя сервера: ipa.example.test
        Имя роли: KRA server
        Состояние роли: absent
      
        Имя сервера: ipabackup.example.test
        Имя роли: KRA server
        Состояние роли: absent
      ---------------------------------
      Количество возвращённых записей 2
      ---------------------------------
      
      Если ipabackup.example.test — единственный сервер KRA в топологии, следует добавить роль сервера KRA на другой сервер FreeIPA (см. man ipa-kra-install(1)).
    • убедиться, что ipabackup.example.test не является сервером обновления CA:
      # ipa config-show | grep 'CA renewal'
      
      Если ipabackup.example.test является сервером обновления CA, необходимо переместить роль сервера обновления CA на другой сервер.
    • убедиться, что ipabackup.example.test не является издателем текущего списка отзыва сертификатов (CRL):
      # ipa-crlgen-manage status
      
      Если вывод команды показывают, что генерация CRL на сервере ipabackup.example.test включена, следует переместить роль издателя CRL на другой сервер.
  3. Подключиться к другому серверу в топологии:
    $ ssh ipa_user@another_server
    
  4. Получить учетные данные администратора FreeIPA:
    $ kinit admin
    
  5. Удалить сервер ipabackup.example.test из топологии:
    $ ipa server-del ipabackup.example.test
    
  6. Вернуться на ipabackup.example.test и удалить FreeIPA:
    # ipa-server-install --uninstall
    
  7. Далее необходимо убедиться, что все записи DNS сервера имен (NS), указывающие на ipabackup.example.test, удалены из ваших зон DNS.