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

Участниками домена Samba могут быть серверы и рабочие станции под управлением Windows, Linux (Red Hat Enterprise Linux, Ubuntu, CentOS, Oracle Enterprise Linux, SUSE, AstraLinux) и других операционных систем, поддерживающих стандартные протоколы LDAP, Kerberos, DNS и SMB.

Участникам доступны следующие возможности:

  • использование имен доменных пользователей и групп в локальных списках управления доступом (ACL) к файлам и каталогам;

  • настройка общих ресурсов для работы в качестве файлового сервера;

  • настройка службы печати для работы в качестве сервера печати;

  • настройка механизма PAM для обеспечения входа доменных пользователей в систему локально и аутентификации доменных пользователей в работающих локально службах (например, ssh).

См. инструкции по присоединению в документации на операционную систему, установленную на присоединяемой машине.

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

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

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

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

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

  2. Требуется добавить в домен в роли участника машину под управлением Ubuntu 20.04 LTS со следующими параметрами:

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

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

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

Для использования аутентификации на базе Kerberos необходимо обеспечить синхронизацию времени у всех участников домена AD.

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

Один из способов ввода сервера или рабочей станции в домен AD в роли участника — использование вместе с Samba службы Winbind.

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

Для ввода клиентской машины в домен AD:

  1. Обновите пакеты:

    sudo apt update -y
  2. Выполните стандартные проверки, чтобы убедиться в отсутствии на машине следов прошлых установок Samba.

  3. Установите основной пакет inno-samba, следуя инструкциям, приведенным в разделе «Установка».

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

    Например:

    sudo apt install winbind krb5-user libpam-krb5 libpam-winbind libnss-winbind -y
  5. Задайте IP-адрес контроллера домена (10.0.9.100) в качестве DNS-сервера.

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

    search samdom.example.com
    nameserver 10.0.9.100
    Некоторые утилиты (например, NetworkManager) могут перезаписывать изменения, вносимые в данный файл вручную. См. описание корректного способа настройки разрешения имен в документации на используемый дистрибутив Linux.
  6. Выберите для машины имя хоста длиной не более 15 символов (ограничение протокола NetBIOS) и назначьте его.

    Например:

    sudo hostnamectl set-hostname client1.samdom.example.com
  7. Убедитесь, что в файле /etc/hosts полное доменное имя (FQDN) и короткое имя хоста корректно сопоставлены с IP-адресом контроллера домена.

    Например:

    127.0.0.1     localhost
    10.0.9.101    client1.samdom.example.com     client1

    При использовании статического IP-адреса требуется настроить его аренду для данного хоста на DHCP-сервере.

    Если для управления настройками DNS клиентских машин используется DHCP-сервер, требуется сконфигурировать его для использования соответствующего DNS-сервера.

  8. Настройте синхронизацию времени с контроллером домена с использованием ntp или chrony (см. документацию на используемый дистрибутив Linux).

  9. Настройте аутентификацию с использованием Kerberos:

    • переименуйте существующий файл krb5.conf:

      sudo mv /etc/krb5.conf /etc/krb5.conf.samba_initial
    • создайте новый файл /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.

  10. Выполните настройку Samba:

    • переименуйте существующий файл smb.conf:

      sudo mv /app/inno-samba/etc/smb.conf /app/inno-samba/etc/smb.conf.samba_initial
    • создайте новый файл со следующими настройками:

      [global]
          workgroup = SAMDOM
          realm = SAMDOM.EXAMPLE.COM
          security = ADS
          dns forwarder = 10.0.9.100
          domain master = no
          local master = no
          preferred master = no
          os level = 0
          load printers = no
          printcap name = /dev/null
          vfs objects = acl_xattr
          map acl inherit = yes
          store dos attributes = Yes
          kerberos method = secrets only
          username map = /app/inno-samba/user.map
          idmap config * : range = 3000-7999
          idmap config * : backend = tdb
          idmap config SAMDOM : range = 10000-999999
          idmap config SAMDOM : backend = rid
          winbind enum groups = yes
          winbind enum users = yes
          winbind use default domain = yes
          template shell = /bin/bash
          winbind refresh tickets = yes
          template homedir = /home/%U
          winbind nss info = rfc2307
  11. Чтобы сопоставить учетную запись администратора домена с локальным пользователем root, создайте файл /app/inno-samba/user.map и добавьте в него следуюущю строку:

    !root = SAMDOM\Administrator
    Если имя учетной записи было изменено, укажите новое значение вместо Administrator.
  12. Для обеспечения доступа к доменным пользователям и группам через диспетчер службы имен (NSS) в файле /etc/nsswitch.conf в строках со значениями параметров passwd и group добавьте рядом с files значение windbind:

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

    session required pam_mkhomedir.so skel=/etc/skel/ umask=0077
  14. Выполните присоединение к домену:

    net ads join -U administrator
    Enter administrator's password: Passw0rd
    Using short domain name -- SAMDOM
    Joined 'client1' to dns domain 'samdom.example.com'

    Также для ввода в домен может использоваться утилита samba-tool:

    /app/inno-samba/bin/samba-tool domain join samdom.example.com MEMBER -U administrator
  15. Остановите службу inno-samba, которая необходима при установке Samba в роли контроллера домена, и запретите ее запуск с помощью следующих команд:

    sudo systemctl stop inno-samba
    sudo systemctl disable inno-samba
    sudo systemctl mask inno-samba
  16. Включите необходимые для работы в роли клиента демоны Samba:

    sudo systemctl enable smbd nmbd winbind
    sudo systemctl restart smbd nmbd winbind

