Дерево страниц

Для упрощения настройки рекомендуется воспользоваться инструментами Astra: см. статью Инструменты Astra Linux для работы с доменами Samba AD и Windows AD


Данная статья применима к:

  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)

  • Astra Linux Special Edition РУСБ.10015-16 исп. 1 и исп. 2

  • Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1)

  • Astra Linux Common Edition 2.12

В англоязычной документации для обозначения процесса настройки 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 в качестве DC AD в условиях реальной эксплуатации
рекомендуется использовать два или более DC для обеспечения отказоустойчивости.

Эта статья рассказывает, как настроить Samba как первый DC в домене, чтобы построить новый лес AD. Также статью можно использовать для миграции из домена Samba NT4 в домен Samba AD.

Если требуется подключить Samba  к уже существующему доменному лесу AD, как дополнительный DC

Samba при использовании в роли AD DC поддерживает:

  • Интегрированный сервер LDAP как база данных AD. Подробности см. Поддерживают ли Samba AD DC работу с OpenLDAP или другими службами LDAP;
  • Авторизацию через службу Kerberos Key Distribution Center (KDC). Поддерживаются варианты MIT KDC и Heimdal KDC;
    Поставляемая в составе Astra Linux Samba использует MIT KDC, также поставляемый в составе этих ОС;
  • Работу с встроенным сервером DNS;
  • Работу с внешним сервером DNS (в примерах ниже рассматривается работа с сервером DNS BIND9).

Установка и настройка контроллера и клиента домена

Подготовка к инсталляции

  • Выберите имя хоста для вашего AD DC. Не рекомендуется использовать в качестве имен хостов такие идентификаторы, как PDC или BDC, унаследованные от NT4 . Эти сущности отсутствуют в AD, и такие названия вызывают путаницу;

  • Выберите DNS-имя для доменного леса AD. Это имя также будет использовано как имя области (realm) Kerberos AD ;

    Для создания домена AD используйте DNS-имя, которое не понадобится изменять. Samba не поддерживает переименование зон DNS AD и областей Kerberos.

    Назначьте хосту полное доменное имя (FQDN), например dc2.samdom.example.com:

    sudo hostnamectl set-hostname dc2.samdom.example.com

  • Используйте для контроллера домена статический адрес.  Дополнительную информацию см. Часто задаваемые вопросы по именованию доменов AD;

  • Отключите инструменты (например, resolvconf), которые автоматически обновляют файл настроек DNS /etc/resolv.conf.
    AD DC и члены домена обязаны использовать сервер DNS, способный разрешать зоны DNS AD . Если в сети нет других серверов DNS, то файл /etc/resolv.conf должен указывать адрес самого сервера:

    search samdom.example.com
    nameserver 10.0.2.254

  • Убедитесь, что файл /etc/hosts на DC корректно разрешает полное доменное имя (fully-qualified domain name, FQDN) и короткое имя хоста DC во внешний сетевой IP-адрес DC. Например: 

    127.0.0.1 localhost.localdomain localhost
    10.0.2.254 DC.samdom.example.com DC

    Имя хоста не должно разрешаться в IP-адрес 127.0.0.1 или в любой другой IP-адрес, кроме используемого на внешнем сетевом интерфейсе DC. Для проверки правильности настроек можно использовать команду:

    host `hostname`

Если Samba уже была установлена (настроена)

Если Samba уже была установлена (настроена):

  • Проверьте, что все процессы Samba остановлены:

ps ax | egrep "samba|smbd|nmbd|winbindd|rkb5-kdc"

    • Если вывод команды показывает наличие любого из процессов samba, smbd, nmbd, или winbindd, то остановите эти процессы и запретите их автоматический запуск:

sudo systemctl stop smbd nmbd winbind krb5-kdc
sudo systemctl mask smbd nmbd winbind krb5-kdc

Обратите внимание:

  • Пакет (apt install winbind) называется winbind с одним 'd';
  • Процесс (ps fax | grep winbindd) называется winbindd с двумя 'dd';
  • Сервис (sytemsctl status winbind) называется winbind с одним 'd';

  • Удалите все существующие файлы конфигурации Samba smb.conf file. Чтобы получить список путей к этим файлам:

sudo smbd -b | grep "CONFIGFILE"

CONFIGFILE: /usr/local/samba/etc/samba/smb.conf

    • Удалите все файлы баз данных Samba (*.tdb и *.ldb). Чтобы получить список путей к этим файлам:

sudo smbd -b | egrep "LOCKDIR|STATEDIR|CACHEDIR|PRIVATE_DIR"

