Присоединение к домену в роли участника

Рядовыми участниками домена Эллес могут быть серверы и рабочие станции под управлением ОС Windows и дистрибутивов Linux, поддерживающих работу с инструментами аутентификации и авторизации в домене (SSSD, Winbind).

Примеры в данном разделе основаны на следующих допущениях:

  1. В сети доступен полностью настроенный контроллер домена Эллес, который также выступает в роли DNS-сервера, со следующими параметрами:

    • статический IP-адрес — 10.0.9.100;

    • домен — samdom.example.com;

    • полное доменное имя (FQDN) — dc01.samdom.example.com.

  2. В домен добавляются рабочие станции и рядовые серверы под управлением ОС Astra Linux 1.7.x, РЕД ОС 7.3.x, Ubuntu 22.04 LTS и ОС Windows 10/11 или ОС Windows Server.

  3. Для использования аутентификации на базе Kerberos между всеми участниками домена обеспечивается синхронизация времени в соответствии с инструкциями разработчика используемого дистрибутива ОС.

  4. На вводимых в домен машинах настроен доступ к репозиториям с пакетами используемого дистрибутива операционной системы.

  5. Для выполнения операций присоединения используется учетная запись с локальными административными правами на вводимой машине и административными правами на добавление компьютера в домен (Administrator).

  6. В домене создана учетная запись рядового пользователя user01 в группе Domain Users.

Предварительные замечания

При вводе в домен Эллес машин в роли рядовых участников следует учитывать некоторые особенности используемых инструментов.

Коллизия имен локальных и доменных пользователей

Во избежание возможных коллизий, обусловленных совпадением имен локальных пользователей и доменных пользователей, при использовании инструментария SSSD для аутентификации и авторизации на рядовых участниках домена под управлением ОС Astra Linux рекомендуется выполнить одно из следующих действий по дополнительной настройке:

  • разрешите вход доменных пользователей только с использованием UPN;

    Для этого:

    1. Добавьте следующую настройку в конфигурационный файл /etc/sssd/sssd.conf:

      use_fully_qualified_names = True
    2. Для применения изменения перезапустите службу sssd:

      sudo systemctl restart sssd.service
  • измените последовательность анализа источников данных, используемых диспетчером службы имен (Name Service Switch) на машине — участнике домена.

    Для этого приведите соответствующие строки в конфигурационном файле диспетчера (/etc/nsswitch.conf) к следующему виду:

    ...
    passwd:     sss files
    group:      sss files
    ...

Учет атрибута userWorkstations

Атрибут userWorkstations доменной учетной записи пользователя содержит список NetBIOS- или DNS-имен компьютеров:

  • на которых пользователю разрешен локальный вход в операционную систему;

  • с которых пользователю разрешен удаленный доступ к другим компьютерам в домене.

Значение атрибута может редактироваться:

  • на дистрибутивах Linux:

    • в блоке Учетная запись формы пользователя в веб-интерфейсе приложения «Менеджер службы каталогов» (DSM) при выборе в окне Доступные компьютеры опции Выбранные компьютеры (см. описание в подразделе «Учетная запись»);

    • с помощью подкоманды samba-tool user edit (см. описание в подразделе «Изменение атрибутов пользователя»);

  • на ОС Windows или Windows Server:

    • на вкладке Учетная запись окна Свойства учетной записи пользователя в оснастке «Пользователи и компьютеры в Active Directory» (Active Directory Users and Computers, ADUC) при выборе опции только на указанные компьютеры в окне Рабочие станции для входа в систему;

    • с помощью параметра /workstations команды net user (см. описание в документации Microsoft);

    • с помощью параметра -LogonWokstations командлета PowerShell Set-ADUser (см. описание в документации Microsoft).

Обработка значения атрибута зависит от операционной системы и способа ввода в домен машины:

  • на клиентских машинах под управлением ОС Windows или Windows Server значение атрибута учитывается во всех случаях;

  • на клиентских машинах на Linux, введенных в домен с помощью Winbind, значение атрибута учитывается в том случае, если в нем заданы NetBIOS-имена компьютеров;

  • на клиентских машинах на Linux, введенных в домен с помощью SSSD, значение атрибута игнорируется полностью.

Клиент на ОС Astra Linux

Ввод клиентских машин на ОС Astra Linux выполняется с помощью пакетов:

  • realmd и sssd;

  • winbind.

    Компания-разработчик ОС Astra Linux не рекомендует использовать инструментарий Winbind.

Предварительная подготовка

