Редакция сентябрь, 2023
Аннотация
Примечание
/var/lib/ipa/sysrestore/
. При удалении сервера FreeIPA, эти файлы восстанавливаются.
Важно
https://tools.ietf.org/html/rfc2606
) для частных тестовых установок, например, ipa.test.
Примечание
Таблица 1.1. Порты FreeIPA
Служба
|
Порт
|
Протокол
|
---|---|---|
HTTP/HTTPS
|
80, 443
|
TCP
|
LDAP/LDAPS
|
389, 636
|
TCP
|
Kerberos
|
88, 464
|
TCP и UDP
|
DNS
|
53
|
TCP и UDP (опционально)
|
# hostnamectl set-hostname ipa.example.test
Примечание
Примечание
#systemctl stop ahttpd
#a2dissite 000-default_https
#a2disport https
#systemctl condreload httpd2
#apt-get install haveged
#systemctl enable --now haveged
# apt-get install freeipa-server
# apt-get install freeipa-server-dns
# apt-get install freeipa-server-trust-ad
ipa-server-install
, ipa-replica-install
, ipa-dns-install
и ipa-ca-install
имеют множество опций, которые можно использовать для предоставления дополнительной информации при интерактивной установке сервера. Их также можно использовать в скриптах.
ipa-server-install(1)
, ipa-replica-install(1)
, ipa-dns-install(1)
и ipa-ca-install(1)
.
Таблица 1.2. Основные опции для ipa-server-install и ipa-replica-install
Опция
|
Описание
|
---|---|
-d, --debug
|
Включить отладку
|
-U, --unattended
|
Включает сеанс автоматической (пакетной) установки, который не запрашивает ввод данных пользователем
|
--hostname=<HOSTNAME>
|
Полное доменное имя (FQDN) сервера FreeIPA (например, server.ipa.example.test). Допускаются только цифры, строчные буквы и дефисы (-).
|
--ip-address=<IP_ADDRESS>
|
Указывает IP-адрес сервера. Эта опция принимает только IP-адреса, связанные с локальным интерфейсом. Опцию можно использовать несколько раз.
|
--dirsrv-config-file=<LDIF_file_name>
|
Путь к файлу LDIF, используемому для изменения конфигурации экземпляра сервера каталогов.
|
-n <DOMAIN_NAME>, --domain=<DOMAIN_NAME>
|
Имя домена сервера LDAP для использования в качестве домена FreeIPA.
|
-p <directory_manager_password>, --ds-password=<directory_manager_password>
|
Пароль суперпользователя cn=Directory Manager для службы LDAP.
|
-a <ipa_admin_password>, --admin-password=<ipa_admin_password>
|
Пароль для учетной записи администратора FreeIPA (admin) для аутентификации в области Kerberos. Для
ipa-replica-install вместо этой опции используется параметр -w .
|
-r <KERBEROS_REALM_NAME>, --realm=<KERBEROS_REALM_NAME>
|
Имя области Kerberos, создаваемой для домена FreeIPA, в верхнем регистре, например, EXAMPLE.TEST. Для
ipa-replica-install эта опция указывает имя области Kerberos существующего развертывания FreeIPA.
|
--setup-dns
|
Указывает сценарию установки настроить службу DNS в домене FreeIPA.
|
--setup-ca
|
Установить и настроить CA на этой реплике. Если CA не настроен, операции с сертификатами перенаправляются на другую реплику с установленным CA. Для
ipa-server-install CA устанавливается по умолчанию, и эту опцию не нужно указывать.
|
Таблица 1.3. Опции CA для ipa-ca-install и ipa-server-install
Опция
|
Описание
|
---|---|
--ca-subject=<SUBJECT>
|
Задает различающееся имя субъекта сертификата CA (по умолчанию: CN=Certificate Authority,O=<REALM_NAME>). Относительные отличительные имена (RDN) располагаются в порядке LDAP, начиная с наиболее конкретного RDN.
|
--subject-base=<SUBJECT>
|
Указывает базу субъекта для сертификатов, выданных FreeIPA (по умолчанию O=<REALM_NAME>). Относительные отличительные имена (RDN) располагаются в порядке LDAP, начиная с наиболее конкретного RDN.
|
--external-ca
|
Создает запрос на подпись сертификата, который должен быть подписан внешним центром сертификации.
|
--external-ca-type={generic,ms-cs}
|
Тип внешнего СА
|
--ca-signing-algorithm={SHA1withRSA,SHA256withRSA,SHA384withRSA,SHA512withRSA}
|
Определяет алгоритм подписи сертификата CA FreeIPA. Значение по умолчанию SHA256withRSA. Этот параметр следует использовать с параметром
--external-ca , если внешний CA не поддерживает алгоритм подписи по умолчанию.
|
Таблица 1.4. Опции DNS (доступны для ipa-dns-install, ipa-server-install и ipa-replica-install если используется опция --setup-dns)
Опция
|
Описание
|
---|---|
--allow-zone-overlap
|
Создать зону DNS, даже если она уже существует.
|
--forwarder=<FORWARDERS>
|
Указывает сервер пересылки DNS для использования со службой DNS. Чтобы указать более одного сервера пересылки, можно использовать этот параметр несколько раз.
|
--no-forwarders
|
Использует корневые серверы со службой DNS вместо серверов пересылки.
|
--auto-forwarders
|
Использовать серверы пересылки DNS, указанные в
/etc/resolv.conf .
|
--forward-policy={only,first}
|
Политика пересылки DNS для глобальных серверов пересылки.
|
--reverse-zone=<REVERSE_ZONE>
|
Указывает обратную зону DNS. Этот параметр можно использовать несколько раз.
|
--no-reverse
|
Не создает обратную зону DNS при настройке домена DNS. Если обратная зона DNS уже настроена, используется эта существующая обратная зона DNS.
Если этот параметр не используется, значение по умолчанию равно true. Это указывает сценарию установки настроить обратный DNS.
|
--auto-reverse
|
Создать необходимые обратные зоны.
|
--no-dnssec-validation
|
Отключить проверку DNSSEC.
|
Таблица 1.5. Опции конфигурации NTP для ipa-server-install, ipa-replica-install и ipa-client-install
Опция
|
Описание
|
---|---|
--ntp-server
|
Позволяет указать один NTP-сервер. Можно использовать несколько раз, чтобы указать несколько серверов.
|
--ntp-pool
|
Позволяет указать пул из нескольких серверов NTP, разрешенных как одно имя хоста.
|
-N, --no-ntp
|
Не настраивать и не запускать chronyd.
|
Примечание
ipa-server-install
в конфигурации по умолчанию, не указаны CA параметры, например, --external-ca
или --ca-less
, сервер FreeIPA устанавливается с интегрированным CA.
# ipa-server-install
Do you want to configure integrated DNS (BIND)? [no]: yes
Примечание
Server host name [ipa.example.test]: Please confirm the domain name [example.test]: Please provide a realm name [EXAMPLE.TEST]:
Важно
Directory Manager password: Password (confirm):
Предупреждение
IPA admin password: Password (confirm):
Do you want to configure DNS forwarders? [yes]:
Following DNS servers are configured in /etc/resolv.conf: 127.0.0.1 Do you want to configure these servers as DNS forwarders? [yes]:
All detected DNS servers were added. You can enter additional addresses now: Enter an IP address for a DNS forwarder, or press Enter to skip: 8.8.8.8 DNS forwarder 8.8.8.8 added. You may add another. Enter an IP address for a DNS forwarder, or press Enter to skip: DNS forwarders: 127.0.0.1, 8.8.8.8 Checking DNS forwarders, please wait ...
Примечание
Do you want to search for missing reverse zones? [yes] Checking DNS domain 0.168.192.in-addr.arpa., please wait ... Do you want to create reverse zone for IP 192.168.0.162 [yes]: yes Please specify the reverse zone name [0.168.192.in-addr.arpa.]: Checking DNS domain 0.168.192.in-addr.arpa., please wait ... Using reverse zone(s) 0.168.192.in-addr.arpa.
Примечание
NetBIOS domain name [EXAMPLE]:
Do you want to configure OPENNTPD with NTP server or pool address? [no]:
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
, который может помочь определить проблему если установка завершилась ошибкой.
# 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-имя этого сервера.
Предупреждение
--setup-dns
— создать зону DNS, если она еще не существует, и настроить DNS-сервер;
--forwarder
или --no-forwarders
— в зависимости от того, нужно ли настроить серверы пересылки DNS или нет;
--auto-reverse
или --no-reverse
— в зависимости от того, нужно ли настроить автоматическое обнаружение обратных зон DNS, которые должны быть созданы в FreeIPA DNS, или отключить автоматическое определение обратных зон;
--allow-zone-overlap
— создать зону DNS, даже если она уже существует. Если имя домена уже где-то используется, установка сервера FreeIPA может завершиться с ошибкой, этот параметр позволяет игнорировать эту ошибку;
--no-dnssec-validation
— отключить DNSSEC. Если в дальнейшем планируется настраивать доверительные отношения с Active Directory и настраивать сервер пересылки DNS, то DNSSEC необходимо выключить. Иначе сервер DNS от FreeIPA будет ожидать защищенного ответа от DNS Active Directory.
Примечание
# ipa-server-install --help
--dirsrv-cert-file
для указания сертификата и файлов закрытого ключа сервера LDAP;
--dirsrv-pin
для указания пароля доступа к закрытому ключу;
--http-cert-file
для указания сертификата и файлов закрытого ключа сервера Apache;
--http-pin
для указания пароля доступа к закрытому ключу;
--dirsrv-cert-file
и --http-cert-file
для файлов сертификатов с полной цепочкой сертификатов ЦС или ее частью;
--ca-cert-file
для файла или файлов, содержащих сертификат центра сертификации, который выдал сертификаты LDAP, Apache Server и 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.
Предупреждение
# echo $HOSTNAME
ipa.example.test
# mkdir ~/test_ca
password.txt
с паролем к закрытому ключу (длина пароля должна быть не меньше 8 символов):
# echo "SECret.123" > ~/test_ca/password.txt
# certutil -d ~/test_ca -N -f ~/test_ca/password.txt
# head -c20 /dev/random > ~/test_ca/noise.txt
# export CERT_SERIAL=1
#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
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
# head -c20 /dev/random > ~/test_ca/noise.txt
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":
# 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
# certutil -d ~/test_ca -L -n "CA" -a > ~/test_ca/cacert.pem
# export PSWD=$(cat ~/test_ca/password.txt)
# 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.11
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)
* Configure SID generation
To accept the default shown in brackets, press the Enter key.
Do you want to configure integrated DNS (BIND)? [no]: yes
Примечание
Server host name [ipa.example.test]: Please confirm the domain name [example.test]: Please provide a realm name [EXAMPLE.TEST]:
Важно
Directory Manager password: Password (confirm):
IPA admin password: Password (confirm):
Предупреждение
Do you want to configure DNS forwarders? [yes]:
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] Checking DNS domain 0.168.192.in-addr.arpa., please wait ... Do you want to create reverse zone for IP 192.168.0.162 [yes]: yes Please specify the reverse zone name [0.168.192.in-addr.arpa.]: Checking DNS domain 0.168.192.in-addr.arpa., please wait ... Using reverse zone(s) 0.168.192.in-addr.arpa.
Примечание
NetBIOS domain name [EXAMPLE]:
Do you want to configure OPENNTPD with NTP server or pool address? [no]:
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
# ipa dnsrecord-add example.test _ntp._udp --srv-priority=0 --srv-weight=100 --srv-port=123 --srv-target=ipa.example.test
$kinit admin
Password for admin@EXAMPLE.TEST: $klist
Ticket cache: KEYRING:persistent:0:0 Default principal: admin@EXAMPLE.TEST Valid starting Expires Service principal 29.08.2023 16:12:36 30.08.2023 15:51:19 krbtgt/EXAMPLE.TEST@EXAMPLE.TEST
# ipactl status
Directory Service: RUNNING
krb5kdc Service: RUNNING
kadmin Service: RUNNING
named Service: RUNNING
httpd Service: RUNNING
ipa-custodia Service: RUNNING
pki-tomcatd Service: RUNNING
ipa-otpd Service: RUNNING
ipa-dnskeysyncd Service: RUNNING
ipa: INFO: The ipactl command was successful
/var/log/ipaserver-install.log
/var/log/httpd2/error_log
/var/log/dirsrv/slapd-INSTANCE-NAME/access
/var/log/dirsrv/slapd-INSTANCE-NAME/errors
/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
# ipa-server-install --uninstall
Примечание
# ipa server-role-find --role 'DNS server'
----------------------------------------
установлено соответствие 2 ролей сервера
----------------------------------------
Имя сервера: ipa.example.test
Имя роли: DNS server
Состояние роли: enabled
Имя сервера: ipabackup.example.test
Имя роли: DNS server
Состояние роли: enabled
---------------------------------
Количество возвращённых записей 2
---------------------------------
ipa-dns-install(1)
).
# ipa server-role-find --role 'CA server'
----------------------------------------
установлено соответствие 2 ролей сервера
----------------------------------------
Имя сервера: ipa.example.test
Имя роли: CA server
Состояние роли: enabled
Имя сервера: ipabackup.example.test
Имя роли: CA server
Состояние роли: enabled
---------------------------------
Количество возвращённых записей 2
---------------------------------
ipa-ca-install(1)
).
# ipa server-role-find --role 'KRA server'
----------------------------------------
установлено соответствие 2 ролей сервера
----------------------------------------
Имя сервера: ipa.example.test
Имя роли: KRA server
Состояние роли: absent
Имя сервера: ipabackup.example.test
Имя роли: KRA server
Состояние роли: absent
---------------------------------
Количество возвращённых записей 2
---------------------------------
ipa-kra-install(1)
).
# ipa config-show | grep 'CA renewal'
# ipa-crlgen-manage status
$ ssh ipa_user@another_server
$ kinit admin
$ ipa server-del ipabackup.example.test
# ipa-server-install --uninstall
This is a NON REVERSIBLE operation and will delete all data and configuration!
It is highly recommended to take a backup of existing data and configuration using ipa-backup utility before proceeding.
Are you sure you want to continue with the uninstall procedure? [no]: yes
Updating DNS system records
Принудительное удаление ipabackup.example.test
------------------------------------
Удалён IPA-сервер "ipabackup.example.test"
------------------------------------
Shutting down all IPA services
Unconfiguring named
Unconfiguring ipa-dnskeysyncd
Unconfiguring web server
Unconfiguring krb5kdc
Unconfiguring kadmin
Unconfiguring directory server
selinux is disabled, will not relabel ports or files.
Unconfiguring ipa-custodia
Unconfiguring ipa-otpd
Removing IPA client configuration
Removing Kerberos service principals from /etc/krb5.keytab
Disabling client Kerberos and LDAP configurations
Restoring client configuration files
Restoring (none) as NIS domain.
nscd daemon is not installed, skip configuration
nslcd daemon is not installed, skip configuration
Systemwide CA database updated.
Client uninstall complete.
The ipa-client-install command was successful
The ipa-server-install command was successful
Примечание
$ kinit admin
ipa
. Список доступных команд:
$ ipa help commands
automember-add Добавить правило автоучастия.
automember-add-condition Добавить условия в правило автоучастия.
automember-default-group-remove Удалить группу по умолчанию (резервную) для всех несоответствующих записей.
automember-default-group-set Установить группу по умолчанию (резервную) для всех несоответствующих записей.
automember-default-group-show Показать сведения о группах автоучастия по умолчанию (резервных).
automember-del Удалить правило автоучастия.
…
Команды сгруппированы по типу объекта. Все объекты можно просмотреть, выполнив команду: Список доступных команд:
$ ipa help commands
automember Правило автоучастия.
automount Автомонтирование
ca Управление службами сертификации
caacl Управление правилами CA ACL.
cert Операции с сертификатами IPA
…
$ ipa help <тема>
Например, вывести информацию об управлении службами сертификации:
$ ipa help ca
$ ipa <команда> --help
или
$ ipa help <команда>
Например, вывести информацию о команде ipa user-add
:
$ ipa user-add --help
ipa *-find
. Список всех команд ipa *-find
:
$ ipa help commands | grep find
Например, вывести всех пользователей:
$ ipa user-find
Вывести все группы имя или описание которых содержит слово admin:
$ ipa group-find admin
Вывести группы, в которые входит пользователь ivanov:
$ ipa group-find --user=ivanov
Вывести все группы, в которые не входит пользователь ivanov:
$ ipa group-find --no-user=ivanov
ipa *-show
. Например, вывести подробную информацию о узле comp01.example.test
$ ipa host-show comp01.example.test
Примечание
Важно
kinit
для доступа к ресурсам FreeIPA.
$ ipa krbtpolicy-show
Максимальный срок жизни: 86400
Максимальный срок для обновления: 604800
Изменить это значение можно как в веб-интерфейсе, так и в командной строке, например:
$ ipa krbtpolicy-mod --maxlife=43200 --maxrenew=86400
Максимальный срок жизни: 43200
Максимальный срок для обновления: 86400
kinit
без указания имени пользователя:
[ivanov@comp01 ~]$ kinit
Password for ivanov@EXAMPLE.TEST:
kinit
. Например, чтобы войти в систему как администратор:
[ivanov@comp01 ~]$ kinit admin
Password for admin@EXAMPLE.TEST:
klist
для отображения кэшированного билета. В следующем примере кеш содержит билет для принципала ivanov, что означает, что на этом хосте только пользователь ivanov в настоящее время имеет доступ к службам FreeIPA:
[ivanov@comp01 ~]$ klist
Ticket cache: KEYRING:persistent:1034400003:krb_ccache_fxAUnBu
Default principal: ivanov@EXAMPLE.TEST
Valid starting Expires Service principal
01.09.2023 09:35:59 02.09.2023 09:31:20 krbtgt/EXAMPLE.TEST@EXAMPLE.TEST
network.negotiate-auth.trusted-uris
.
/etc/chromium/policies/managed/policies.json
добавить строку:
{ "AuthServerAllowlist": "*.example.test" }где .example.test — имя kerberos области (realm).
Примечание
$ chromium-browser --auth-server-allowlist="*.example.test"
/etc/chromium/policies/managed/policies.json
добавить строку:
{ "AuthServerAllowlist": "*.example.test" }где .example.test — имя kerberos области (realm).
Примечание
$ chromium-gost --auth-server-allowlist="*.example.test"
/etc/opt/yandex/browser/policies/managed/policies.json
добавить строку:
{ "AuthServerAllowlist": "*.example.test" }где .example.test — имя kerberos области (realm).
Таблица 9.1. Файлы журналов сервера и клиента FreeIPA
Файл/каталог
|
Описание
|
---|---|
/var/log/ipaserver-install.log
|
Журнал установки сервера FreeIPA
|
/var/log/ipareplica-install.log
|
Журнал установки реплики FreeIPA
|
/var/log/ipaclient-install.log
|
Журнал установки клиента FreeIPA
|
/var/log/sssd/
|
Файлы журналов службы SSSD (можно включить подробное логирование в файле
/etc/sssd/sssd.conf или командой sssctl )
|
/etc/logrotate.d/
|
Политики ротации логов для служб DNS, SSSD, Apache, Tomcat и Kerberos.
|
/etc/pki/pki-tomcat/logging.properties
|
Ссылка на конфигурацию ведения журнала центра сертификации (по умолчанию ссылка на файл
/usr/share/pki/server/conf/logging.properties )
|
Таблица 9.2. Файлы журналов сервера каталогов (Directory Service)
Файл/каталог
|
Описание
|
---|---|
/var/log/dirsrv/slapd-<REALM_NAME>
|
Файлы журналов, связанные с экземпляром DS, используемым сервером FreeIPA. Основная часть записанных здесь данных относятся к взаимодействиям сервера и реплики
|
/var/log/dirsrv/slapd-<REALM_NAME>/audit
|
Содержит журналы аудита всех операций DS, если аудит включен в конфигурации DS
|
/var/log/dirsrv/slapd-<REALM_NAME>/access
|
Содержит подробную информацию о попытках доступа к экземпляру DS домена
|
/var/log/dirsrv/slapd-<REALM_NAME>/errors
|
Содержит подробную информацию о неудачных операциях для экземпляра DS домена
|
Таблица 9.3. Файлы журналов сервера Apache
Файл/каталог
|
Описание
|
---|---|
/var/log/httpd2/
|
Файлы журналов веб-сервера Apache
|
/var/log/httpd2/access_log
|
Стандартный журнал доступа веб-сервера Apache. Сообщения, специфичные для FreeIPA, записываются вместе с сообщениями Apache, поскольку веб-интерфейс FreeIPA и интерфейс командной строки используют Apache. В журналах доступа в основном регистрируются только субъект-пользователь и используемый URI, который часто является конечной точкой RPC.
|
/var/log/httpd2/error_log
|
Стандартный журнал ошибок веб-сервера Apache. Журнал ошибок содержит журналы сервера FreeIPA.
|
Таблица 9.4. Файлы журналов системы сертификатов FreeIPA
Файл/каталог
|
Описание
|
---|---|
/var/log/pki/pki-ca-spawn.<time_of_installation.>log
|
Журнал установки центра сертификации (CA) FreeIPA
|
/var/log/pki/pki-kra-spawn.<time_of_installation>.log
|
Журнал установки центра восстановления ключей FreeIPA (KRA)
|
/var/log/pki/pki-tomcat/
|
Каталог верхнего уровня для журналов операций PKI. Содержит журналы CA и KRA.
|
/var/log/pki/pki-tomcat/ca/
|
Каталог с журналами, связанными с операциями над сертификатами. В FreeIPA эти журналы используются для субъектов-служб, узлов и других объектов, использующих сертификаты.
|
/var/log/pki/pki-tomcat/kra/
|
Каталог с журналами, относящимися к KRA
|
Таблица 9.5. Файлы журналов Kerberos
Файл/каталог
|
Описание
|
---|---|
/var/log/krb5kdc.log
|
Основной файл журнала для сервера Kerberos KDC
|
/var/log/kadmind.log
|
Основной файл журнала сервера администрирования Kerberos
|
/etc/krb5.conf
.
Содержание
ipa-replica-install
. Реплики необходимо устанавливать по одной. Установка нескольких реплик одновременно не поддерживается.
ipa-replica-install
.
# apt-get install freeipa-server freeipa-server-dns
ipa-replica-install
(поведение по умолчанию);
ipa-replica-install
;
ipa-replica-install
:
# ipa-replica-install --principal admin --admin-password password
ipa-replica-install
права администратора FreeIPA не потребуются.
Примечание
ipa-replica-install
сначала регистрирует систему в качестве клиента, а затем устанавливает компоненты реплики. Для этого сценария также можно выбрать один из двух способов, чтобы авторизовать установку реплики.
# ipa-replica-install --principal admin --admin-password password
Примечание
ipa-replica-install
:
--server
— для указания полного доменного имени сервера (FQDN);
--domain
— для указания домена DNS FreeIPA.
ipa-replica-install
настраивает только основные службы сервера. Чтобы установить дополнительные службы, например, DNS или центр сертификации (CA), следует добавить соответствующие параметры в ipa-replica-install
:
--setup-dns
и --forwarder
— для установки реплики с DNS;
--setup-ca
— для установки реплики с интегрированным CA;
--dirsrv-cert-file
, --dirsrv-pin
, --http-cert-file
и --http-pin
— для установки реплики без CA.
man ipa-replica-install
.
$ kinit admin
$ ipa hostgroup-add-member ipaservers --hosts ipabackup.example.test
Группа узлов: ipaservers
Описание: IPA server hosts
Узлы-участники: ipa.example.test, ipabackup.example.test
-----------------------------------
Количество добавленных участников 1
-----------------------------------
ipa-replica-install
:
# ipa-replica-install
Примечание
# systemctl reload dbus
$ kinit admin
$ ipa host-add hostb.example.test --random --ip-address=192.168.0.145
----------------------------------
Добавлен узел "hostb.example.test"
----------------------------------
Имя узла: hostb.example.test
Случайный пароль: 2AaT0Ix8itDsYugdDGoRtBt
Пароль: True
Таблица ключей: False
Managed by: hostb.example.test
$ ipa hostgroup-add-member ipaservers --hosts hostb.example.test
Группа узлов: ipaservers
Описание: IPA server hosts
Узлы-участники: ipa.example.test, ipabackup.example.test, hostb.example.test
-----------------------------------
Количество добавленных участников 1
-----------------------------------
ipa-replica-install
, указав сгенерированный пароль в параметре --password
(т.к. пароль часто содержит специальные символы, следует заключить его в одинарные кавычки):
# ipa-replica-install --password '2AaT0Ix8itDsYugdDGoRtBt'
# ipa-replica-install --password '2AaT0Ix8itDsYugdDGoRtBt' --setup-ca --setup-dns --forwarder 192.168.0.151 --forwarder 8.8.8.8
$ ipa dnsrecord-add 0.168.192.in-addr.arpa 145 --ptr-rec 'replica.example.test.'
ipa-replica-install
:
# ipa-replica-install --principal admin --admin-password 12345678
Примечание
ipa-replica-install
с указанием дополнительных параметров:
# ipa-replica-install --principal admin --admin-password 12345678 --setup-ca --setup-dns --forwarder 192.168.0.151 --forwarder 8.8.8.8
# head -c20 /dev/random > ~/test_ca/noise.txt
echo $SKID
):
#SKID="0x`openssl rand -hex 20`"
#echo $SKID
0xa30f48abf89afae77e481c712d234ff0e312d44e #certutil -d ~/test_ca -R -s CN=ipabackup.example.test,O=IPA -o /tmp/replicacert.req -k rsa -g 2048 -z ~/test_ca/noise.txt -f ~/test_ca/password.txt -a --extSKID
Generating key. This may take a few moments... Adding Subject Key ID extension. Enter value for the key identifier fields,enter to omit: 0xa30f48abf89afae77e481c712d234ff0e312d44e Is this a critical extension [y/N]? n
#export CERT_SERIAL=$(($CERT_SERIAL + 1))
#certutil -d ~/test_ca -C -c "CA" -i /tmp/replicacert.req -o /tmp/replicacert.pem -m $CERT_SERIAL -v 120 -f ~/test_ca/password.txt -1 -5 -a
2 - Key encipherment 9 - done Is this a critical extension [y/N]? n 1 - SSL Server 9 - done Is this a critical extension [y/N]? n
# certutil -d ~/test_ca -A -i /tmp/replicacert.pem -n Replica-Cert -a -t ,,
Enter Password or Pin for "NSS Certificate DB":
# pk12util -o ~/test_ca/replicacert.p12 -n Replica-Cert -d ~/test_ca -k ~/test_ca/password.txt -w ~/test_ca/password.txt
pk12util: PKCS12 EXPORT SUCCESSFUL
# ipa-replica-install
\
--dirsrv-cert-file ~/test_ca/replicacert.p12 \
--dirsrv-pin SECret.123 \
--http-cert-file ~/test_ca/replicacert.p12 \
--http-pin SECret.123 \
--no-pkinit
…
The ipa-replica-install command was successful
# ipa-replica-install --password='2AaT0Ix8itDsYugdDGoRtBt'
Configuring client side components
This program will set up IPA client.
Version 4.9.11
Discovery was successful!
Client hostname: hostb.example.test
Realm: EXAMPLE.TEST
DNS Domain: example.test
IPA Server: ipa.example.test
BaseDN: dc=example,dc=test
The ipa-client-install command was successful
The ipa-replica-install command was successful
Примечание
$ ipa user-add test_user
$ ipa user-show test_user
/var/log/ipareplica-install.log
/var/log/ipareplica-conncheck.log
/var/log/ipaclient-install.log
/var/log/httpd2/error_log
/var/log/dirsrv/slapd-INSTANCE-NAME/access
/var/log/dirsrv/slapd-INSTANCE-NAME/errors
/var/log/httpd2/error_log
;
/var/log/dirsrv/slapd-INSTANCE-NAME/access
/var/log/dirsrv/slapd-INSTANCE-NAME/errors
Примечание
# hostnamectl set-hostname comp01.example.test
/etc/net/ifaces/eth0/resolv.conf
со следующим содержимым:
# nameserver 192.168.0.113
где 192.168.0.113 — IP-адрес FreeIPA сервера;
/etc/resolvconf.conf
добавить/отредактировать следующие параметры:
interface_order='lo lo[0-9]* lo.* eth0' search_domains=example.testгде eth0 — интерфейс на котором доступен FreeIPA сервер, example.test — домен;
# resolvconf -u
/etc/resolv.conf
должны появиться строки:
search example.test nameserver 192.168.0.113
Предупреждение
Примечание
/etc/resolv.conf
, то необходимо перезагрузить систему.
# apt-get install freeipa-client zip
# ipa-client-install --mkhomedir
--enable-dns-updates
, чтобы обновить записи DNS с помощью IP-адреса клиентской системы, если выполняется одно из следующих условий:
This program will set up IPA client. Version 4.9.11 Discovery was successful! Do you want to configure CHRONY with NTP server or pool address? [no]: Client hostname: comp08.example.test Realm: EXAMPLE.TEST DNS Domain: example.test IPA Server: ipa.example.test BaseDN: dc=example,dc=test Continue to configure the system with these values? [no]: yes
User authorized to enroll computers: admin Password for admin@EXAMPLE.TEST:
Client configuration complete. The ipa-client-install command was successful
--random
, чтобы команда сгенерировала случайный одноразовый пароль):
# ipa host-add comp03.example.test --random --ip-address=192.168.0.104
-----------------------------------
Добавлен узел "comp03.example.test"
-----------------------------------
Имя узла: comp03.example.test
Случайный пароль: 3SeOaJ5GyOxbPcLmF5wpFQH
Пароль: True
Таблица ключей: False
Managed by: comp03.example.test
Примечание
ipa-client-install
в системе, которая будет настроена в качестве клиента. Чтобы указать одноразовый случайный пароль, необходимо использовать параметр --password
. Т.к. пароль часто содержит специальные символы, следует заключить его в одинарные кавычки:
# ipa-client-install --mkhomedir --password='3SeOaJ5GyOxbPcLmF5wpFQH'
ipa-client-install
с помощью параметров командной строки нужно предоставить всю необходимую информацию, как минимум:
-p PRINCIPAL
, --principal=PRINCIPAL
и -w PASSWORD
, --password=PASSWORD
для указания учетных данных пользователя, уполномоченного регистрировать клиентов;
--password=PASSWORD
для указания одноразового случайного пароля, сгенерированный для клиента;
-k KEYTAB
, --keytab=KEYTAB
, чтобы указать таблицу ключей из предыдущей регистрации.
--unattended
, -U
— не запрашивать у пользователя информацию.
# ipa-client-install -U -p admin -w 12345678
--hostname=HOST_NAME
— полное доменное имя (FQDN) для клиентского компьютера;
--realm=REALM_NAME
— имя области Kerberos для сервера FreeIPA;
--domain=DOMAIN_NAME
— доменное имя;
--server=SERVER
— FQDN сервера FreeIPA.
# ipa-client-install -U --password='3SeOaJ5GyOxbPcLmF5wpFQH' --domain example.test --server ipa.example.test --realm EXAMPLE.TEST --mkhomedir
Примечание
# ipa-client-install --help
Примечание
# apt-get install task-auth-freeipa
# id admin
uid=465000000(admin) gid=465000000(admins) группы=465000000(admins)
/var/log/ipaclient-install.log
.
Примечание
ipa-client-install --uninstall
) или запись его узла отключена (ipa host-disable
) его нельзя повторно зарегистрировать.
# ipa-client-install --force-join
User authorized to enroll computers: admin Password for admin@EXAMPLE.TEST:
# ipa-client-install --keytab /tmp/krb5.keytab -U
This program will set up IPA client.
Version 4.9.11
Discovery was successful!
Client hostname: comp01.example.test
Realm: EXAMPLE.TEST
DNS Domain: example.test
IPA Server: ipa.example.test
BaseDN: dc=example,dc=test
Attempting to sync time with CHRONY
It may take a few seconds
Successfully retrieved CA cert
Subject: CN=Certificate Authority,O=EXAMPLE.TEST
Issuer: CN=Certificate Authority,O=EXAMPLE.TEST
Valid From: 2023-08-28 14:28:44
Valid Until: 2043-08-28 14:28:44
Enrolled in IPA realm EXAMPLE.TEST
Created /etc/ipa/default.conf
Configured /etc/sssd/sssd.conf
Systemwide CA database updated.
Adding SSH public key from /etc/openssh/ssh_host_rsa_key.pub
Adding SSH public key from /etc/openssh/ssh_host_ecdsa_key.pub
Adding SSH public key from /etc/openssh/ssh_host_ed25519_key.pub
Adding SSH public key from /etc/openssh/ssh_host_dsa_key.pub
Configured passwd in /etc/nsswitch.conf
Configured group in /etc/nsswitch.conf
Configured netgroup in /etc/nsswitch.conf
Configured automount in /etc/nsswitch.conf
Configured services in /etc/nsswitch.conf
Configured sudoers in /etc/nsswitch.conf
SSSD enabled
Configured /etc/openldap/ldap.conf
Principal is not set when enrolling with OTP or PKINIT; using principal 'admin@example.test' for 'getent passwd'.
Configured /etc/openssh/ssh_config
Configured /etc/openssh/sshd_config
Configuring example.test as NIS domain.
Configured /etc/krb5.conf for IPA realm EXAMPLE.TEST
Client configuration complete.
The ipa-client-install command was successful
Примечание
--keytab
, используется только при аутентификации для инициации регистрации. Во время повторной регистрации FreeIPA создаст новый keytab для клиента.
# ipa-client-install --uninstall
…
Client uninstall complete.
The original nsswitch.conf configuration has been restored.
You may need to restart services or reboot the machine.
Do you want to reboot the machine? [no]: yes
The ipa-client-install command was successful
/etc/krb5.keytab
:
# ipa-rmkeytab -k /path/to/keytab -r EXAMPLE.TEST
# ipa dnsrecord-del
Имя записи: comp04
Имя зоны: example.test
Возможность удаления определённой записи не предусмотрена.
Удалить все? Yes/No (default No): yes
-----------------------
Удалена запись "comp04"
-----------------------
# ipa host-del comp04.example.test
---------------------------------
Удалён узел "comp04.example.test"
---------------------------------
Примечание
Примечание
/etc/ansible/ansible.cfg
) в секцию [defaults]
строки:
remote_user = root interpreter_python = /usr/bin/python3или в inventory-файл:
[all:vars] ansible_user=root ansible_python_interpreter=/usr/bin/python3
~/.ssh/known_hosts
узла управления. Чтобы создать файл known_hosts, необходимо выполнить следующую команду со всеми именами узлов в качестве параметров:
$ ssh-keyscan <IP-узел1> <hostname-узел1> ... >> ~/.ssh/known_hosts
Примечание
ping
:
$ ansible -i inventory/hosts -m ping ipaclients
comp02.example.test | SUCCESS => {
"changed": false,
"ping": "pong"
}
comp01.example.test | SUCCESS => {
"changed": false,
"ping": "pong"
}
# apt-get install ansible-freeipa
/usr/share/ansible/roles/
хранятся роли для серверов, реплик и клиентов FreeIPA:
$ ls -1 /usr/share/ansible/roles
ipabackup
ipaclient
ipareplica
ipaserver
Для каждой роли приводятся примеры, краткое описание и документация (в файле README.md
):
$ ls -1 /usr/share/ansible/roles/ipaclient
action_plugins
defaults
library
meta
module_utils
README.md
tasks
vars
/usr/share/doc/ansible-freeipa-<версия>/
в файлах README-*.md
находится документация для каждой роли:
$ ls -1 /usr/share/doc/ansible-freeipa-1.5.0/
playbooks
README-automember.md
README-automountlocation.md
README-config.md
README-delegation.md
README-dnsconfig.md
…
/usr/share/doc/ansible-freeipa-<версия>/playbooks/
находятся примеры playbook;
$ ls -1 /usr/share/doc/ansible-freeipa-1.5.0/playbooks/
…
install-client.yml
install-cluster.yml
install-replica.yml
install-server.yml
location
permission
privilege
pwpolicy
remove-all-backups-from-server.yml
remove-backup-from-server.yml
…
inventory/hosts
, необходимо указать:
ipaserver_setup_dns=yes
, чтобы указать, что нужно использовать интегрированный DNS.
ipaserver_auto_forwarders=yes
, чтобы установщик использовал DNS-серверы из настроек сети (из файла /etc/resolv.conf
). Не следует использовать этот параметр, если сервер имен, указанный в файле /etc/resolv.conf
, содержит адрес localhost 127.0.0.1
;
ipaserver_forwarders
, чтобы вручную указать дополнительные серверы;
ipaserver_no_forwarders=yes
, чтобы настроить корневые DNS-серверы.
ipaserver_allow_zone_overlap=yes
, чтобы разрешить создание (обратной) зоны DNS, даже если зона уже существует;
ipaserver_reverse_zones
, чтобы вручную указать обратные зоны;
ipaserver_no_reverse=yes
, чтобы установщик не настраивал обратные зоны.
Примечание
- name: Playbook to configure IPA server hosts: ipaservers become: true vars_files: - playbook_sensitive_data.yml roles: - role: ipaserver state: present
[...] [ipaservers:vars] ipaadmin_password=12345678 ipadm_password=12345678
- name: Playbook to configure IPA server hosts: ipaservers become: true roles: - role: ipaserver state: present
ipaserver_no_dnssec_validation=yes
, если необходимо выключить DNSSEC (например, если в дальнейшем планируется настраивать доверительные отношения с Active Directory и настраивать сервер пересылки DNS).
ipaserver_setup_firewalld=no
, если не нужно устанавливать межсетевой экран.
Примечание
ipaserver_install_packages
в значение no
.
[ipaservers] ipa.example.test [ipaservers:vars] ipaserver_domain=example.test ipaserver_realm=EXAMPLE.TEST ipaserver_setup_dns=yes ipaserver_auto_forwarders=yes ipaserver_allow_zone_overlap=yes ipaserver_no_dnssec_validation=yes ipaadmin_password=12345678 ipadm_password=12345678 ipaserver_setup_firewalld=no
Примечание
/usr/share/ansible/roles/ipaserver/README.md
.
install-server.yml
, содержащего инструкции по развертыванию сервера FreeIPA:
--- - name: Playbook to configure IPA server hosts: ipaservers become: true roles: - role: ipaserver state: presentЗдесь:
hosts: ipaservers
указывает раздел файла inventory/hosts
, где скрипт ansible ищет полные доменные имена узлов, на которых должен быть запущен скрипт ipa-server-install
;
become: true
указывает, что скрипт ipa-client-install
будет вызываться с правами суперпользователя (root);
role: ipaserver
указывает роль, которая будет установлена на узле (в данном случае это роль сервера FreeIPA);
state: present
указывает, что сервер должен быть установлен, а не удален (absent).
--unattended
, -U
— не запрашивать у пользователя информацию.
-v
, -vv
или -vvv
):
$ ansible-playbook -v -i inventory/hosts install-server.yml
Using /etc/ansible/ansible.cfg as config file
PLAY [Playbook to configure IPA server] **********************************************************
TASK [Gathering Facts] ***************************************************************************
ok: [ipa.example.test]
...
PLAY RECAP ***************************************************************************************
ipa.example.test : ok=36 changed=20 unreachable=0 failed=0 skipped=37 rescued=0 ignored=0
ipaserver_setup_dns=no
.
uninstall-server.yml
, содержащего инструкции по удалению сервера FreeIPA:
--- - name: Playbook to uninstall an IdM replica hosts: ipaservers become: true roles: - role: ipaserver ipaserver_remove_from_domain: true state: absent
-v
, -vv
или -vvv
):
$ ansible-playbook -v -i inventory/hosts uninstall-server.yml
ipa-server-install --uninstall -U
, чтобы удалить сервер FreeIPA. Если FreeIPA-сервер не установлен, никаких действий производится не будет (changed=False).
inventory/hosts
, необходимо указать:
- name: Playbook to configure IPA clients with username/password hosts: ipaclients become: true vars_files: - playbook_sensitive_data.yml roles: - role: ipaclient state: present
ipaadmin_password
в разделе [ipaclients:vars]
файла inventory/hosts
(менее безопасно, чем предыдущий способ). Если нужно указать другого пользователя (не admin), следует использовать параметр ipaadmin_principal
для указания имени пользователя, например:
[...] [ipaclients:vars] ipaadmin_principal=my_admin ipaadmin_password=Secret123
- name: Playbook to configure IPA clients with username/password hosts: ipaclients become: true roles: - role: ipaclient state: present
ipaclient_keytab
в разделе [ipaclients:vars]
файла inventory/hosts
, указав путь к файлу, в котором хранится keytab;
Примечание
[ipaclients:vars]
указывается параметр ipaclient_keytab
, то также должен быть указан параметр ipaadmin_keytab
.
ipaclient_use_otp
в разделе [ipaclients:vars]
файла inventory/hosts
. Одновременно с OTP также следует указать либо пароль пользователя, уполномоченного регистрировать клиентов (например, указав значение для ipaadmin_password
), либо admin keytab (например, указав значение для ipaadmin_keytab
).
[ipaservers]
;
ipaclient_domain
в разделе [ipaclients:vars]
для указания DNS-имени FreeIPA, на котором будет зарегистрирован клиент;
ipaclient_realm
в разделе [ipaclients:vars]
для указания имени области Kerberos, контролируемой сервером FreeIPA.
Примечание
/usr/bin/kinit
.
Примечание
ipaclient_install_packages
в значение no
.
[ipaclients] comp01.example.test comp02.example.test [ipaservers] ipa.example.test [ipaclients:vars] ipaclient_domain=example.test ipaclient_realm=EXAMPLE.TEST #ipaclient_use_otp=yes ipaadmin_principal=admin ipaadmin_password=12345678
Примечание
/usr/share/ansible/roles/ipaclient/README.md
.
install-client.yml
, содержащего инструкции по развертыванию клиента FreeIPA:
--- - name: Playbook to configure IPA clients with username/password hosts: ipaclients become: true roles: - role: ipaclient state: presentЗдесь:
hosts: ipaclients
указывает раздел файла inventory/hosts
, где скрипт ansible ищет полные доменные имена узлов, на которых должен быть запущен скрипт ipa-client-install
;
become: true
указывает, что скрипт ipa-client-install
будет вызываться с правами суперпользователя (root);
role: ipaclient
указывает роль, которая будет установлена на узле (в данном случае это роль клиента FreeIPA);
state: present
указывает, что клиент должен быть установлен, а не удален (absent).
--unattended
, -U
— не запрашивать у пользователя информацию.
state
, позволяющий настроить или отменить настройку клиента FreeIPA. Если роль вызывается с параметром state: present
(или параметр state
не определен) выполняется настройка клиента FreeIPA, а именно:
uninstall-client.yml
, содержащего инструкции по удалению клиента FreeIPA:
--- - name: Playbook to unconfigure IPA clients hosts: ipaclients become: true roles: - role: ipaclient state: absent
-v
, -vv
или -vvv
):
$ ansible-playbook -v -i inventory/hosts install-client.yml
Using /etc/ansible/ansible.cfg as config file
PLAY [Playbook to unconfigure IPA clients] *************************************************************************
TASK [Gathering Facts] *********************************************************************************************
ok: [comp02.example.test]
ok: [comp01.example.test]
...
PLAY RECAP **********************************************************
comp01.example.test : ok=21 changed=11 unreachable=0 failed=0 skipped=20 rescued=0 ignored=0
comp02.example.test : ok=21 changed=11 unreachable=0 failed=0 skipped=20 rescued=0 ignored=0
-v
, -vv
или -vvv
):
$ ansible-playbook -v -i inventory/hosts uninstall-client.yml
ipa-client-install --uninstall -U
, чтобы отменить настройку клиента FreeIPA. Если FreeIPA-клиент не установлен, никаких действий производится не будет (changed=False).
/etc/krb5.keytab
.
--forwarder
):
#kinit admin
#ipa dnsforwardzone-add test.alt --forwarder=192.168.0.122 --forward-policy=first
Сервер проверит DNS-перенаправитель (перенаправители). Это может занять некоторое время; пожалуйста, подождите... Имя зоны: test.alt. Активная зона: TRUE Перенаправители зон: 192.168.0.122 Политика перенаправления: first
Примечание
/etc/bind/ipa-options-ext.conf
следует привести параметры dnssec-validation
и dnssec-enable
к виду:
dnssec-enable no; dnssec-validation no;
# systemctl restart bind.service
# dig dc1.test.alt +noall +answer
dc1.test.alt. 709 IN A 192.168.0.122
/etc/bind/options.conf
строки:
zone "example.test" { type forward; forwarders { 192.168.0.113; }; };
# systemctl restart bind.service
C:\> dnscmd 127.0.0.1 /ZoneAdd example.test /Forwarder 192.168.0.113
DNS Server 127.0.0.1 created zone example.test:
Command completed successfully
#dig +short -t SRV _kerberos._udp.example.test
0 100 88 ipa.example.test. #dig +short -t SRV _ldap._tcp.example.test
0 100 389 ipa.example.test.
# dig +short -t TXT _kerberos.example.test
"EXAMPLE.TEST"
#dig +short -t SRV _kerberos._tcp.dc._msdcs.test.alt
0 100 88 dc1.test.alt. #dig +short -t SRV _ldap._tcp.dc._msdcs.test.alt
0 100 389 dc1.test.alt.
Примечание
$ ipa dns-update-system-records
# ipa dns-update-system-records --dry-run --out dns_records.nsupdate
nsupdate
и файла dns_records.nsupdate
. Или добавить DNS-записи на сервер другим способом.
C:\>nslookup.exe
>set type=SRV
>_kerberos._udp.example.test
_kerberos._udp.example.test SRV service location: priority = 0 weight = 100 port = 88 svr hostname = ipa.example.test ipa.example.test internet address = 192.168.0.113 >_ldap._tcp.example.test
_ldap._tcp.example.test SRV service location: priority = 0 weight = 100 port = 389 svr hostname = ipa.example.test ipa.example.test internet address = 192.168.0.113
C:\>nslookup.exe
>set type=TXT
>_kerberos.example.test
_kerberos.example.test text = "EXAMPLE.TEST"
# apt-get install freeipa-server-trust-ad
ipa-adtrust-install
. Сконфигурировать сервер FreeIPA для доверительных отношений с AD:
# ipa-adtrust-install
The log file for this installation can be found in /var/log/ipaserver-adtrust-install.log
==============================================================================
This program will setup components needed to establish trust to AD domains for
the IPA Server.
This includes:
* Configure Samba
* Add trust related objects to IPA LDAP server
To accept the default shown in brackets, press the Enter key.
Configuring cross-realm trusts for IPA server requires password for user 'admin'.
This user is a regular system account used for IPA server administration.
admin password:
ipa-adtrust-install
выведет список служебных записей, которые нужно вручную добавить в DNS.
/etc/samba/smb.conf
уже существует и будет переписан:
WARNING: The smb.conf already exists. Running ipa-adtrust-install will break your existing samba configuration. Do you wish to continue? [no]: yes
Do you want to enable support for trusted domains in Schema Compatibility plugin? This will allow clients older than SSSD 1.9 and non-Linux clients to work with trusted users. Enable trusted domains support in slapi-nis? [no]: yes
Done configuring CIFS. ============================================================================= Setup complete You must make sure these network ports are open: TCP Ports: * 135: epmap * 138: netbios-dgm * 139: netbios-ssn * 445: microsoft-ds * 1024..1300: epmap listener range * 3268: msft-gc UDP Ports: * 138: netbios-dgm * 139: netbios-ssn * 389: (C)LDAP * 445: microsoft-ds See the ipa-adtrust-install(1) man page for more details
# ipactl restart
Restarting Directory Service
Restarting krb5kdc Service
Restarting kadmin Service
Restarting named Service
Restarting httpd Service
Restarting ipa-custodia Service
Restarting pki-tomcatd Service
Restarting smb Service
Restarting winbind Service
Restarting ipa-otpd Service
Restarting ipa-dnskeysyncd Service
ipa: INFO: The ipactl command was successful
smbclient
, чтобы убедиться, что Samba отвечает на аутентификацию Kerberos со стороны FreeIPA:
# smbclient -L ipa.example.test -k
lpcfg_do_global_parameter: WARNING: The "domain logons" option is deprecated
Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (Samba 4.16.11)
…
--two-way=true
;
--external=true
.
#kinit admin
#ipa trust-add --type=ad test.alt --admin Administrator --password --two-way=true
Пароль администратора домена Active Directory: …
Важно
--admin
), должна быть членом группы Domain Admins. Имя учетной записи должно быть на английском языке.
Примечание
# ipa trust-fetch-domains test.alt
-------------------------------------------------------------------------------------------------------
Список надёжных доменов успешно обновлён. Используйте команду trustdomain-find для вывода этого списка.
-------------------------------------------------------------------------------------------------------
---------------------------------
Количество возвращённых записей 0
---------------------------------
# ipa trustdomain-find test.alt
Имя домена: test.alt
Имя домена NetBIOS: TEST
Идентификатор безопасности домена: S-1-5-21-90931260-536030259-1550036695
Домен включён: True
---------------------------------
Количество возвращённых записей 1
---------------------------------
# kinit ivanov@test.alt
Password for ivanov@test.alt:
# kvno -S host $(hostname)
host/ipa.example.test@EXAMPLE.TEST: kvno = 2
# kvno -S cifs dc1.test.alt
cifs/dc1.test.alt@TEST.ALT: kvno = 1
# klist
Ticket cache: KEYRING:persistent:500:krb_ccache_QfXae5u
Default principal: ivanov@TEST.ALT
Valid starting Expires Service principal
07.09.2023 12:28:14 07.09.2023 22:27:51 cifs/dc1.test.alt@TEST.ALT
renew until 08.09.2023 12:27:46
07.09.2023 12:27:33 07.09.2023 22:27:51 host/ipa.example.test@EXAMPLE.TEST
renew until 08.09.2023 12:27:46
07.09.2023 12:28:05 07.09.2023 22:27:51 krbtgt/EXAMPLE.TEST@TEST.ALT
renew until 08.09.2023 12:27:46
07.09.2023 12:27:51 07.09.2023 22:27:51 krbtgt/TEST.ALT@TEST.ALT
renew until 08.09.2023 12:27:46
#В выводе этих команд должны быть перечислены все серверы FreeIPA, на которых была выполнена командаdig +short -t SRV _kerberos._udp.dc._msdcs.example.test
0 100 88 ipa.example.test. #dig +short -t SRV _ldap._tcp.dc._msdcs.example.test
0 100 389 ipa.example.test.
ipa-adtrust-install
.
#dig +short -t SRV _kerberos._udp.dc._msdcs.test.alt
0 100 88 dc1.test.alt. #dig +short -t SRV _ldap._tcp.dc._msdcs.test.alt
0 100 389 dc1.test.alt.
Важно
Примечание
ipa-adtrust-install
должны появится записи отвечающие за работу сервисов MS DC Kerberos через UDP и LDAP через TCP:
C:\>nslookup.exe
>set type=SRV
>_kerberos._udp.dc._msdcs.example.test.
_kerberos._udp.dc._msdcs.example.test SRV service location: priority = 0 weight = 100 port = 88 svr hostname = ipa.example.test >_ldap._tcp.dc._msdcs.example.test.
_ldap._tcp.dc._msdcs.example.test SRV service location: priority = 0 weight = 100 port = 389 svr hostname = ipa.example.test ipa.example.test internet address = 192.168.0.113
C:\>nslookup.exe
>set type=SRV
>_kerberos._udp.dc._msdcs.test.alt.
_kerberos._udp.dc._msdcs.test.alt. SRV service location: priority = 0 weight = 100 port = 88 svr hostname = dc1.test.alt. dc1.domc.testc internet address = 192.168.0.122 >_ldap._tcp.dc._msdcs.test.alt.
_ldap._tcp.dc._msdcs.example.test SRV service location: _ldap._tcp.dc._msdcs.test.alt. SRV service location: priority = 0 weight = 100 port = 389 svr hostname = dc1.dtest.alt. dc1.domc.testc internet address = 192.168.0.122
# getent passwd ivanov@test.alt
ivanov@test.alt:*:348001105:348001105:Иван Иванов:/home/test.alt/ivanov:
где ivanov — это пользователь из AD домена.
/etc/sssd/sssd.conf
следующую строчку:
[domain/example.test] ... default_shell = /bin/bash ...
#systemctl restart sssd
#getent passwd ivanov@test.alt
ivanov@test.alt:*:348001105:348001105:Иван Иванов:/home/test.alt/ivanov:/bin/bash
# ipa trust-del test.alt
# ipa trust-show test.alt
ipa: ERROR: test.alt: отношение доверия не найден
Примечание
Примечание
# ipa idrange-find
-------------------------------------
установлено соответствие 2 диапазонов
-------------------------------------
Имя диапазона: EXAMPLE.TEST_id_range
Первый идентификатор POSIX диапазона: 1034400000
Количество идентификаторов в диапазоне: 200000
Первый RID соответствующего диапазона RID: 1000
Первый RID вторичного диапазона RID: 100000000
Тип диапазона: local domain range
Имя диапазона: TEST.ALT_id_range
Первый идентификатор POSIX диапазона: 1939200000
Количество идентификаторов в диапазоне: 200000
Первый RID соответствующего диапазона RID: 0
SID доверенного домена: S-1-5-21-578923263-1107570656-1287136478
Тип диапазона: Active Directory domain range
Auto private groups: hybrid
---------------------------------
Количество возвращённых записей 2
---------------------------------
# ipa idrange-del TEST.ALT_id_range
# systemctl restart sssd
Содержание
[a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,252}[a-zA-Z0-9_.$-]?При сохранении FreeIPA переводит все символы имени учётной записи в нижний регистр (поэтому при входе пользователя используются только строчные буквы и нельзя создать пользователей, у которых имя учётной записи отличается только регистром букв).
ipa config-mod --maxusername
. Например, увеличение максимальной длины имени учётной записи до 64 символов:
$ ipa config-mod --maxusername=64
Максимальная длина имени пользователя: 64
Максимальная длина имени узла: 64
Основа домашних каталогов: /home
Оболочка по умолчанию: /bin/bash
Группа пользователей по умолчанию: ipausers
Почтовый домен по умолчанию: example.test
…
Важно
Важно
ipa user-disable admin
.
ipa user-add
используется для добавления активных пользователей. Для создания неподтверждённых учётных записей используется команда ipa stageuser-add
.
Примечание
User Administrator
;
$ ipa user-add <логин> --first=<имя> --last=<фамилия> --email=<email>
$ ipa stageuser-add markov --first=Илья --last=Марков --email=markov@example.test
-----------------------------------------------
Добавлен неподтверждённый пользователь "markov"
-----------------------------------------------
Имя учётной записи пользователя: markov
Имя: Илья
Фамилия: Марков
Полное имя: Илья Марков
Отображаемое имя: Илья Марков
Инициалы: ИМ
Домашний каталог: /home/markov
GECOS: Илья Марков
Оболочка входа: /bin/bash
Имя учётной записи: markov@EXAMPLE.TEST
Псевдоним учётной записи: markov@EXAMPLE.TEST
Адрес электронной почты: markov@example.test
UID: -1
ID группы: -1
Пароль: False
Доступные ключи Kerberos: False
ipa user-add
:
$ ipa help user-add
$ ipa user-find
$ ipa stageuser-activate <логин>
$ ipa stageuser-activate markov
---------------------------
Stage user markov activated
---------------------------
Имя учётной записи пользователя: markov
Имя: Илья
Фамилия: Марков
Домашний каталог: /home/markov
Оболочка входа: /bin/bash
Имя учётной записи: markov@EXAMPLE.TEST
Псевдоним учётной записи: markov@EXAMPLE.TEST
Адрес электронной почты: markov@example.test
UID: 948000005
ID группы: 948000005
Пароль: False
Участник групп: ipausers
Доступные ключи Kerberos: False
--preserve
команды ipa user-del
:
$ ipa user-del --preserve <логин>
Например:
$ ipa user-del --preserve markov
-----------------------
Preserved user "markov"
-----------------------
ipa user-del <логин>
— удалить активного или хранимого пользователя;
ipa stageuser-del <логин>
— удалить неподтверждённого пользователя.
--continue
:
$ ipa user-del --continue user1 user2 user3
-----------------------
Preserved user "markov"
-----------------------
$ ipa user-del markov
----------------------------
Удален пользователь "markov"
----------------------------
ipa user-undel <логин>
. При восстановлении учётной записи восстанавливаются не все предыдущие атрибуты учетной записи. Например, пароль пользователя не восстанавливается и должен быть установлен заново.
$ ipa user-undel markov
--------------------------------------------------------------
Учётная запись пользователя "markov" возвращена после удаления
--------------------------------------------------------------
User Administrator
.
Примечание
Примечание
Примечание
Примечание
Примечание
Примечание
Примечание
Таблица 31.1. Команды
Описание
|
Команда
|
Опции
|
---|---|---|
Изменение глобальных методов аутентификации
|
config-mod
|
--user-auth-type=password/otp/radius
|
Изменение метода аутентификации пользователя
|
user-mod
|
--user-auth-type=password/otp/radius --radius=STR --radius-username=STR
|
ipa config-mod --user-auth-type=otp
ipa user-mod ivanov --user-auth-type=otp
Таблица 31.2. Команды
Описание
|
Команда
|
Опции
|
---|---|---|
Добавить сервер RADIUS
|
radiusproxy-add
|
NAME --desc=STR --server=STR --secret --timeout=INT --retries=INT --userattr=STR
|
Найти сервер RADIUS
|
radiusproxy-find
|
--name=STR --desc=STR --server=STR --timeout=INT --retries=INT --userattr=STR
|
Изменить сервер RADIUS
|
radiusproxy-mod
|
--rename=STR --desc=STR --server=STR --secret --timeout=INT --retries=INT --userattr=STR
|
Удалить сервер RADIUS
|
radiusproxy-del
|
|
Показать информацию о сервере RADIUS
|
radiusproxy-show
|
|
$ ipa radiusproxy-add freeradius_test --server=192.168.0.101 --secret
Секрет:
Введите Секрет ещё раз для проверки:
-----------------------------------------------
Добавлен прокси-сервер RADIUS "freeradius_test"
-----------------------------------------------
Имя прокси-сервера RADIUS: freeradius_test
Сервер: 192.168.0.101
Секрет: cGFzc3dvcmQ=
$ ipa radiusproxy-show freeradius_test
Имя прокси-сервера RADIUS: freeradius_test
Сервер: 192.168.0.101
Таблица 31.3. Команды
Описание
|
Команда
|
Опции
|
---|---|---|
Добавить токен
|
otptoken-add
|
--type=STRENUM --desc=STR --owner=LOGIN --disabled=BOOL --not-before=STR --not-after=STR --vendor=STR --model=STR --serial=STR --key=STR --algo=STRENUM --digits=6/8 --offset=INT --interval=INT --no-qrcode
|
Добавить менеджера для токена
|
otptoken-add-managedby
|
--users=STR
|
Добавить токен yubikey
|
otptoken-add-yubikey
|
--desc=STR --owner=LOGIN --disabled=BOOL --notbefore=STR --not-after=STR --digits=6/8 --slot=1/2
|
Удалить токен
|
otptoken-del
|
|
Найти токен
|
otptoken-find
|
--type=STRENUM --desc=STR --owner=LOGIN --disabled=BOOL --not-before=STR --not-after=STR --vendor=STR --model=STR --serial=STR --algo=STRENUM --digits=6/8 --offset=INT --interval=INT --id=STR
|
Изменить токен
|
otptoken-mod
|
--rename=STR --desc=STR --owner=LOGIN --disabled=BOOL --not-before=STR --not-after=STR --vendor=STR --model=STR --serial=STR
|
Удалить менеджера токена
|
otptoken-remove-managedby
|
--users=STR
|
Показать информацию о токене
|
otptoken-show
|
|
Выполнить синхронизацию токена
|
otptoken-sync
|
--user=STR --password --first-code --second-code
|
$ ipa otptoken-add
ivanov_otp --type=TOTP --desc=ivanov_token --owner=ivanov
-------------------------------
Добавлен токен OTP "ivanov_otp"
-------------------------------
Уникальный идентификатор: ivanov_otp
Тип: TOTP
Описание: ivanov_token
Владелец: ivanov
Ключ: mW+LBliuxKjy3PCb/JKOszbZGmTElSrhIg70E3QruXqu+W4=
Алгоритм: sha1
Цифры: 6
Смещение времени: 0
Временной интервал: 30
Универсальный код ресурса (URI):
otpauth://totp/ivanov@EXAMPLE.TEST:ivanov_otp?issuer=ivanov%40EXAMPLE.TEST
&secret=TFXYWBSYV3CKR4W46CN7ZEUOWM3NSGTEYSKSVYJCB32BG5BLXF5K56LO&digits=6&algorithm=SHA1&period=30
$ ipa otptoken-add-managedby ivanov_otp --users=ivanov
Уникальный идентификатор: ivanov_otp
Описание: ivanov_token
Владелец: uid=ivanov,cn=users,cn=accounts,dc=example,dc=test
Руководитель: ivanov
-----------------------------------
Количество добавленных участников 1
-----------------------------------
$ ipa otptoken-del
Уникальный идентификатор: ivanov_otp
-----------------------------
Удалён токен OTP "ivanov_otp"
-----------------------------
$kinit admin
Password for admin@EXAMPLE.TEST: $ipa user-add otptest
Имя: OTP Фамилия: test ------------------------------- Добавлен пользователь "otptest" ------------------------------- Имя учётной записи пользователя: otptest Имя: OTP Фамилия: test Полное имя: OTP test Отображаемое имя: OTP test Инициалы: Ot Домашний каталог: /home/otptest GECOS: OTP test Оболочка входа: /bin/bash Имя учётной записи: otptest@EXAMPLE.TEST Псевдоним учётной записи: otptest@EXAMPLE.TEST Адрес электронной почты: otptest@example.test UID: 587200007 ID группы: 587200007 Пароль: False Участник групп: ipausers Доступные ключи Kerberos: False $ipa passwd otptest
Новый пароль: Введите Новый пароль ещё раз для проверки: ------------------------------------- Изменён пароль "otptest@EXAMPLE.TEST" ------------------------------------- $ kinit otptest Password for otptest@EXAMPLE.TEST: Password expired. You must change it now. Enter new password: Enter it again:
$kinit admin
Password for admin@EXAMPLE.TEST: $ipa user-mod otptest --user-auth-type=otp
------------------------------ Изменён пользователь "otptest" ------------------------------ Имя учётной записи пользователя: otptest Имя: OTP Фамилия: test Домашний каталог: /home/otptest Оболочка входа: /bin/bash Имя учётной записи: otptest@EXAMPLE.TEST Псевдоним учётной записи: otptest@EXAMPLE.TEST Адрес электронной почты: otptest@example.test UID: 587200007 ID группы: 587200007 Типы аутентификации пользователей: otp Учётная запись отключена: False Пароль: True Участник групп: ipausers Доступные ключи Kerberos: True
$ipa otptoken-add
--type=TOTP --desc=otptest_token --owner=otptest --algo=sha1 --digits=6 --interval=30 Password for admin@EXAMPLE.TEST: $ipa user-mod otptest --user-auth-type=otp
--------------------- Добавлен токен OTP "" --------------------- Уникальный идентификатор: 33014fa0-0d7f-4775-a05c-05f09c6ff8e6 Тип: TOTP Описание: otptest_token Владелец: otptest Ключ: hzNKJClpoG/nB0aer4/XQRfh7deLpTj0WKvaxNcZqAWX9SY= Алгоритм: sha1 Цифры: 6 Смещение времени: 0 Временной интервал: 30 Универсальный код ресурса (URI): otpauth://totp/otptest@EXAMPLE.TEST:33014fa0-0d7f-4775-a05c-05f09c6ff8e6?issuer=otptest%40EXAMPLE.TEST &secret=Q4ZUUJBJNGQG7ZYHI2PK7D6XIEL6D3OXROSTR5CYVPNMJVYZVACZP5JG&digits=6&algorithm=SHA1&period=30
https://ipa.example.test/ipa/ui/
и ввести данные администратора для входа в систему.
Примечание
Примечание
# apt-get install lightdm-kde-greeter
# systemctl disable --now display-manager && systemctl enable --now lightdm
$ ssh-keygen -t ed25519
На вопрос о файле для сохранения ключа нажать Enter (по умолчанию). На вопрос о пароле к ключу также нажать Enter (не указывать пароль)
$ ssh-copy-id -i ~/.ssh/id_ed25519.pub user@comp01.example.test
$ssh user@comp01.example.test
[user@comp01 ~]$su -
Password: [root@comp01 ~]#cat /home/user/.ssh/authorized_keys >>.ssh/authorized_keys
[root@comp01 ~]#exit
выход [user@comp01 ~]$exit
выход Connection to comp01 closed.
acc
.
# apt-get install alterator-fbi
И запущены сервисы ahttpd
и alteratord
:
#systemctl enable --now ahttpd
#systemctl enable --now alteratord
https://ip-адрес:8080/
.
rpm -qa | grep alterator*
Прочие пакеты для ЦУС можно найти, выполнив команду:
apt-cache search alterator*
#apt-get install alterator-net-openvpn
#apt-get remove alterator-net-openvpn