LOCKDIR: /usr/local/samba/var/lock/
STATEDIR: /usr/local/samba/var/locks/
CACHEDIR: /usr/local/samba/var/cache/
PRIVATE_DIR: /usr/local/samba/private/

Только полная очистка настроек поможет предотвратить ошибки, и гарантирует, что никакие файлы из предыдущей настройки Samba не попадут в новые настройки DC.
  • Если существует файл настроек Kerberos /etc/krb5.conf file, также удалите его: 

sudo rm /etc/krb5.conf

Установка Samba

Пакет 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
Обратите внимание - указанная команда устанавливает также и пакет bind9 - сервер DNS.

Назначение Samba на роль AD DC

Подготовительные команды

Перед Назначением останавливаем далее ненужные службы, запрещаем их запуск, и удаляем установленную по умолчанию конфигурацию Samba:

sudo systemctl stop winbind smbd nmbd krb5-kdc
sudo systemctl mask winbind smbd nmbd krb5-kdc
sudo rm /etc/samba/smb.conf

Назначение

Назначение выполняется с помощью команды samba-tool domain provision. Эта команда поддерживает возможность выполнения настроек в интерактивном или автоматическом режимах. Подробности см.:

samba-tool domain provision --help

При создании нового домена AD рекомендуется сразу включить так называемые расширения NIS (NIS extensions), передав инструменту samba-tool domain provision параметр  --use-rfc2307.
Это позволит хранить в AD специфические атрибуты Unix:

  • Числовые идентификаторы пользователей (UID);
  • Пути у домашним каталогам;
  • Идентификаторы групп.

Включение расширений 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.

Первый DC в домене AD обязательно должен быть настроен на использование какой-либо службы DNS.

Варианты служб NONE и BIND9_FLATFILE более не поддерживается.

DNS forwarder IP addressнедоступноЭта настройка доступна только при выборе службы DNS SAMBA_INTERNAL DNS. Подробности см. Настройка перенаправления DNS.

Administrator password

--adminpass

Устанавливает пароль администратора домена.

Если заданный пароль не будет соответствовать требованиям по сложности пароля, Назначение не будет выполнено.

Подробности см. Microsoft TechNet: Сложность паролей должна соответствовать требованиям.

Другие параметры, часто используемые в команде samba-tool domain provision:

--option="interfaces=lo eth0" --option="bind interfaces only=yes":  Если сервер имеет несколько сетевых интерфейсов, используйте эти параметры для привязки Samba к нужным интерфейсам. Это позволить команде samba-tool зарегистрировать корректный сетевой адрес  при настройке.


  • Не используйте NONE как службу DNS,  эта возможность больше не поддерживается;
  • При использовании в качестве службы DNS службы BiIND, не используйте вариант BIND9_FLATFILE,  эта возможность больше не поддерживается;
  • После назначения первого DC в домене AD не настраивайте больше таким способом никакие другие DC в этом домене, используйте процедуру присоединение (Join) для настройки остальных DC.

Назначение Samba в интерактивном режиме

Для выполнения Назначения в интерактивном режиме выполнить команду:

sudo samba-tool domain provision --use-rfc2307 --interactive

# Настройка автоматического запуска доменной службы Samba
sudo systemctl unmask samba-ad-dc
sudo systemctl enable samba-ad-dc

# Перед запуском доменной службы samba настраиваем службу DNS
echo 'include "/var/lib/samba/bind-dns/named.conf";' | sudo tee -a /etc/bind/named.conf
sudo chown -R root:bind /var/lib/samba/bind-dns
sudo systemctl restart bind9

# Запуск доменной службы Samba
sudo systemctl start samba-ad-dc

В процессе Назначения должен произойти примерно такой диалог:

# Запрашивается имя области Kerberos
Realm [SAMDOM.EXAMPLE.COM]: SAMDOM.EXAMPLE.COM

# Запрашивается имя домена
Domain [SAMDOM]: SAMDOM

# Запрашивается роль сервера
Server Role (dc, member, standalone) [dc]: dc

# Выбирается служба DNS
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: BIND9_DLZ

# Выбирается IP-адрес для перенаправления запросов DNS
DNS forwarder IP address (write 'none' to disable forwarding) [10.0.2.254]: 8.8.8.8

# Ввод и подтверждение пароля администратора
Administrator password: Passw0rd
Retype password: Passw0rd

Looking up IPv4 addresses
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up share.ldb
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=samdom,DC=example,DC=com
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
Setting up self join
Adding DNS accounts
Creating CN=MicrosoftDNS,CN=System,DC=samdom,DC=example,DC=com
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
A Kerberos configuration suitable for Samba 4 has been generated at /usr/local/samba/private/krb5.conf
Setting up fake yp server settings
Once the above files are installed, your Samba4 server will be ready to use
Server Role: active directory domain controller
Hostname: DC
NetBIOS Domain: SAMDOM
DNS Domain: samdom.example.com
DOMAIN SID: S-1-5-21-2614513918-2685075268-614796884