Выполните следующие шаги по предварительной подготовке:

  1. Обновите пакеты операционной системы:

    sudo apt update -y
  2. Выберите для машины имя хоста длиной не более 15 символов (ограничение протокола NetBIOS) и назначьте его.

    Например:

    sudo hostnamectl set-hostname client01
  3. В файле /etc/hosts сопоставьте полное доменное имя (FQDN) и короткое имя хоста с IP-адресом клиентской машины (в примере ниже используется статический IP-адрес).

    Например:

    127.0.0.1     localhost
    10.0.9.121    client01.samdom.example.com     client01
    При использовании статического IP-адреса требуется настроить его аренду для данного хоста на DHCP-сервере.
    Если для управления настройками DNS клиентских машин используется DHCP-сервер, требуется сконфигурировать его для использования соответствующего DNS-сервера.
  4. Задайте IP-адрес DNS-сервера домена (в данном примере DNS-сервер развертывается вместе с контроллером домена) и поисковый домен в настройках используемого сетевого интерфейса любым доступным способом.

    После внесенных изменений файл /etc/resolv.conf должен содержать следующие настройки:

    search samdom.example.com
    nameserver 10.0.9.100
  5. Проверьте корректность разрешения имен службой DNS.

    Например:

    host dc01.samdom.example.com
    dc01.samdom.example.com has address 10.0.9.100

Присоединение с использованием SSSD

Для ввода рабочей станции или рядового сервера на ОС Astra Linux 1.7.x в домен Эллес:

  1. Установите пакеты, требуемые для присоединения к домену с помощью SSSD и дальнейшей эксплуатации машины в домене.

    Например:

    sudo apt install sssd sssd-tools libnss-sss libpam-sss realmd packagekit oddjob oddjob-mkhomedir krb5-user adcli
  2. Приведите файл /etc/krb5.conf к следующему виду:

    [libdefaults]
    default_realm = SAMDOM.EXAMPLE.COM
    canonicalize = true
    default_ccache_name = KEYRING:persistent:%{uid}
    
    [realms]
        SAMDOM.EXAMPLE.COM = {
            kdc = dc01.samdom.example.com
            admin_server = dc01.samdom.example.com
            default_domain = SAMDOM.EXAMPLE.COM
        }
    
    [domain_realm]
        samdom.example.com = SAMDOM.EXAMPLE.COM
        .samdom.example.com = SAMDOM.EXAMPLE.COM
  3. Приведите конфигурационный файл Samba /etc/samba/smb.conf к следующему виду:

    [global]
        workgroup = SAMDOM
        client signing = yes
        client use spnego = yes
        kerberos method = secrets and keytab
        pam password change = Yes
        log file = /var/log/samba/%m.log
        security = ADS
        server string = Astra linux
        idmap config * : backend = tdb
    
    [printers]
        comment = All Printers
        path = /var/spool/samba
        browseable = No
        printable = Yes
        create mask = 0700
    
    [print$]
        comment = Printer Drivers
        path = /var/lib/samba/printers
  4. Выполните ввод машины в домен с помощью realmd:

    sudo realm join samdom.example.com -U Administrator@samdom.example.com --verbose --client-software=sssd --membership-software=samba

    В примере используются параметры:

    • -U (обязательный) — имя пользователя с административными правами в домене, в который выполняется ввод;

    • --verbose (необязательный) — вывод подробной информации о ходе выполнения операции;

    • --client-software (необязательный) — программное обеспечение (samba/winbind) для обеспечения работы в домене на стороне клиентской машины (по умолчанию определяется автоматически);

    • --membership-software (необязательный) — программное обеспечение (samba/adcli) для использования при присоединении (по умолчанию определяется автоматически).

  5. Настройте автоматическое создание домашнего каталога при первом входе пользователя, добавив следующую строку в файлы /etc/pam.d/common-session и /etc/pam.d/common-session-noninteractive:

    session required  pam_mkhomedir.so umask=0077 skel=/etc/skel

    Примеры содержимого файлов после добавления строки:

    • файл /etc/pam.d/common-session:

      #
      # /etc/pam.d/common-session - session-related modules common to all services
      #
      # This file is included from other service-specific PAM config files,
      # and should contain a list of modules that define tasks to be performed
      # at the start and end of sessions of *any* kind (both interactive and
      # non-interactive).
      #
      # As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
      # To take advantage of this, it is recommended that you configure any
      # local modules either before or after the default block, and use
      # pam-auth-update to manage selection of other modules.  See
      # pam-auth-update(8) for details.
      
      # here are the per-package modules (the "Primary" block)
      session [default=1]         pam_permit.so
      # here's the fallback if no module succeeds
      session requisite           pam_deny.so
      # prime the stack with a positive return value if there isn't one already;
      # this avoids us returning an error just because nothing sets a success code
      # since the modules above will each just jump around
      session required            pam_permit  .so
      # and here are more per-package modules (the "Additional" block)
      session required            pam_mkhomedir.so umask=0077 skel=/etc/skel
      session required            pam_kiosk2.so
      session required            pam_unix.so
      session optional            pam_sss.so
      session optional            pam_systemd.so
      # end of pam-auth-update config
    • файл /etc/pam.d/common-session-noninteractive:

      #
      # /etc/pam.d/common-session-noninteractive - session-related modules
      # common to all non-interactive services
      #
      # This file is included from other service-specific PAM config files,
      # and should contain a list of modules that define tasks to be performed
      # at the start and end of all non-interactive sessions.
      #
      # As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
      # To take advantage of this, it is recommended that you configure any
      # local modules either before or after the default block, and use
      # pam-auth-update to manage selection of other modules.  See
      # pam-auth-update(8) for details.
      
      # here are the per-package modules (the "Primary" block)
      session [default=1]         pam_permit.so
      # here's the fallback if no module succeeds
      session requisite           pam_deny.so
      # prime the stack with a positive return value if there isn't one already;
      # this avoids us returning an error just because nothing sets a success code
      # since the modules above will each just jump around
      session required            pam_permit.so
      # and here are more per-package modules (the "Additional" block)
      session required            pam_mkhomedir.so umask=0077 skel=/etc/skel
      session required            pam_kiosk2.so
      session required            pam_unix.so
      # end of pam-auth-update config
  6. Приведите конфигурационный файл SSSD /etc/sssd/sssd.conf к следующему виду:

    [sssd]
    domains = samdom.example.com
    config_file_version = 2
    services = ifp
    [ifp]
    allowed_uids = 0, 33, 114, 107
    [pam]
    pam_pwd_expiration_warning = 7
    
    [domain/is11.ru]
    ad_gpo_map_interactive = +fly-dm
    ad_update_samba_machine_account_password = True
    krb5_renew_interval = 600s
    krb5_renewable_lifetime = 7d
    krb5_ccname_template = KEYRING:persistent:%U
    ad_gpo_access_control = disabled
    ad_domain = samdom.example.com
    krb5_realm = SAMDOM.EXAMPLE.COM
    realmd_tags = manages-system joined-with-samba
    cache_credentials = True
    id_provider = ad
    krb5_store_password_if_offline = True
    default_shell = /bin/bash
    ldap_id_mapping = True
    use_fully_qualified_names = False
    fallback_homedir = /home/%u@%d
    access_provider = ad
  7. Перезагрузите машину:

    sudo systemctl reboot
  8. После перезагрузки для проверки корректности присоединения:

    • запросите информацию о текущем подключении к домену:

      sudo net ads testjoin
      Join is OK
    • убедитесь, что имя хоста рабочей станции отображается в списке компьютеров в домене, запросив список на любом из работающих контроллеров домена;

      Например:

      samba-tool computer list
      ...
      CLIENT01$
      ...
    • выполните вход на машину под учетной записью доменного пользователя user01:

      su - user01
    • убедитесь, что для пользователя создан домашний каталог:

      pwd
      /home/user01@samdom.example.com
    • проверьте, что членство в доменных группах разрешается корректно:

      id
      uid=<...>(user01) gid=<...>(domain users) groups=<...>(domain users)

