Настройка модуля osmax-provisioner для интеграции с Microsoft Active Directory

Интеграция модуля osmax-provisioner с Microsoft Active Directory выполняется в два этапа:

Настройка Kerberos-аутентификации

В инструкции ниже в качестве примера используются следующие данные:

Имя домена (domain-name) ОС Роль IP-адрес

osmax.inno.tech

Windows Server 2022

Domain Controler Active Directory

10.31.1.64/16

  1. Установите пакет с Kerberos-клиентом. Для Debian-like ОС используйте команды:

    sudo apt update
    sudo apt install krb5-user
  2. Создайте или отредактируйте файл /etc/krb5.conf и укажите в нем следующие параметры:

    [libdefaults]
    dns_lookup_realm = false
    dns_lookup_kdc = false
    ticket_lifetime = 24h
    renew_lifetime = 7d
    forwardable = true
    rdns = false
    default_realm = OSMAX.INNO.TECH
    udp_preference_limit = 1
    
    [realms]
    osmax.inno.tech = {
    kdc = 10.31.1.64
    admin_server = 10.31.1.64
    }

    Пример:

    [libdefaults]
    dns_lookup_realm = false
    dns_lookup_kdc = false
    ticket_lifetime = 24h
    renew_lifetime = 7d
    forwardable = true
    rdns = false
    default_realm = OSMAX.INNO.TECH
    udp_preference_limit = 1
    
    [realms]
    OSMAX.INNO.TECH = {
    kdc = 10.31.1.64
    admin_server = 10.31.1.64
    }
  3. При конфигурировании

  4. В файле конфигурации модуля osmax-provisioner application.properties укажите параметры сервисной учетной записи:

quarkus.kerberos.service-principal-name=<service-account-name>
quarkus.kerberos.service-principal-realm=<domain-name>
quarkus.kerberos.service-principal-password=<service-account-password>

Пример:

quarkus.kerberos.service-principal-name=osmax_provisioner_svc
quarkus.kerberos.service-principal-realm=OSMAX.INNO.TECH
quarkus.kerberos.service-principal-password=Qwerty123

Настройка сервера по включению в домен Microsoft Active Directory для модуля osmax-provisioner

В инструкции ниже в качестве примера используются следующие данные:

  • имя домена — osmax.inno.tech;

  • пользователь Microsoft Active Directory c правами администратора — adminuser.

Имя хоста ОС Роль IP-адрес

osmax-winsrv.osmax.inno.tech

Windows Server 2022

Domain Controler Active Directory

10.31.1.64/16

osmax-astra

Astra Linux SE Orel

Workstation

10.31.1.74/16

Настройка хоста Astra Linux

  1. В файле /etc/hostname укажите FQDN (Fully Qualified Domain Name) — имя системы:

    osmax-astra.osmax.inno.tech
  2. В файле /etc/hosts создайте запись с полным и коротким доменным именем, ссылающуюся на один из внутренних IP-хостов:

    127.0.0.1 localhost
    10.31.1.74 osmax-astra.osmax.inno.tech osmax-astra
  3. В файл /etc/resolv.conf внесите изменения, указав имя существующего домена AD, скоуп для поиска и серверы DNS (контроллеры домена Active Directory):

    domain osmax.inno.tech
    search osmax.inno.tech.
    nameserver 10.31.1.64
    Для корректной работы разница во времени между хостом и контроллером домена не должна превышать 5 минут, иначе получение тикета Kerberos будет невозможно. Настройте синхронизацию времени с контроллером домена.
  4. Установите необходимые пакеты:

    sudo apt install ntp ntpdate
  5. В файле /etc/ntp.conf укажите контроллер домена в качестве точки синхронизации, остальные параметры закомментируйте:

    # You do need to talk to an NTP server or two (or three).
    #server ntp2.ntp-servers.net iburst
    #server ntp.msk-ix.ru iburst
    
    server osmax-winsrv.osmax.inno.tech
    
    # pool.ntp.org maps to about 1000 low-stratum NTP servers.  Your server will
    # pick a different set every time it starts up.  Please consider joining the
    # pool: <http://www.pool.ntp.org/join.html>
    #pool 0.ru.pool.ntp.org iburst
    #pool 1.ru.pool.ntp.org iburst
    #pool 2.ru.pool.ntp.org iburst
    #pool 3.ru.pool.ntp.org iburst
  6. Выполните единовременную синхронизацию времени с контроллером домена и запустите службу:

    sudo systemctl stop ntp
    sudo ntpdate -bs osmax.inno.tech
    sudo systemctl start ntp