Интерактивный режим настройки поддерживает различные параметры  команды samba-tool domain provision, что позволяет задавать настройки, не содержащиеся в интерактивном диалоге.

Назначение Samba в автоматическом режиме

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

  • Роль сервера: dc
  • Расширения NIS: включены
  • Служба DNS: внутренний DNS BIND9_DLZ
  • Область Kerberos и зона DNS AD: samdom.example.com
  • Имя домена для NetBIOS: SAMDOM
  • Пароль администратора: Passw0rd
  • Используется сеть 10.0.2.0/24
  • Адрес хоста Samba 10.0.2.254

Для указанных параметров команда назначения будет выглядеть так:

sudo samba-tool domain provision --server-role=dc --use-rfc2307 --dns-backend=BIND9_DLZ --realm=SAMDOM.EXAMPLE.COM --domain=SAMDOM --adminpass=Passw0rd

Завершающие команды

После успешного выполнения команды Назначения:

# Разрешить автоматический запуск службы контроллера домена:
sudo systemctl unmask samba-ad-dc
sudo systemctl enable samba-ad-dc

# Перед запуском доменной службы samba настраиваем службу DNS
echo 'include "/var/lib/samba/bind-dns/named.conf";' | sudo tee -a /etc/bind/named.conf
sudo chown -R root:bind /var/lib/samba/bind-dns
sudo systemctl restart bind9

# Скопировать автоматически созданную конфигурацию службы Kerberos
sudo cp -b /var/lib/samba/private/krb5.conf /etc/krb5.conf

# Запустить доменную службу Samba
sudo systemctl start samba-ad-dc

Проверка результатов Назначения

Подробно команды для проверки результатов настройки контроллера домена описаны в статье Присоединение Samba к существующему домену AD. Разница только в том, что домена AD сейчас нет, сервер только один, соответственно, опрашивать нужно только один сервер, и в ответах будет только один сервер.

Создание реверсивных зон

С помощью команды samba-tool dns zonecreate можно добавить необязательную зону реверсивного поиска:

samba-tool dns zonecreate samdom.example.com 2.0.10.in-addr.arpa -U Administrator

Password for [administrator@SAMDOM.EXAMPLE.COM]:
Zone 2.0.10.in-addr.arpa created successfully
Если требуется использовать несколько реверсивных зон, просто выполните команду несколько раз с указанием параметров соответствующих подсетей.
Изменение реверсивных зон не требует перезапуска сервисов Samba или BIND.

Настройка участников домена

Настройка синхронизации времени

Для нормальной рабботы службы Kerberos требуется синхронизация времени всех участников домена. Подробности см. в статье Службы синхронизации времени в Astra Linux.

DNS

Участники домена AD используют DNS для поиска сервисов, например, таких, как LDAP и Kerberos. Для этого они должны использовать сервер DNS, способный разрешать зоны DNS AD.

Если в системе используется сервер DHCP, то в его настройках можно указать имя домена, которое будет передаваться всем хостам при запросе адреса Подробнее см. DHCP

Помимо использования DHCP, настройку на нужный сервер можно выполнить непосредственно на хостах - участниках домена в файле  /etc/resolv.conf. 
Для этого укажите в файле:

  • имя домена DNS AD  как имя домена для поиска (search),
  • IP-адрес вашего DC как значение параметра nameserver.

Например:

search samdom.example.com
nameserver 10.0.2.254

Разрешение имён для клиентских машин

После выполнения указанных выше настроек DNS сервер не может получать и, соответственно, выдавать информацию об именах и IP-адресах клиентских машин.

Если в домене используются клиентские машины, получающие динамические IP-адреса от сервера DHCP, сервер DNS может быть настроен на автоматическое получение информации о выданных адресах. Примерный порядок настройки см. в статье Динамическое обновление DNS клиентских машин FreeIPA;

Если в домене используются клиентские машины, которым присваиваются статические адреса, то:

  1. Можно использовать для присвоения этих статических адресов сервер DHCP с динамическим обновлением адресов;
  2. Можно вручную задавать соответствие имени и адреса для каждого такого клиента. См. Администрирование DNS.

Kerberos

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

Процедуры установки и настройки клиентов Kerberos см. Kerberos

Во время процедуры назначения Samba автоматически создает конфигурационный файл /var/lib/samba/private/krb5.conf для клиентов Kerberos, настроенный на создаваемый DC.

Это файл должен быть скопирован в рабочую конфигурацию Kerberos на всех хостах, входящих в домен.