Присоединение с использованием Winbind

Компания-разработчик ОС Astra Linux не рекомендует использовать инструментарий Winbind.

Для ввода рабочей станции или рядового сервера на ОС Astra Linux 1.7.x в домен Эллес:

  1. Установите пакеты, требуемые для присоединения к домену с помощью Winbind:

    Например:

    sudo apt-get install samba-common-bin samba-libs krb5-user winbind libnss-winbind libpam-winbind
  2. Приведите файл /etc/krb5.conf к следующему виду:

    [libdefaults]
        default_realm = SAMDOM.EXAMPLE.COM
        kdc_timesync = 1
        ccache_type = 4
        forwardable = true
        proxiable = true
        fcc-mit-ticketflags = true
        dns_lookup_realm = false
        dns_lookup_kdc = true
        v4_instance_resolve = false
        v4_name_convert = {
            host = {
                rcmd = host
                ftp = ftp
            }
            plain = {
                something = something-else
            }
        }
        canonicalize = true
    
    [realms]
        SAMDOM.EXAMPLE.COM = {
        admin_server = DС1.SAMDOM.EXAMPLE.COM
        default_domain = SAMDOM.EXAMPLE.COM
        }
    
    [domain_realm]
        .samdom.example.com = SAMDOM.EXAMPLE.COM
        samdom.example.com = SAMDOM.EXAMPLE.COM
    [login]
        krb4_convert = false
        krb4_get_tickets = false
  3. Приведите конфигурационный файл Samba /etc/samba/smb.conf к следующему виду:

    [global]
        server string = Astra linux
        usershare allow guests = Yes
        map to guest = Bad User
        obey pam restrictions = Yes
        pam password change = Yes
        passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
        passwd program = /usr/bin/passwd %u
        server role = standalone server
        unix password sync = Yes
    
        workgroup = SAMDOM
        realm = SAMDOM.EXAMPLE.COM
        security = ADS
        encrypt passwords = true
        dns proxy = no
        socket options = TCP_NODELAY
        domain master = no
        local master = no
        preferred master = no
        os level = 0
        domain logons = no
        kerberos method = secrets and keytab
        load printers = no
        show add printer wizard = no
        printcap name = /dev/null
        disable spoolss = yes
        idmap config * : range = 100000-199999
        idmap config * : backend = tdb
        idmap config SAMDOM.EXAMPLE.COM : range = 200000-299999
        idmap config SAMDOM.EXAMPLE.COM : backend = rid
        winbind nss info = rfc2307
        winbind enum groups = no
        winbind enum users = no
        winbind use default domain = yes
        winbind scan trusted domains = no
        template homedir = /home/%D/%U
        template shell = /bin/bash
        winbind refresh tickets = yes
        winbind offline logon = yes
        winbind cache time = 1440
        password server = DC1
        unix charset = UTF8
        dos charset = CP866
    
    [printers]
        comment = All Printers
        path = /var/spool/samba
        browseable = No
        printable = Yes
        create mask = 0700
    
    [print$]
        comment = Printer Drivers
        path = /var/lib/samba/printers
  4. Выполните ввод машины в домен:

    sudo net ads join -U Administrator -D SAMDOM.EXAMPLE.COM

    В примере используются параметры:

    • -U (обязательный) — имя пользователя с административными правами в домене, в который выполняется ввод;

    • -D (необязательный) — имя домена, в который выполняется ввод (по умолчанию определяется автоматически).

  5. В файле настроек диспетчера службы имен /etc/nsswitch.conf укажите winbind в качестве поставщика данных для поиска доменных пользователей и групп в локальном пространстве имен хоста контроллера домена:

    # /etc/nsswitch.conf
    #
    # Example configuration of GNU Name Service Switch functionality.
    # If you have the `glibc-doc-reference' and `info' packages installed, try:
    # `info libc "Name Service Switch"' for information about this file.
    
    passwd: compat winbind
    group: compat winbind
    shadow:         files
    gshadow:        files
    
    hosts: files dns
    networks:       files
    
    protocols:      db files
    services:       db files
    ethers:         db files
    rpc:            db files
    
    netgroup:       nis
  6. Настройте автоматическое создание домашнего каталога при первом входе пользователя, добавив следующую строку в файл /etc/pam.d/common-session:

    session optional  pam_mkhomedir.so skel=/etc/skel/ umask=0077

    Пример содержимого файла /etc/pam.d/common-session после добавления строки:

    #
    # /etc/pam.d/common-session - session-related modules common to all services
    #
    # This file is included from other service-specific PAM config files,
    # and should contain a list of modules that define tasks to be performed
    # at the start and end of sessions of *any* kind (both interactive and
    # non-interactive).
    #
    # As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
    # To take advantage of this, it is recommended that you configure any
    # local modules either before or after the default block, and use
    # pam-auth-update to manage selection of other modules.  See
    # pam-auth-update(8) for details.
    
    # here are the per-package modules (the "Primary" block)
    session [default=1]         pam_permit.so
    # here's the fallback if no module succeeds
    session requisite           pam_deny.so
    # prime the stack with a positive return value if there isn't one already;
    # this avoids us returning an error just because nothing sets a success code
    # since the modules above will each just jump around
    session required            pam_permit.so
    # and here are more per-package modules (the "Additional" block)
    session required            pam_mkhomedir.so umask=0077 skel=/etc/skel
    session required            pam_kiosk2.so
    session optional            pam_winbind.so
    session required            pam_unix.so
    session optional            pam_systemd.so
    # end of pam-auth-update config
  7. При необходимости настройте возможность повышения привилегий с помощью sudo для участников доменной группы Domain Admins, добавив следующую строку в файл /etc/sudoers:

    %Domain\ Admins ALL=(ALL) ALL

    Пример содержимого файла /etc/sudoers после добавления строки:

    #
    # This file MUST be edited with the 'visudo' command as root.
    #
    # Please consider adding local content in /etc/sudoers.d/ instead of
    # directly modifying this file.
    #
    # See the man page for details on how to write a sudoers file.
    #
    Defaults    env_reset
    Defaults    mail_badpass
    Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
    Defaults    use_pty
    
    # This preserves proxy settings from user environments of root
    # equivalent users (group sudo)
    #Defaults:%sudo env_keep += "http_proxy https_proxy ftp_proxy all_proxy no_proxy"
    
    # This allows running arbitrary commands, but so does ALL, and it means
    # different sudoers have their choice of editor respected.
    #Defaults:%sudo env_keep += "EDITOR"
    
    # Completely harmless preservation of a user preference.
    #Defaults:%sudo env_keep += "GREP_COLOR"
    
    # While you shouldn't normally run git as root, you need to with etckeeper
    #Defaults:%sudo env_keep += "GIT_AUTHOR_* GIT_COMMITTER_*"
    
    # Per-user preferences; root won't have sensible values for them.
    #Defaults:%sudo env_keep += "EMAIL DEBEMAIL DEBFULLNAME"
    
    # "sudo scp" or "sudo rsync" should be able to use your SSH agent.
    #Defaults:%sudo env_keep += "SSH_AGENT_PID SSH_AUTH_SOCK"
    
    # Ditto for GPG agent
    #Defaults:%sudo env_keep += "GPG_AGENT_INFO"
    
    # Host alias specification
    
    # User alias specification
    
    # Cmnd alias specification
    
    # User privilege specification
    
    root    ALL=(ALL:ALL) ALL
    
    # Members of the admin group may gain root privileges
    %admin ALL=(ALL) ALL
    
    # Allow members of group sudo to execute any command
    %sudo   ALL=(ALL:ALL) ALL
    
    # See sudoers(5) for more information on "@include" directives:
    
    @includedir /etc/sudoers.d
    
    %Domain\ Admins ALL=(ALL) ALL
  8. Перезагрузите машину:

    sudo systemctl reboot
  9. Для проверки корректности присоединения:

    • запросите информацию о текущем подключении к домену:

      sudo net ads testjoin
      Join is OK
    • убедитесь, что имя хоста рабочей станции отображается в списке компьютеров в домене, запросив список на любом из работающих контроллеров домена;

      Например:

      samba-tool computer list
      ...
      CLIENT01$
      ...
    • выполните вход на машину под учетной записью доменного пользователя user01:

      su - user01
    • убедитесь, что для пользователя создан домашний каталог:

      pwd
      /home/SAMDOM/user01
      Формат пути задается параметром template homedir в файле /etc/samba/smb.conf (по умолчанию — /home/%D/%U).
    • проверьте, что членство в доменных группах разрешается корректно:

      id
      uid=<...>(user01) gid=<...>(domain users) groups=<...>(domain users)