Проверка результатов присоединения

Для проверки того, что сервис winbindd корректно взаимодействует с контроллером домена, используйте следующую команду:

wbinfo --ping-dc
checking the NETLOGON for domain[SAMDOM] dc connection to "DC1.SAMDOM.EXAMPLE.COM" succeeded

При возникновении ошибок:

  • проверьте, что сервис winbindd работает;

  • проверьте корректность заполнения файла smb.conf.

Для проверки возможности поиска доменных пользователей и групп с помощью библиотеки libnss_winbind, выполните следующие команды:

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

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

    getent group "SAMDOM\\Domain Users"
    domain users:*:1975400513:administrator,testuser

Для проверки возможности использования учетных записей доменных пользователей и групп в командах, например, выдайте доменному пользователю testuser и доменной группе Domain Users права на произвольный файл:

  • создайте произвольный файл:

    touch file.txt
  • измените владельца и группу для созданного файла:

    sudo chown "SAMDOM\\testuser:SAMDOM\\domain users" file.txt
  • проверьте изменения:

    ls -l
    -rw-rw-r -- 1 testuser domain users 0 Apr 28 15:24 file.txt

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

Еще один способ ввода сервера или рабочей станции в домен AD в роли участника — использование сервиса SSSD.

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

Для ввода клиентской машины в домен AD:

  1. Обновите пакеты:

    sudo apt update -y
  2. Установите пакеты, требуемые для присоединения к домену.

    Например:

    sudo apt install sssd sssd-tools libnss-sss libpam-sss realmd adcli packagekit oddjob oddjob-mkhomedir krb5-user -y
  3. Задайте IP-адрес контроллера домена (10.0.9.100) в качестве DNS-сервера.

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

    search samdom.example.com
    nameserver 10.0.9.100
    Некоторые утилиты (например, NetworkManager) могут перезаписывать изменения, вносимые в данный файл вручную. См. описание корректного способа настройки разрешения имен в документации на используемый дистрибутив Linux.
  4. Выберите для машины имя хоста длиной не более 15 символов (ограничение протокола NetBIOS) и назначьте его.

    Например:

    sudo hostnamectl set-hostname client1.samdom.example.com
  5. Убедитесь, что в файле /etc/hosts полное доменное имя (FQDN) и короткое имя хоста корректно сопоставлены с IP-адресом контроллера домена.

    Например:

    127.0.0.1     localhost
    10.0.9.101    client1.samdom.example.com     client1

    При использовании статического IP-адреса требуется настроить его аренду для данного хоста на DHCP-сервере.

    Если для управления настройками DNS клиентских машин используется DHCP-сервер, требуется сконфигурировать его для использования соответствующего DNS-сервера.

  6. Настройте синхронизацию времени с контроллером домена с использованием ntp или chrony (см. документацию на используемый дистрибутив Linux).

  7. Настройте аутентификацию с использованием Kerberos:

    • переименуйте существующий файл krb5.conf:

      sudo mv /etc/krb5.conf /etc/krb5.conf.samba_initial
    • создайте новый файл /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.

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

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

      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
      ad1.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=/

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

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

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

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

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

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

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

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

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

Для проверки возможности использования учетных записей доменных пользователей и групп в командах, например, выдайте доменному пользователю testuser и доменной группе Domain Users права на произвольный файл:

  • создайте произвольный файл:

    touch file.txt
  • измените владельца и группу для созданного файла:

    sudo chown "SAMDOM\\testuser:SAMDOM\\domain users" file.txt
  • проверьте изменения:

    ls -l
    -rw-rw-r -- 1 testuser domain users 0 Apr 28 15:24 file.txt

Проверка результатов присоединения

Для проверки возможности поиска доменных пользователей и групп с помощью библиотеки libnss_sss, выполните следующие команды:

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

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

    getent group "SAMDOM\\Domain Users"
    domain users:*:1975400513:administrator,testuser