FreeIPA/Установка сервера FreeIPA
Подготовка сервера
Установка пакетов
Установить необходимые пакеты:
# 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
На первый вопрос, нужно ли сконфигурировать DNS-сервер BIND ответить утвердительно:
Do you want to configure integrated DNS (BIND)? [no]: yes
Далее нужно указать имя узла, на котором будет установлен сервер FreeIPA, доменное имя и пространство Kerberos:
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
Оставить значение по умолчанию для попытки найти обратные зоны:
Do you want to search for missing reverse zones? [yes]
Далее система выведет информацию о конфигурации и попросит ее подтвердить:
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
В пакетном режиме
Пример команды установки сервера 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, или отключить автоматическое определение обратных зон.
Установка сервера 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
Экспорт сертификатов в правильные форматы
Импортировать полученный сертификат (на запрос команды, следует ввести пароль к закрытому ключу):
# 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:
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
Оставить значение по умолчанию для попытки найти обратные зоны:
Do you want to search for missing reverse zones? [yes]
Далее система выведет информацию о конфигурации и попросит ее подтвердить:
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