Клиент на РЕД ОС

Ввод клиентских машин на РЕД ОС выполняется с помощью штатного инструмента join-to-domain.

В зависимости от варианта установки инструмент в составе РЕД ОС может быть доступен как в виде утилиты с графическим интерфейсом, так и в виде скрипта для запуска в терминале в интерактивном режиме или с входными параметрами.

По умолчанию утилита использует для ввода в домен инструментарий SSSD. Ввод с использованием Winbind также возможен.

См. описание процедуры ввода и доступных параметров утилиты join-to-domain в официальной документации РЕД ОС.

Также см. описание процедуры ввода с помощью realmd в официальной документации РЕД ОС.

Предварительная подготовка

Выполните следующие шаги по предварительной подготовке:

  1. Обновите пакеты операционной системы:

    sudo dnf update -y
  2. Задайте IP-адрес DNS-сервера домена (в данном примере DNS-сервер развертывается вместе с контроллером домена) и поисковый домен в настройках используемого сетевого интерфейса любым доступным способом.

    Например, с помощью утилиты nmcli:

    1. Определите имя используемого сетевого интерфейса:

      nmcli connection show
      NAME       UUID                                  TYPE      DEVICE
      enp0s1     973b457f-ad2e-32c0-8849-5d27ce648bac  ethernet  enp0s1
      ...
    2. Задайте требуемые настройки для сетевого интерфейса:

      nmcli connection modify enp0s1 ipv4.dns 10.0.9.100 ipv4.dns-search samdom.example.com
    3. Перезапустите сетевую службу:

      nmcli networking off && nmcli networking on
    4. Убедитесь, что настройки заданы корректно:

      nmcli
      enp0s1: подключено к enp0s1
      ...
      DNS configuration:
              servers: 10.0.9.100
              domains: samdom.example.com
              interface: enp0s1
  3. Проверьте корректность разрешения имен службой DNS.

    Например:

    host dc01.samdom.example.com
    dc01.samdom.example.com has address 10.0.9.100

