Загрузка данных


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