Для упрощения настройки рекомендуется воспользоваться инструментами Astra: см. статью Инструменты Astra Linux для работы с доменами Samba AD и Windows AD |
|
| В англоязычной документации для обозначения процесса настройки Samba на выполнение роли AD DC используется термин "provisioning", в данном тексте в качестве перевода будет использоваться термин "Назначение". |
Выполнение Назначения требует наличия привилегий суперпользователя (в Astra Linux Special Edition - суперпользователя с высоким уровнем целостности) для создания конфигурационных файлов и установки прав доступа. После выполнения Назначения служба smbd перестанет работать, а службы winbind,nmbd, krb5-kdc перейдут под управление доменной службы samba-ad-dc. Однако, после установки всех необходимых пакетов все эти службы будут автоматически запущены, и перед выполнением Назначения их нужно будет остановить и заблокировать их автоматический запуск. Приведённые далее сценарии Назначения содержат соответствующие команды. |
Данная статья основывается на материалах из wiki.samba.org
Samba, начиная с версии 4.0, может работать как контроллер домена (domain controller, DC) Active Directory (AD).
При применении Samba в качестве контроллера домена AD в условиях реальной эксплуатации рекомендуется использовать два или более контроллера для обеспечения отказоустойчивости. |
Далее рассказывается как настроить Samba как первый DC в домене, чтобы построить новый лес AD. Также статью можно использовать для миграции из домена Samba NT4 в домен Samba AD.
Если требуется подключить Samba к уже существующему доменному лесу AD, как дополнительный DC
|
Samba при использовании в роли AD DC поддерживает:
Выбрать имя домена для доменного леса AD. Это имя также будет использовано как имя области (realm) Kerberos AD.
| Имя домена в дальнейшем не может быть изменено. Samba не поддерживает переименование зон DNS AD и областей Kerberos. |
Назначить контроллеру домена полное доменное имя (FQDN), состоящее из имени контроллера и имени домена:
| sudo hostnamectl set-hostname dc2.samdom.example.com |
Отключить инструменты (например, resolvconf), которые автоматически обновляют файл настроек DNS /etc/resolv.conf.
Контроллер домена и члены домена обязаны использовать сервер DNS, способный разрешать зоны DNS AD. Если в сети нет других серверов DNS, то файл /etc/resolv.conf должен указывать IP-адрес самого контроллера домена:
search samdom.example.com |
| host `hostname` |
| Только полная очистка настроек поможет предотвратить ошибки, и гарантирует, что никакие файлы из предыдущей настройки Samba не попадут в новые настройки DC. |
Если Samba уже была установлена (настроена):
| ps ax | grep -E "samba|smbd|nmbd|winbindd|rkb5-kdc" |
Обратите внимание:
|
| sudo systemctl stop smbd nmbd winbind krb5-kdc sudo systemctl mask smbd nmbd winbind krb5-kdc |
CONFIGFILE: /usr/local/samba/etc/samba/smb.conf |
LOCKDIR: /usr/local/samba/var/lock/ |
| sudo rm /etc/krb5.conf |
Пакет samba входит в дистрибутивы Astra Linux, и может быть установлен с помощью Графический менеджер пакетов synaptic, или из командной строки командой
| sudo apt install samba |
После установки пакета samba сервис smbd будет запущен автоматически с настройками "по умолчанию".
Отдельно установленный пакет samba может быть использован как файловый сервер или сервер печати. Для использования samba в качестве домена AD нужно установить пакет samba и дополнительные пакеты:
sudo apt install samba winbind libpam-winbind libnss-winbind libpam-krb5 krb5-config krb5-user krb5-kdc bind9 |
Перед Назначением остановить ненужные службы, запретить их запуск, и удалить установленный по умолчанию конфигурационный файл Samba:
sudo systemctl stop winbind smbd nmbd krb5-kdc |
| После назначения первого контроллера в домене AD никакие другие контроллеры в этом домене не должны назначаться. Для следующих контроллеров необходимо использовать процедуру присоединение (Join) для настройки остальных.. |
Назначение выполняется с помощью команды samba-tool domain provision. Эта команда поддерживает возможность выполнения настроек в интерактивном или автоматическом режимах. Справку по использованию команды можно получить с помощью опции --help:
samba-tool domain provision --help |
При создании нового домена AD рекомендуется сразу включить так называемые расширения NIS (NIS extensions), передав инструменту samba-tool domain provision параметр --use-rfc2307. Это позволит хранить в AD специфические атрибуты Unix:
Включение расширений NIS при установке не влечет за собой никаких отрицательных побочных эффектов, а их включение в существующем домене требует ручного расширения схемы AD.
Подробности см. в:
При Назначении могут применяться следующие параметры:
| Интерактивный режим | Автоматический режим | Комментарий | |
|---|---|---|---|
| --use-rfc2307 | --use-rfc2307 | Включает расширения NIS | |
| Realm | --realm | Область Kerberos. Также, используется как домен DNS AD. Например: samdom.example.com. | |
| Domain | --domain | Имя домена для NetBIOS. Рекомендуется использовать первую часть имени домена DNS AD. Например, для домена samdom.example.com это будет имя samdom. | |
| Server Role | --server-role | Устанавливает роль контроллера DC. | |
| DNS backend | --dns-backend | Выбирает службу DNS.
Варианты служб NONE и BIND9_FLATFILE более не поддерживается. | |
| DNS forwarder IP address | недоступно | Эта настройка доступна только при выборе службы DNS SAMBA_INTERNAL DNS. Подробности см. Настройка перенаправления DNS. | |
Administrator password | --adminpass | Устанавливает пароль администратора домена.
Подробности см. Microsoft TechNet: Сложность паролей должна соответствовать требованиям. | |
| --option="interfaces=lo eth0" | Если сервер имеет несколько сетевых интерфейсов, то эти параметры можно использовать для привязки Samba к нужным интерфейсам. | ||
| -option="bind interfaces only=yes" |
|
Для выполнения Назначения в интерактивном режиме выполнить команду:
sudo samba-tool domain provision --use-rfc2307 --interactive |
В процессе Назначения должен произойти примерно такой диалог:
# Запрашивается имя области Kerberos # Запрашивается имя домена # Запрашивается роль сервера # Выбирается служба DNS # Выбирается IP-адрес для перенаправления запросов DNS # Ввод и подтверждение пароля администратора Looking up IPv4 addresses |
Интерактивный режим настройки поддерживает различные параметры команды samba-tool domain provision, что позволяет задавать настройки, не содержащиеся в интерактивном диалоге.
Для примера назначения Samba в автоматическом режиме используем следующие параметры:
Для указанных параметров команда назначения будет выглядеть так:
sudo samba-tool domain provision --server-role=dc --use-rfc2307 --dns-backend=BIND9_DLZ --realm=SAMDOM.EXAMPLE.COM --domain=SAMDOM --adminpass=Passw0rd |
После успешного выполнения команды Назначения перед запуском доменной службы samba:
sudo systemctl unmask samba-ad-dc |
echo 'include "/var/lib/samba/bind-dns/named.conf";' | sudo tee -a /etc/bind/named.conf |
sudo cp -b /var/lib/samba/private/krb5.conf /etc/krb5.conf |
sudo systemctl start samba-ad-dc |
Подробно команды для проверки результатов настройки контроллера домена описаны в статье Присоединение Samba к существующему домену AD. Разница только в том, что домена AD сейчас нет, сервер только один, соответственно, опрашивать нужно только один сервер, и в ответах будет только один сервер.
С помощью команды samba-tool dns zonecreate можно добавить необязательную зону реверсивного поиска:
Password for [administrator@SAMDOM.EXAMPLE.COM]: |
Если требуется использовать несколько реверсивных зон команду следует выполнить несколько раз с указанием параметров соответствующих подсетей.
Изменение реверсивных зон не требует перезапуска сервисов Samba или BIND.
Для нормальной работы службы Kerberos требуется синхронизация времени всех участников домена. Подробности см. в статье Службы синхронизации времени в Astra Linux. |
Участники домена AD используют DNS для поиска доменных служб, например, таких, как LDAP и Kerberos. Для этого необходим сервер DNS, способный разрешать зоны DNS AD.
Если в системе используется сервер DHCP, то в его настройках можно указать имя домена, которое будет передаваться всем хостам при запросе адреса Подробнее см. DHCP: служба isc-dhcp-server и Архив ⬝ DHCP: служба kea.
Помимо использования DHCP, настройку можно выполнить непосредственно на хостах - участниках домена в файле /etc/resolv.conf. Для этого указать в файле:
Например:
search samdom.example.com |
Для того, чтобы служба DNS могла выполнять разрешение имен клиентских машин должно быть настроено предоставление информации об IP-адресах этих машин. Это может быть сделано следующими способами:
При работе в домене AD Kerberos используется для аутентификации пользователей, хостов, и доменных служб. Процедуры установки и настройки клиентов Kerberos см. в статье Kerberos.
Во время процедуры назначения Samba автоматически создает конфигурационный файл /var/lib/samba/private/krb5.conf для клиентов Kerberos, настроенный на создаваемый контроллер домена. Это файл должен быть скопирован в рабочую конфигурацию Kerberos на всех хостах, входящих в домен.
В автоматически создаваемом файле конфигурации Kerberos для поиска доменного контроллера Kerberos (KDC) используются сервисные записи (SRV). Для того, чтобы такая конфигурация работала корректно, в домене должна быть правильно настроена и работать служба DNS, в том числе должны быть созданы файлы с описанием зон, в которых размещены соответствующие сервисные записи (см. статью DNS-сервер BIND9).
Во время назначения автоматически создаются разделяемые ресурсы netlogon и sysvol, и они обязательно должны существовать в DC. Чтобы увидеть все разделяемые файловые ресурсы, предоставляемые DC:
smbclient -L localhost -U% |
Пример вывода команды:
Domain=[SAMDOM] OS=[Unix] Server=[Samba x.y.z] Sharename Type Comment Server Comment Workgroup Master |
Для проверки работы аутентификации можно подключиться к ресурсу netlogon с использованием учётной записи администратора домена:
Enter Administrator's password: 49386 blocks of size 524288. 42093 blocks available |
Если проверки завершаются ошибками см. Поиск и устранение проблем
Для управления Samba AD DC в состав пакета Samba входит инструмент командной строки samba-tool. Основные команды инструмента:
| Команда | Описание |
|---|---|
dbcheck | Проверка локальной базы данных AD на наличие ошибок |
| delegation | Управление делегированием |
| dns | Управление параметрами доменной службы DNS |
| domain | Управление параметрами домена |
| drs | Управление службой репликации каталогов (Directory Replication Services, DRS) |
| dsacl | Управление списками контроля доступа DS |
| fsmo | Управление ролями (Flexible Single Master Operations, FSMO) |
| gpo | Управление групповыми политиками |
| group | Управление группами |
| ldapcmp | Сравнение двух баз данных ldap |
| ntacl | Управление списками контроля доступа ACL |
| processes | Вывод списвка процессов (для упрощения отладки без использования setproctitle). |
| rodc | Управление контроллером домена (Read-Only Domain Controller, RODC) |
| sites | Управление сайтами |
| spn | Управление службой принципалов (Service Principal Name, SPN) |
| testparm | Проверка конфигурационного файла на корректность синтаксиса |
| time | Получение показаний текущего времени сервера |
| user | Управление пользователями |
| visualize | Графическое представление состояния сети Samba |
Подробная информация об инструменте доступна в справочнике man:
man samba-tool |
Краткую справку по работе инструмента можно получить командой
samba-tool -h |
При установке пакета samba автоматически устанавливается служба winbindd. Для работы с этой службой используется инструмент командной строки wbinfo, позволяющий получать информацию о пользователях и группах AD. Примеры команд:
| Команда | Описание |
|---|---|
| wbinfo -u | Вывести список пользователей |
| wbinfo -g | Вывести список групп |
| wbinfo -i имя_пользователя | Вывести подробную информацию о пользователе |
| wbinfo -? wbinfo --help | Вывести справку по командам |
По умолчанию, пользователи домена AD не могут выполнять вход в Linux-системы. Для обеспечения входа в Linux-системы с учетными записями Active Directory необходимо внести следующие изменения в настройки Samba AD DC в настройки пользовательских компьютеров.
В конфигурационном файле Samba /etc/samba/smb.conf необходимо добавить настройки службы winbind и разрешение авторизоваться через эту службу (добавленные строки выделены жирным шрифтом):
[global] template shell = /bin/bash winbind enum users = yes |
После внесения изменений проверить правильность конфигурации командой
| testparm |
И перезапустить службы samba.
На пользовательском компьютере использовать команду:
sudo pam-auth-update |
и убедиться, что включена аутентификация winbind. При необходимости - включить аутентификацию winbind, используя клавишу "пробел".
По окончании нажать клавишу "Tab", перейти на "ОК", и записать изменения.
В файле /etc/nsswitch.conf добавить слово winbind параметры password и group:
# /etc/nsswitch.conf passwd: compat winbind hosts: files dns protocols: db files netgroup: nis |
Чтобы пользователи AD после аутентификации могли менять свой пароль из командной строки в файле /etc/pam.d/common-password из строки:
password [success=1 default=ignore] pam_winbind.so use_authtok try_first_passfile |
убрать слово use_authtok statement:
| password [success=1 default=ignore] pam_winbind.so |
Несмотря на то, что Samba в режиме AD DC может предоставлять услуги разделения файлов так же, как и в любом другом режиме применения, разработчики Samba не рекомендуют использовать DC как файловый север по следующим причинам:
Если вы изучаете возможность использовать Samba DC как файловый сервер, рассмотрите вместо этого возможность использовать на DC виртуальную машину VM, содержащую отдельного участника домена.
Если вы вынуждены использовать Samba DC как файловый сервер, помните, что виртуальная файловая система (virtual file system, VFS) позволяет настраивать разделяемые ресурсы только со списками управления доступом access (control lists, ACL) Windows.
Разделяемые ресурсы с ACL POSIX на Samba DC не поддерживаются, и не работают.
Для предоставления сетевых разделяемых ресурсов с полными возможностями Samba, используйте отдельного участника домена Samba.
Подробности см.:
Если у вас маленький домен (маленький офис, домашняя сеть), нет желания следовать рекомендациям разработчиков Samba, и DC используется как файловый сервер, настройте Winbindd до начала настройки разделяемых ресурсов.
Подробности см.: Configuring Winbindd on a Samba AD DC.
Подробности см.: Поиск и устранение проблем в Samba AD DC
См. Пользовательская документация