Присоединение

Для ввода клиентской машины на РЕД ОС в домен Эллес:

  1. Убедитесь, что на машине установлена утилита join-to-domain (она может отсутствовать при установке РЕД ОС в конфигурации «Сервер минимальный»):

    dnf list installed join-to-domain
    join-to-domain.noarch ...

    Если утилита отсутствует, установите ее:

    sudo dnf install join-to-domain -y
  2. Выполните присоединение к домену:

    sudo join-to-domain.sh -d samdom.example.com -n client01 -u Administrator -y

    Описание параметров присоединения:

    • -d — имя домена;

      Если присоединение выполняется к определенному контроллеру домена, укажите его имя (dc01 в данном примере) с помощью параметра --dc.
    • -n — имя компьютера;

    • -u — имя учетной записи с административными правами на добавление компьютера в домен.

    Если требуется сразу добавить компьютер в определенное подразделение, укажите его имя (в формате OU=OrgUnit) с помощью параметра --ou.

    Для использования инструментария Winbind передайте ключ -w.

    В случае успешного присоединения в конце вывода команды отобразится строка:

    Выполнено. Компьютер успешно введен в домен! Перезагрузите ПК.
  3. Перезагрузите машину.

  4. Для проверки корректности присоединения:

    • убедитесь, что имя хоста рабочей станции отображается в списке компьютеров в домене, запросив список на любом из работающих контроллеров домена;

      Например:

      samba-tool computer list
      ...
      CLIENT01$
      ...
    • выполните вход на машину под учетной записью доменного пользователя user01:

      su - user01
    • убедитесь, что для пользователя создан домашний каталог:

      pwd
      /home/user01@samdom.example.com
    • проверьте, что членство в доменных группах разрешается корректно:

      id
      uid=<...>(user01) gid=<...>(domain users) группы=<...>(domain users)