Ввод в домен

  1. Используйте команду realm из пакета realmd, чтобы присоединиться к домену и создать конфигурацию sssd. Для этого установите необходимые пакеты:

    sudo apt install realmd sssd sssd-tools libnss-sss libpam-sss adcli samba-common-bin oddjob oddjob-mkhomedir packagekit -y
  2. Проверьте доступность домена для обнаружения через DNS. Команда realm discover возвращает полную конфигурацию домена и список пакетов, которые необходимо установить, чтобы система была зарегистрирована в домене:

    user@osmax-astra:/home/user# realm discover osmax.inno.tech -v
    * Resolving: _ldap._tcp.osmax.inno.tech
    * Performing LDAP DSE lookup on: 10.31.1.64
    * Successfully discovered: osmax.inno.tech
    osmax.inno.tech
    type: kerberos
    realm-name: OSMAX.INNO.TECH
    domain-name: osmax.inno.tech
    configured: no
    server-software: active-directory
    client-software: sssd
    required-package: sssd-tools
    required-package: sssd
    required-package: libnss-sss
    required-package: libpam-sss
    required-package: adcli
    required-package: samba-common-bin
  3. Введите хост в домен Active Directory. Для выполнения операции требуется учетная запись AD с правами администратора домена (или пользователь, которому делегированы права на добавление хостов в домен):

    realm join -U adminuser osmax.inno.tech
    Пароль для adminuser:
  4. Проверьте, что хост находится в домене Active Directory:

    user@osmax-astra:/home/user# realm list
    osmax.inno.tech
    type: kerberos
    realm-name: OSMAX.INNO.TECH
    domain-name: osmax.inno.tech
    configured: kerberos-member
    server-software: active-directory
    client-software: sssd
    required-package: sssd-tools
    required-package: sssd
    required-package: libnss-sss
    required-package: libpam-sss
    required-package: adcli
    required-package: samba-common-bin
    login-formats: %U@osmax.inno.tech
    login-policy: allow-realm-logins
  5. Инструмент realmd после ввода хоста в домен создает файл конфигурации sssd /etc/sssd/sssd.conf.

    Файл /etc/sssd/sssd.conf должен иметь разрешения 600 и root:root, иначе демон sssd не будет запускаться:
    user@osmax-astra:/home/user# cat /etc/sssd/sssd.conf
    [sssd]
    domains = shadowutils, osmax.inno.tech
    config_file_version = 2
    services = nss, pam
    
    [nss]
    
    [pam]
    
    [domain/shadowutils]
    id_provider = files
    
    auth_provider = proxy
    proxy_pam_target = sssd-shadowutils
    
    proxy_fast_alias = True
    
    [domain/osmax.inno.tech]
    ad_domain = osmax.inno.tech
    krb5_realm = OSMAX.INNO.TECH
    realmd_tags = manages-system joined-with-adcli
    cache_credentials = True
    id_provider = ad
    krb5_store_password_if_offline = True
    default_shell = /bin/bash
    ldap_id_mapping = True
    use_fully_qualified_names = True
    fallback_homedir = /home/%u@%d
    access_provider = ad
  6. Выполните следующую команду, чтобы для пользователей Active Directory при входе в систему создавался домашний каталог:

    pam-auth-update --enable mkhomedir

Проверка работы

  1. Запросите информацию о пользователе Active Directory (adminuser@osmax.inno.tech):

    user@osmax-astra:/home/user# getent passwd adminuser@osmax.inno.tech
    adminuser@osmax.inno.tech:*:1762401001:1762400513:adminuser:/home/adminuser@osmax.inno.tech:/bin/bash
  2. Войдите в систему:

    user@osmax-astra:/home/user# login
    osmax-astra.osmax.inno.tech имя пользователя: adminuser
    
    Пароль:
    
    Создание каталога /home/adminuser@osmax.inno.tech.
    adminuser@osmax.inno.tech@osmax-astra:~$

Настройка с использованием прямого указания сервисной учетной записи

В файле конфигурации модуля osmax-provisioner application.properties задайте следующие параметры конфигурации:

quarkus.kerberos.service-principal-name=<service-account-name>
quarkus.kerberos.service-principal-realm=<domain-name>
quarkus.kerberos.service-principal-password=<service-account-password>

Пример:

quarkus.kerberos.service-principal-name=osmax_provisioner_svc
quarkus.kerberos.service-principal-realm=OSMAX.INNO.TECH
quarkus.kerberos.service-principal-password=Qwerty123