В автоматически создаваемом файле конфигурации Kerberos для поиска доменного контроллера Kerberos (KDC) используются  сервисные записи (SRV). Для того, чтобы такая конфигурация работала корректно, в домене должна быть правильно настроена и работать служба, в том числе созданы файлы зон, в которых размещены соответствующие сервисные записи  (см. статью DNS-сервер BIND9).

Тестирование файлового сервера

Во время назначения автоматически создаются разделяемые ресурсы netlogon и sysvol, и они обязательно должны существовать в DC. Чтобы увидеть все  разделяемые файловые ресурсы, предоставляемые DC:

smbclient -L localhost -U%

Domain=[SAMDOM] OS=[Unix] Server=[Samba x.y.z]

Sharename Type Comment
--------- ---- -------
netlogon Disk
sysvol Disk
IPC$ IPC IPC Service (Samba x.y.z)
Domain=[SAMDOM] OS=[Unix] Server=[Samba x.y.z]

Server Comment
--------- -------

Workgroup Master
--------- -------

Для проверки работы аутентификации, подключитесь к ресурсу netlogon с использованием учётной записи администратора домена:

smbclient //localhost/netlogon -UAdministrator -c 'ls'

Enter Administrator's password:
Domain=[SAMDOM] OS=[Unix] Server=[Samba x.y.z]
. D 0 Tue Nov 1 08:40:00 2016
.. D 0 Tue Nov 1 08:40:00 2016

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 

Инструмент wbinfo

При установке пакета samba автоматически устанавливается служба winbindd.

Для работы с этой службой используется инструмент командной строки wbinfo,
позволяющий получать информацию о пользователях и группах AD.

Примеры команд:

КомандаОписание
wbinfo -uВывести список пользователей
wbinfo -gВывести список групп
wbinfo -i имя_пользователяВывести подробную информацию о пользователе
wbinfo -?
wbinfo --help
Вывести справку по командам

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

По умолчанию, пользователи домена AD не могут выполнять вход в Linux-системы.
Для обеспечения входа в Linux-системы с учетными записями  Active Directory необходимо внести следующие изменения в настройки Samba AD DC в настройки пользовательских компьютеров.

Настройка Samba AD DC

В конфигурационном файле Samba  /etc/samba/smb.conf необходимо добавить настройки службы winbind и разрешение авторизоваться через эту службу (добавленные строки выделены жирным шрифтом):

[global]
    netbios name = DHCP
    realm = SAMDOM.EXAMPLE.COM
    server role = active directory domain controller
    server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbindd, ntp_signd, kcc, dnsupdate
    workgroup = SAMDOM
    idmap_ldb:use rfc2307 = yes

    template shell = /bin/bash
    winbind use default domain = true
    winbind offline logon = false
    winbind nss info = rfc2307

    winbind enum users = yes
    winbind enum groups = yes


После внесения изменений проверить правильность конфигурации командой 

testparm
И перезапустить службы samba.

Настройка пользовательских компьютеров

На пользовательском компьютере использовать команду:

pam-auth-update
И убедиться, что включены все профили PAM.
При необходимости - включить аутентификацию winbind, используя клавишу "пробел". 
По окончании нажать клавишу "Tab", перейти на "ОК", и записать изменения.

В файле  /etc/nsswitch.conf добавить слово winbind параметры password и group:

# /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: compat

hosts: files dns
networks: files

protocols: db files
services: db files
ethers: db files
rpc: 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 use_authtok try_first_pass

Предупреждение: Использование контроллера домена как файлового сервера

Несмотря на то, что Samba в режиме AD DC может предоставлять услуги разделения файлов так же, как и в любом другом режиме применения, разработчики Samba не рекомендуют использовать DC как файловый север по следующим причинам:

  • Для всех организаций, за исключением самых маленьких, наличие более, чем одного DC, является реально хорошим способом резервирования, повышающим безопасность обновлений;
  • Отсутствие сложных данных и влияния на другие сервисы позволяет обновлять DC совместно с ОС хоста каждые год или два;
  • Обновления могут выполняться путем установки новых версий, или внесения изменений, которые лучше проверены в Samba, что позволяет получить новые возможности, избежав множества рисков, связанных с повреждением данных;
  • Необходимость модернизации DC и файлового сервера наступает в разные моменты. Потребность в новых возможностях DC и файлового сервера возникает в разные моменты времени. В то время, как AD DC стремительно развивается, приобретая новые возможности, файловый сервер, после более 20 лет, гораздо более консервативен;
  • mandatory smb signing is enforced on the 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

Материалы для дальнейшего изучения

См.  Пользовательская документация