Клиент на ОС Ubuntu Server 22.04 LTS

Ввод клиентских машин на ОС Ubuntu Server выполняется с помощью пакетов:

  • realmd и sssd;

  • winbind.

Состав остальных дополнительных пакетов определяется особенностями эксплуатации.

См. инструкции по вводу в домен Active Directory в официальной документации Ubuntu Server:

Предварительная подготовка

Выполните следующие шаги по предварительной подготовке:

  1. Обновите пакеты операционной системы:

    sudo apt update -y
  2. Выберите для машины имя хоста длиной не более 15 символов (ограничение протокола NetBIOS) и назначьте его.

    Например:

    sudo hostnamectl set-hostname server01
  3. В файле /etc/hosts сопоставьте полное доменное имя (FQDN) и короткое имя хоста с IP-адресом клиентской машины (в примере ниже используется статический IP-адрес).

    Например:

    127.0.0.1     localhost
    10.0.9.121    server01.samdom.example.com     server01
    При использовании статического IP-адреса требуется настроить его аренду для данного хоста на DHCP-сервере.
    Если для управления настройками DNS клиентских машин используется DHCP-сервер, требуется сконфигурировать его для использования соответствующего DNS-сервера.
  4. Задайте IP-адрес DNS-сервера домена (в данном примере DNS-сервер развертывается вместе с контроллером домена) и поисковый домен в настройках используемого сетевого интерфейса любым доступным способом.

    После внесенных изменений файл /etc/resolv.conf должен содержать следующие настройки:

    search samdom.example.com
    nameserver 10.0.9.100
  5. Проверьте корректность разрешения имен службой DNS.

    Например:

    host dc01.samdom.example.com
    dc01.samdom.example.com has address 10.0.9.100

Присоединение с использованием SSSD

