Присоединение к домену Active Directory в роли участника
Участниками домена Samba могут быть серверы и рабочие станции под управлением Windows, Linux (Red Hat Enterprise Linux, Ubuntu, CentOS, Oracle Enterprise Linux, SUSE, AstraLinux) и других операционных систем, поддерживающих стандартные протоколы LDAP, Kerberos, DNS и SMB.
Участникам доступны следующие возможности:
-
использование имен доменных пользователей и групп в локальных списках управления доступом (ACL) к файлам и каталогам;
-
настройка общих ресурсов для работы в качестве файлового сервера;
-
настройка службы печати для работы в качестве сервера печати;
-
настройка механизма PAM для обеспечения входа доменных пользователей в систему локально и аутентификации доменных пользователей в работающих локально службах (например,
ssh).
| См. инструкции по присоединению в документации на операционную систему, установленную на присоединяемой машине. |
Примеры в данном разделе основаны на следующих допущениях:
-
В сети доступен полностью настроенный контроллер домена AD Samba, который также выступает в роли DNS-сервера, со следующими параметрами:
-
статический IP-адрес —
10.0.9.100; -
домен —
samdom.example.com; -
полное доменное имя (FQDN) —
dc1.samdom.example.com.
-
-
Требуется добавить в домен в роли участника машину под управлением Ubuntu 20.04 LTS со следующими параметрами:
-
статический IP-адрес —
10.0.9.101; -
полное доменное имя (FQDN) —
client1.samdom.example.com.
-
Для выполнения операции присоединения требуется пароль администратора домена.
| Для использования аутентификации на базе Kerberos необходимо обеспечить синхронизацию времени у всех участников домена AD. |
Присоединение с использованием Winbind
Один из способов ввода сервера или рабочей станции в домен AD в роли участника — использование вместе с Samba службы Winbind.
Присоединение
Для ввода клиентской машины в домен AD:
-
Обновите пакеты:
sudo apt update -y
-
Выполните стандартные проверки, чтобы убедиться в отсутствии на машине следов прошлых установок Samba.
-
Установите основной пакет inno-samba, следуя инструкциям, приведенным в разделе «Установка пакета inno-samba».
-
Установите дополнительные пакеты, требуемые для присоединения к домену:
Например:
sudo apt install winbind krb5-user libpam-krb5 libpam-winbind libnss-winbind -y
-
Задайте IP-адрес контроллера домена (
10.0.9.100) в качестве DNS-сервера.После внесенных изменений файл /etc/resolv.conf должен содержать следующие настройки:
search samdom.example.com nameserver 10.0.9.100
Некоторые утилиты (например, NetworkManager) могут перезаписывать изменения, вносимые в данный файл вручную. См. описание корректного способа настройки разрешения имен в документации на используемый дистрибутив Linux. -
Выберите для машины имя хоста длиной не более 15 символов (ограничение протокола NetBIOS) и назначьте его.
Например:
sudo hostnamectl set-hostname client1.samdom.example.com
-
Убедитесь, что в файле /etc/hosts полное доменное имя (FQDN) и короткое имя хоста корректно сопоставлены с IP-адресом контроллера домена.
Например:
127.0.0.1 localhost 10.0.9.101 client1.samdom.example.com client1
При использовании статического IP-адреса требуется настроить его аренду для данного хоста на DHCP-сервере.
Если для управления настройками DNS клиентских машин используется DHCP-сервер, требуется сконфигурировать его для использования соответствующего DNS-сервера.
-
Настройте синхронизацию времени с контроллером домена с использованием
ntpилиchrony(см. документацию на используемый дистрибутив Linux). -
Настройте аутентификацию с использованием 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.
-
-
Выполните настройку 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
-
-
Чтобы сопоставить учетную запись администратора домена с локальным пользователем root, создайте файл /app/inno-samba/user.map и добавьте в него следуюущю строку:
!root = SAMDOM\Administrator
Если имя учетной записи было изменено, укажите новое значение вместо Administrator. -
Для обеспечения доступа к доменным пользователям и группам через диспетчер службы имен (NSS) в файле /etc/nsswitch.conf в строках со значениями параметров
passwdиgroupдобавьте рядом сfilesзначениеwindbind:passwd: files winbind group: files winbind
-
Настройте автоматическое создание домашнего каталога при первом входе пользователя, добавив следующую строку в файл /etc/pam.d/common-session под строкой
session optional pam_sss.so:session required pam_mkhomedir.so skel=/etc/skel/ umask=0077
-
Выполните присоединение к домену:
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
-
Остановите службу
inno-samba, которая необходима при установке Samba в роли контроллера домена, и запретите ее запуск с помощью следующих команд:sudo systemctl stop inno-samba sudo systemctl disable inno-samba sudo systemctl mask inno-samba
-
Включите необходимые для работы в роли клиента демоны 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:
-
Обновите пакеты:
sudo apt update -y
-
Выполните стандартные проверки, чтобы убедиться в отсутствии на машине следов прошлых установок Samba.
-
Установите основной пакет inno-samba, следуя инструкциям, приведенным в разделе «Установка пакета inno-samba».
-
Установите дополнительные пакеты, требуемые для присоединения к домену:
Например:
sudo apt install sssd sssd-tools libnss-sss libpam-sss realmd adcli packagekit oddjob oddjob-mkhomedir krb5-user -y
-
Задайте IP-адрес контроллера домена (
10.0.9.100) в качестве DNS-сервера.После внесенных изменений файл /etc/resolv.conf должен содержать следующие настройки:
search samdom.example.com nameserver 10.0.9.100
Некоторые утилиты (например, NetworkManager) могут перезаписывать изменения, вносимые в данный файл вручную. См. описание корректного способа настройки разрешения имен в документации на используемый дистрибутив Linux. -
Выберите для машины имя хоста длиной не более 15 символов (ограничение протокола NetBIOS) и назначьте его.
Например:
sudo hostnamectl set-hostname client1.samdom.example.com
-
Убедитесь, что в файле /etc/hosts полное доменное имя (FQDN) и короткое имя хоста корректно сопоставлены с IP-адресом контроллера домена.
Например:
127.0.0.1 localhost 10.0.9.101 client1.samdom.example.com client1
При использовании статического IP-адреса требуется настроить его аренду для данного хоста на DHCP-сервере.
Если для управления настройками DNS клиентских машин используется DHCP-сервер, требуется сконфигурировать его для использования соответствующего DNS-сервера.
-
Настройте синхронизацию времени с контроллером домена с использованием
ntpилиchrony(см. документацию на используемый дистрибутив Linux). -
Настройте аутентификацию с использованием 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.
-
-
Выполните присоединение к домену:
-
используйте следующую команду для получения информации о домене и области безопасности:
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
-
-
Настройте локальный вход с доменной учетной записью:
-
в файле /etc/sssd/sssd.conf закомментируйте следующую строку:
# use_fully_qualified_names = True
-
для применения изменения перезапустите службу
sssd:sudo systemctl restart sssd
-
-
Для настройки возможности аутентификации доменных учетных записей по паролю при подключении через SSH:
-
в файле /etc/ssh/sshd_config задайте в параметре
PasswordAuthenticationзначениеyes:PasswordAuthentication yes
-
для применения изменения перезапустите службу
ssh:sudo systemctl restart ssh
-
-
Настройте автоматическое создание домашнего каталога при первом входе пользователя, добавив следующую строку в файл /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