Загрузка данных
INFRA-SRV1:
Имя узла должно быть полным (FQDN):
для перехода в суперпользователя используем команду: sudo su -
из-под суперпользователя задаём полное доменное имя
hostnamectl set-hostname infra-srv1.au-team.cloud; exec bash
Проверить заданное имя можно следующим образом:
[root@infra-srv1 ~]# hostname -f
infra-srv1.au-team.cloud
Для ускорения генерации криптографических ключей (особенно на виртуальных машинах) рекомендуется установить демон энтропии haveged:
apt-get update && apt-get install -y haveged
systemctl enable --now haveged
Настраиваем корректный часовой пояс:
apt-get install -y tzdata
в случае ошибки (Failed to set time zone: Failed to set time zone: No such file or directory) - выполнить команду повторно
timedatectl set-timezone Europe/Moscow
Проверить можно следующим образом:
[root@infra-srv1 ~]# timedatectl
Local time: Fri 2026-03-13 17:33:32 MSK
Universal time: Fri 2026-03-13 14:33:32 UTC
RTC time: Fri 2026-03-13 14:33:32
Time zone: Europe/Moscow (MSK, +0300)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
Установим пакет для FreeIPA с встроенным DNS-сервером:
также установим и chrony
apt-get install -y freeipa-server-dns chrony
запустим и добавим в автозагрузку службу chronyd:
systemctl enable --now chronyd
Чтобы установка FreeIPA не падала с ошибкой типа:
Checking DNS domain au-team.cloud., please wait ...
The hostname resolves to the localhost address (127.0.0.1/::1)
Please change your /etc/hosts file so that the hostname
resolves to the ip address of your network interface.
The KDC service does not listen on localhost
Please fix your /etc/hosts file and restart the setup program
The ipa-server-install command failed. See /var/log/ipaserver-install.log for more information
необходимо в файле /etc/cloud/cloud.cfg закомментировать параметры: update_etc_hosts и update_hostname в секции: cloud_init_modules
а также оставить в файле /etc/hosts только следующую запись:
echo "192.168.0.101 infra-srv1.au-team.cloud infra-srv1" > /etc/hosts
Запустим развёртывание контроллера домена на базе FreeIPA с встроенным DNS-сервером:
используем в пакетном (неинтерактивном) режиме, при помощи команды
ipa-server-install -U --hostname=$(hostname) \
-r AU-TEAM.CLOUD -n au-team.cloud -p P@ssw0rd -a P@ssw0rd \
--setup-dns --forwarder 77.88.8.8 --auto-reverse
Ожидаем окончания работы развёртывания, должен получится следующий результат:
Проверить статус подсистем:
[root@infra-srv1 ~]# 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
Процесс создания групп и пользователей, чтобы не делать много скринов, будет рассмотрен через CLI:
предварительно необходимо получить билет Kerberos
[root@infra-srv1 ~]# kinit admin
Password for admin@AU-TEAM.CLOUD:
[root@infra-srv1 ~]# klist
Ticket cache: KEYRING:persistent:0:0
Default principal: admin@AU-TEAM.CLOUD
Valid starting Expires Service principal
03/13/2026 13:44:45 03/14/2026 12:59:55 krbtgt/AU-TEAM.CLOUD@AU-TEAM.CLOUD
Создать группу developers можно при помощи команды: ipa group-add developers
[root@infra-srv1 ~]# ipa group-add developers
------------------------
Added group "developers"
------------------------
Group name: developers
GID: 1194800003
Группа admins создаётся автоматически при развёртывании домена:
[root@infra-srv1 ~]# ipa group-find | grep 'Group name:'
Group name: admins
Group name: developers
Group name: editors
Group name: ipausers
Group name: trust admins
[root@infra-srv1 ~]#
Создать пользователя dev01 с паролем P@ssw0rd можно при помощи команды: echo "P@ssw0rd" | ipa user-add dev01 --first=dev --last=01 --password
------------------
Added user "dev01"
------------------
User login: dev01
First name: dev
Last name: 01
Full name: dev 01
Display name: dev 01
Initials: d0
Home directory: /home/dev01
GECOS: dev 01
Login shell: /bin/bash
Principal name: dev01@AU-TEAM.CLOUD
Principal alias: dev01@AU-TEAM.CLOUD
User password expiration: 20260313134844Z
Email address: dev01@au-team.cloud
UID: 1194800004
GID: 1194800004
Password: True
Member of groups: ipausers
Kerberos keys available: True
Добавить пользователя dev01 в группу developers можно при помощи команды: ipa group-add-member developers --users=dev01
[root@infra-srv1 ~]# ipa group-add-member developers --users=dev01
Group name: developers
GID: 1194800003
Member users: dev01
-------------------------
Number of members added 1
-------------------------
Аналогичным образом и пользователя admin01 в группу admins (существующую по умолчанию во FreeIPA):
echo "P@ssw0rd" | ipa user-add admin01 --first=admin --last=01 --password
ipa group-add-member admins --users=admin01
[root@infra-srv1 ~]# ipa group-add-member admins --users=admin01
Group name: admins
Description: Account administrators group
GID: 1194800000
Member users: admin, admin01
-------------------------
Number of members added 1
-------------------------
ADM-PC:
Для возможности ввода в домен в Центр управления системой должен быть установлен пакет task-auth-freeipa:
apt-get update && apt-get install -y task-auth-freeipa
Ввод рабочей станции в домен FreeIPA через Центр управления системой:
Перейти в раздел Пользователи → Аутентификация
В окне модуля Аутентификация выбрать пункт Домен FreeIPA
Заполнить поля Домен и Имя компьютера
Нажать кнопку Применить
В открывшемся окне ввести учётные данные пользователя, с правами на регистрацию машин, и нажать кнопку ОК
При успешном подключении к домену отобразится соответствующая информация
Перезагрузить рабочую станцию после ввода в домен
Реализуем аутентификацию через Kerberos для доступа к Identity Manager с ВМ adm-pc:
для этого необходимо убедиться в наличии сертификата (если хост введён в домен, то сертификат есть)
обращаемся в браузере по https://infra-srv1.au-team.cloud
также необходимо создать файл политики /etc/chromium/policies/managed/policies.json, и поместить в него следующее содержимое:
{
"AuthServerAllowlist": "*.au-team.cloud"
}
Для проверки необходимо выполнить вход из-под доменного пользователя admin01:
проверить доступ к Identity Manager обратившись в браузере на https://infra-srv1.au-team.cloud
в результате должен произойти автоматический вход из-под пользователя admin01 (без ввода логина и пароля)
INFRA-SRV1:
Для настройки правила HBAC - необходимо ввести в домен ВМ: infra-srv2 и infra-srv3:
для этого создадим соответствующие PTR-записи
ipa dnsrecord-add 0.168.192.in-addr.arpa. 102 --ptr-hostname=infra-srv2.au-team.cloud.
ipa dnsrecord-add 0.168.192.in-addr.arpa. 103 --ptr-hostname=infra-srv3.au-team.cloud.
Проверить добавленные PTR-записи можно следующим образом:
[root@infra-srv1 ~]# host 192.168.0.102
102.0.168.192.in-addr.arpa domain name pointer infra-srv2.au-team.cloud.
[root@infra-srv1 ~]# host 192.168.0.103
103.0.168.192.in-addr.arpa domain name pointer infra-srv3.au-team.cloud.
INFRA-SRV2:
Имя узла должно быть полным (FQDN):
для перехода в суперпользователя используем команду: sudo su -
из-под суперпользователя задаём полное доменное имя
hostnamectl set-hostname infra-srv2.au-team.cloud; exec bash
Необходимо в файле /etc/cloud/cloud.cfg закомментировать параметры: update_etc_hosts и update_hostname в секции: cloud_init_modules
Настраиваем корректный часовой пояс:
apt-get update && apt-get install -y tzdata
в случае ошибки (Failed to set time zone: Failed to set time zone: No such file or directory) - выполнить команду повторно
timedatectl set-timezone Europe/Moscow
Установить пакеты необходимые для ввода в домен:
apt-get install -y freeipa-client zip chrony
Включаем и добавляем в автозагрузку службу chronyd:
systemctl enable --now chronyd
Вводим устройство в домен:
ipa-client-install -U -p admin -w P@ssw0rd
Результат успешного ввода устройства в домен:
[root@infra-srv2 ~]# ipa-client-install -U -p admin -w P@ssw0rd
This program will set up IPA client.
Version 4.12.5
Discovery was successful!
Client hostname: infra-srv2.au-team.cloud
Realm: AU-TEAM.CLOUD
DNS Domain: au-team.cloud
IPA Server: infra-srv1.au-team.cloud
BaseDN: dc=au-team,dc=cloud
Attempting to sync time with CHRONY
It may take a few seconds
Time successfully synchronized with IPA server
Successfully retrieved CA cert
Subject: CN=Certificate Authority,O=AU-TEAM.CLOUD
Issuer: CN=Certificate Authority,O=AU-TEAM.CLOUD
Valid From: 2026-03-14 08:15:37+00:00
Valid Until: 2046-03-14 08:15:37+00:00
Enrolled in IPA realm AU-TEAM.CLOUD
Created /etc/ipa/default.conf
Configured /etc/sssd/sssd.conf
Systemwide CA database updated.
Hostname (infra-srv2.au-team.cloud) does not have A/AAAA record.
Adding SSH public key from /etc/openssh/ssh_host_rsa_key.pub
Adding SSH public key from /etc/openssh/ssh_host_ed25519_key.pub
Adding SSH public key from /etc/openssh/ssh_host_ecdsa_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
Configured /etc/openssh/ssh_config
Configured /etc/openssh/sshd_config
Configuring au-team.cloud as NIS domain.
Configured /etc/krb5.conf for IPA realm AU-TEAM.CLOUD
Client configuration complete.
The ipa-client-install command was successful
Необходимо перезагрузить ВМ
в Identity Manager можно проверить наличие узла в домене
INFRA-SRV3:
Имя узла должно быть полным (FQDN):
для перехода в суперпользователя используем команду: sudo su -
из-под суперпользователя задаём полное доменное имя
hostnamectl set-hostname infra-srv3.au-team.cloud; exec bash
Необходимо в файле /etc/cloud/cloud.cfg закомментировать параметры: update_etc_hosts и update_hostname в секции: cloud_init_modules
Настраиваем корректный часовой пояс:
apt-get update && apt-get install -y tzdata
в случае ошибки (Failed to set time zone: Failed to set time zone: No such file or directory) - выполнить команду повторно
timedatectl set-timezone Europe/Moscow
Установить пакеты необходимые для ввода в домен:
apt-get install -y freeipa-client zip chrony
Включаем и добавляем в автозагрузку службу chronyd:
systemctl enable --now chronyd
Вводим устройство в домен:
ipa-client-install -U -p admin -w P@ssw0rd
Результат успешного ввода устройства в домен:
[root@infra-srv3 ~]# ipa-client-install -U -p admin -w P@ssw0rd
This program will set up IPA client.
Version 4.12.5
Discovery was successful!
Client hostname: infra-srv3.au-team.cloud
Realm: AU-TEAM.CLOUD
DNS Domain: au-team.cloud
IPA Server: infra-srv1.au-team.cloud
BaseDN: dc=au-team,dc=cloud
Attempting to sync time with CHRONY
It may take a few seconds
Time successfully synchronized with IPA server
Successfully retrieved CA cert
Subject: CN=Certificate Authority,O=AU-TEAM.CLOUD
Issuer: CN=Certificate Authority,O=AU-TEAM.CLOUD
Valid From: 2026-03-14 08:15:37+00:00
Valid Until: 2046-03-14 08:15:37+00:00
Enrolled in IPA realm AU-TEAM.CLOUD
Created /etc/ipa/default.conf
Configured /etc/sssd/sssd.conf
Systemwide CA database updated.
Hostname (infra-srv3.au-team.cloud) does not have A/AAAA record.
Adding SSH public key from /etc/openssh/ssh_host_rsa_key.pub
Adding SSH public key from /etc/openssh/ssh_host_ed25519_key.pub
Adding SSH public key from /etc/openssh/ssh_host_ecdsa_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
Configured /etc/openssh/ssh_config
Configured /etc/openssh/sshd_config
Configuring au-team.cloud as NIS domain.
Configured /etc/krb5.conf for IPA realm AU-TEAM.CLOUD
Client configuration complete.
The ipa-client-install command was successful
Необходимо перезагрузить ВМ
в Identity Manager можно проверить наличие узла в домене
ADM-PC:
Перед настройками политик sudo, необходимо разобраться с настройками control на хостах для sudo, и так на рабочей станции adm-pc:
[root@adm-pc ~]# control sudo
wheelonly
А на серверах infra-srv{1,2,3}:
[root@infra-srv1 ~]# control sudo
public
На текущий момент существуют следующие политики у команды sudo:
public — любой пользователь может получить доступ к команде /usr/bin/sudo
wheelonly — только пользователи из группы wheel имеют право получить доступ к команде /usr/bin/sudo
restricted — только root имеет право выполнять команду /usr/bin/sudo
Нам подойдёт политика public, так как реализовывать доступ к sudo далее необходимо через политики FreeIPA:
control sudo public
Проверить смену политику sudo можно следующим образом:
[root@adm-pc ~]# control sudo
public
Создаваемая политика для sudo, например с именем sudo-admins для пользователей группы admins может выглядеть следующим образом:
указываем параметр !authenticate, чтобы не требовалось ввода пароля при использовании sudo
указываем что данная политика sudo будет применять только для пользователей группы admins
сохраняем политику sudo:
Для проверки применения и работоспособности - необходимо перезагрузить узел, с которого планируется выполнить проверку использования sudo:
[admin01@adm-pc ~]$ sudo hostname
adm-pc.au-team.cloud
[admin01@infra-srv2 ~]$ sudo hostname
infra-srv2.au-team.cloud
[admin01@infra-srv3 ~]$ sudo hostname
infra-srv3.au-team.cloud
Создаваемая политика HBAC, например с именем allow_admins, для пользователей группы admins может выглядеть следующим образом:
указываем что данная политика sudo будет применять только для пользователей группы admins
сохраняем политику HBAC:
также стоит отключить существующие политики по умолчанию:
INFRA-SRV1 | INFRA-SRV2 | INFRA-SRV3:
Необходимо временно разрешить доступ по паролю для SSH
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/openssh/sshd_config
systemctl restart sshd
ADM-PC:
Необходимо из-под доменного пользователя admin01 создать ключевую пару для SSH:
ssh-keygen -t rsa
Так же стоит передать публичный ключ на хосты:
ssh-copy-id admin01@infra-srv1
ssh-copy-id admin01@infra-srv2
ssh-copy-id admin01@infra-srv3
INFRA-SRV1 | INFRA-SRV2 | INFRA-SRV3:
Необходимо запретить доступ по паролю для SSH
sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/g' /etc/openssh/sshd_config
systemctl restart sshd
ADM-PC:
Проверить доступ по SSH из-под доменного пользователя admin01:
Создаваемая политика для sudo, например с именем sudo_developers для пользователей группы developers может выглядеть следующим образом:
создадим команду sudo для cat
создадим команду sudo для ls
создаём правило sudo
указываем что данная политика sudo будет применять только для пользователей группы developers
указываем что данная политика sudo будет применять только для узлов infra-srv2 и infra-srv3
указываем что данная политика sudo будет применять только для команд cat и ls
Создаём политику HBAC для группы developers:
Для проверки применения и работоспособности - необходимо перезагрузить узел, с которого планируется выполнить проверку использования sudo:
[dev01@infra-srv2 ~]$ sudo cat /etc/hostname
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
For security reasons, the password you type will not be visible.
[sudo] password for dev01:
infra-srv2.au-team.cloud
[dev01@infra-srv2 ~]$ sudo ls
[dev01@infra-srv2 ~]$ sudo hostname
Sorry, user dev01 is not allowed to execute '/bin/hostname' as root on infra-srv2.au-team.cloud.
[dev01@infra-srv2 ~]$
[dev01@infra-srv3 ~]$ sudo cat /etc/hostname
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
For security reasons, the password you type will not be visible.
[sudo] password for dev01:
infra-srv3.au-team.cloud
[dev01@infra-srv3 ~]$ sudo ls
[dev01@infra-srv3 ~]$ sudo hostname
Sorry, user dev01 is not allowed to execute '/bin/hostname' as root on infra-srv3.au-team.cloud.
[dev01@infra-srv3 ~]$
infra-srv1 login: dev01
Password:
Login incorrect