Для ввода рядового сервера на ОС Ubuntu Server 22.04 LTS в домен Эллес:

  1. Установите пакеты, требуемые для присоединения к домену с помощью SSSD и дальнейшей эксплуатации сервера в домене.

    Например:

    sudo apt install sssd sssd-tools libnss-sss libpam-sss realmd adcli packagekit oddjob oddjob-mkhomedir krb5-user
  2. Если в процессе установки пакета krb5-user требуемые настройки аутентификации Kerberos не были указаны в интерактивном режиме, приведите файл /etc/krb5.conf к следующему виду:

    [libdefaults]
            default_realm = SAMDOM.EXAMPLE.COM
            dns_lookup_realm = false
            dns_lookup_kdc = true
            udp_preference_limit = 1

    Значение 1 в параметре udp_preference_limit указывает на необходимость использования протокола TCP для всех запросов аутентификации. Это позволяет повысить эффективность сетевого взаимодействия.

    Если параметр не установлен, клиент сначала отправляет запрос аутентификации по протоколу UDP, что в случае превышения ограничения на размер успешного ответа в 1400 байт может приводить к ошибке, и только после этого выполняет повторный запрос по TCP.

  3. Выполните присоединение к домену:

    • используйте следующую команду для получения информации о домене и области безопасности:

      realm -v discover samdom.example.com
       * Resolving: _ldap._tcp.samdom.example.com
       * Performing LDAP DSE lookup on: 10.0.9.100
       * Successfully discovered: samdom.example.com
      samdom.example.com
        type: kerberos
        realm-name: SAMDOM.EXAMPLE.COM
        domain-name: samdom.example.com
        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
    • получите билет Kerberos для доменного пользователя с административными правами на добавление компьютера в домен (в данном случае — Administrator):

      kinit Administrator@samdom.example.com
    • выполните ввод в домен:

      sudo realm join samdom.example.com -U 'Administrator@samdom.example.com' --install=/ --no-password

      Описание параметров присоединения:

      • имя домена, к которому выполняется присоединение;

      • -U — имя пользователя с административными правами на добавление компьютера в домен;

      • --install=/ — рабочий каталог;

      • --no-password — использовать для аутентификации билет Kerberos вместо ввода пароля.

      См. описание всех доступных параметров в документации realmd.

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

      Successfully enrolled machine in realm
  4. Настройте локальный вход с доменной учетной записью:

    • в файле /etc/sssd/sssd.conf закомментируйте следующую строку:

      # use_fully_qualified_names = True
    • для применения изменений перезапустите службу sssd:

      sudo systemctl restart sssd.service
  5. Для настройки возможности аутентификации доменных учетных записей по паролю при подключении через SSH:

    • в файле /etc/ssh/sshd_config задайте в параметре PasswordAuthentication значение yes:

      PasswordAuthentication yes
    • для применения изменения перезапустите службу ssh:

      sudo systemctl restart ssh.service
  6. Настройте автоматическое создание домашнего каталога при первом входе пользователя, добавив следующие строки в файл /etc/pam.d/common-session:

    session required pam_mkhomedir.so skel=/etc/skel/ umask=0077
    account optional pam_mkhomedir.so skel=/etc/skel/ umask=0077

    Также данную настройку можно выполнить в интерактивно режиме с помощью инструмента pam-auth-update:

    sudo pam-auth-update

    Или используйте команду:

    sudo pam-auth-update --enable mkhomedir
  7. Выдайте пользователям из группы Domain Users разрешение на вход на сервер:

    sudo realm permit -g 'Domain Users'
  8. Для проверки корректности присоединения повторно запросите информацию о домене и области безопасности Kerberos:

    realm list
    samdom.example.com
      type: kerberos
      realm-name: SAMDOM.EXAMPLE.COM
      domain-name: samdom.example.com
      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
      login-policy: allow-permitted-logins
      permitted-logins:
      permitted-groups: Domain Users
  9. Для проверки возможности поиска доменных пользователей и групп с помощью библиотеки libnss-sss, выполните следующие команды:

    • для поиска в домене, например, пользователя user01:

      getent passwd SAMDOM\\user01
      user01:*:<...>:<...>:user01:/home/user01@samdom.example.com:/bin/bash
    • для поиска доменной группы Domain Users:

      getent group "SAMDOM\\Domain Users"
      domain users:*:<...>:Administrator,user01
  10. Убедитесь, что имя хоста отображается в списке компьютеров в домене, запросив список на любом из работающих контроллеров домена.

    Например:

    samba-tool computer list
    ...
    SERVER01$
    ...
  11. Выполните вход на машину под учетной записью доменного пользователя user01:

    su - user01
  12. Убедитесь, что для пользователя создан домашний каталог:

    pwd
    /home/user01@samdom.example.com
  13. Проверьте, что членство в доменных группах разрешается корректно:

    id
    uid=<...>(user01) gid=<...>(domain users) groups=<...>(domain users)
  14. Для проверки возможности подключения к машине по SSH с аутентификацией по паролю, выполните вход на любой контроллер в домене и установите новое подключение к присоединенной машине:

    sudo ssh -l user01@samdom.example.com server01.samdom.example.com

Присоединение с использованием Winbind

Для ввода рядового сервера на ОС Ubuntu Server 22.04 LTS в домен Эллес:

  1. Установите пакеты, требуемые для присоединения к домену с помощью Winbind:

    Например:

    sudo apt install samba winbind krb5-user libpam-krb5 libpam-winbind libnss-winbind
    Для присоединения требуются отдельные компоненты Samba. В качестве упрощения в примере устанавливается базовый пакет, доступный в репозиториях используемого дистрибутива Linux.
  2. Если в процессе установки пакета krb5-user требуемые настройки аутентификации Kerberos не были указаны в интерактивном режиме, приведите файл /etc/krb5.conf к следующему виду:

    [libdefaults]
            default_realm = SAMDOM.EXAMPLE.COM
            dns_lookup_realm = false
            dns_lookup_kdc = true
            udp_preference_limit = 1

    Значение 1 в параметре udp_preference_limit указывает на необходимость использования протокола TCP для всех запросов аутентификации. Это позволяет повысить эффективность сетевого взаимодействия.

    Если параметр не установлен, клиент сначала отправляет запрос аутентификации по протоколу UDP, что в случае превышения ограничения на размер успешного ответа в 1400 байт может приводить к ошибке, и только после этого выполняет повторный запрос по TCP.

  3. Выполните настройку Samba, отредактировав конфигурационный файл smb.conf:

    • определите расположение файла:

      sudo smbd -b | grep "CONFIGFILE"
         CONFIGFILE: /etc/samba/smb.conf
    • приведите файл smb.conf, например, к виду (состав настроек определяется конкретными условиями эксплуатации):

      [global]
          dedicated keytab file = /etc/krb5.keytab
          dns forwarder = 10.0.9.100
          domain master = No
          idmap config * : range = 100000-199999
          idmap config * : backend = tdb
          idmap config DOMAIN : range = 200000-299999
          idmap config DOMAIN : backend = rid
          kerberos method = secrets and keytab
          load printers = No
          local master = No
          map acl inherit = Yes
          os level = 0
          preferred master = No
          printcap name = /dev/null
          realm = samdom.example.com
          security = ADS
          store dos attributes = Yes
          template homedir = /home/%U
          template shell = /bin/bash
          vfs objects = acl_xattr
          winbind enum groups = Yes
          winbind enum users = Yes
          winbind nss info = rfc2307
          winbind refresh tickets = Yes
          winbind use default domain = Yes
          workgroup = SAMDOM
    • при необходимости заполните разделы [homes], [printers] и т. д.;

    • проверьте корректность подготовленной конфигурации:

      samba-tool testparm
  4. Для обеспечения доступа к доменным пользователям и группам через диспетчер службы имен (NSS) в файле /etc/nsswitch.conf в строках со значениями параметров passwd и group добавьте рядом с files значение winbind:

    passwd: files winbind
    group:  files winbind
  5. Настройте автоматическое создание домашнего каталога при первом входе пользователя, добавив следующие строки в файл /etc/pam.d/common-session:

    session required pam_mkhomedir.so skel=/etc/skel/ umask=0077
    account optional pam_mkhomedir.so skel=/etc/skel/ umask=0077

    Также данную настройку можно выполнить в интерактивно режиме с помощью инструмента pam-auth-update:

    sudo pam-auth-update

    Или используйте команду:

    sudo pam-auth-update --enable mkhomedir
  6. Выполните присоединение к домену:

    sudo net ads join -U Administrator

    В случае успешного присоединения в конце вывода команды отобразится строка:

    Joined 'server01' to dns domain 'samdom.example.com'
  7. Перезапустите службу winbind:

    sudo systemctl restart winbind.service
  8. Для проверки возможности поиска доменных пользователей и групп с помощью библиотеки libnss-winbind, выполните следующие команды:

    • для поиска в домене, например, пользователя user01:

      getent passwd SAMDOM\\user01
      user01:*:<...>:<...>:user01:/home/user01@samdom.example.com:/bin/bash
    • для поиска доменной группы Domain Users:

      getent group "SAMDOM\\Domain Users"
      domain users:*:<...>:Administrator,user01
  9. Убедитесь, что имя хоста отображается в списке компьютеров в домене, запросив список на любом из работающих контроллеров домена.

    Например:

    samba-tool computer list
    ...
    SERVER01$
    ...
  10. Выполните вход на машину под учетной записью доменного пользователя user01.

    Например:

    su - user01
  11. Убедитесь, что для пользователя создан домашний каталог:

    pwd
    /home/user01
    Формат пути задается параметром template homedir в файле /etc/samba/smb.conf (в примере конфигурации выше — /home/%U).
  12. Проверьте, что членство в доменных группах разрешается корректно:

    id
    uid=<...>(user01) gid=<...>(domain users) groups=<...>(domain users)

Клиент на ОС Windows

В качестве рядовых участников в домен Эллес могут вводиться машины под управлением ОС Windows 10/11 редакций Pro, Education, Pro for Workstations, Enterprise и ОС Windows Server всех редакций.

Присоединение возможно как с помощью инструментов с графическим интерфейсом, так и с помощью командлетов PowerShell.

Предварительная подготовка

Выполните следующие шаги по предварительной подготовке:

  1. Обеспечьте доступ машины к DNS-серверу в домене для корректного разрешения имен. При использовании статического IP-адреса для машины, укажите IP-адрес DNS-сервера в настройках сетевого адаптера. Убедитесь, что имена разрешаются корректно, например, с помощью ping или nslookup.

  2. Убедитесь, что дата и время на машине не отличаются от даты и времени на контроллере домена.

  3. При необходимости измените имя компьютера.

Присоединение

Для ввода рабочей станции на ОС Windows или рядового сервера на ОС Windows Server в домен Эллес:

  1. Нажмите клавиши Win+R.

  2. Наберите в поле ввода команду sysdm.cpl и нажмите OK.

  3. В окне System Properties на вкладке Computer Name нажмите Change…​.

  4. В окне Computer Name/Domain Changes при необходимости отредактируйте имя компьютера в поле Computer name, в блоке Member of выберите Domain и укажите имя домена в поле ввода.

    win join settings
    Рис. 1. Окно ввода имени компьютера и домена
  5. В диалоговом окне Windows Security введите имя и пароль пользователя с административными права на добавление компьютера в домен и нажмите OK.

    В случае успешного завершения операции отобразится диалоговое окно с сообщением о добавлении компьютера в домен. Нажмите OK.

  6. Перезагрузите машину.

  7. Для проверки корректности присоединения:

    • убедитесь, что имя хоста рабочей станции отображается в списке компьютеров в домене, запросив список на любом из работающих контроллеров домена;

      Например:

      samba-tool computer list
      ...
      CLIENT01$
      ...
    • выполните вход на машину под учетной записью доменного пользователя user01.