Установка и базовая настройка SAMBA DC (Active Directory) на Linux Ubuntu
Опубликовано:
Используемые термины: Samba, Active Directory, контроллер домена, Ubuntu.
В инструкции показано, как развернуть службу каталогов samba dc (аналог Microsoft Active Directory) на систему Linux Ubuntu.
Предварительная настройка
Подготовим систему к работе. Предполагается, что мы будем настраивать сервер для домена dmosk.local.
1. Кэш репозиториев
Для корректной установки пакетов наш кэш должен быть в актуальном состоянии:
apt update
Для чистой системы также рекомендуется установить обновления пакетов:
apt upgrade
2. Время
Для контроллера домена очень важно, чтобы время на всех узлах сети было правильным.
Указываем часовой пояс:
timedatectl set-timezone Europe/Moscow
* В данном примере мы задаем зону по московскому времени.
Список всех доступных зон можно посмотреть командой:
timedatectl list-timezones
Устанавливаем утилиту для синхронизации времени:
apt install chrony
3. Имя сервера
Очень важно задать имя сервера до того, как поднимать контроллер домена. Смена имени на контроллере домена чувствительна и может привести к ошибкам в работе.
Выполняем команду:
hostnamectl set-hostname sadc-01.dmosk.local
* где sadc-01.dmosk.local — имя моего сервера.
Наш сервер должен уметь находить себя по имени. Добавляем его в файл hosts:
vi /etc/hosts
192.168.100.16 sadc-01.dmosk.local sadc-01
* где 192.168.100.16 — IP-адрес моего сервера.
Проверяем, что сервер правильно определяет свое полное имя:
hostname -f
В моем случае правильный ответ:
sadc-01.dmosk.local
4. Настройка DNS-клиента
Для контроллеров домена очень важно, чтобы использовались внутренние DNS, которые обслуживают внутренний домен. Когда мы развернем SAMBA DC, мы также поднимем DNS сервер.
По умолчанию, во многих Linux в качестве системы разрешения доменных имен используется systemd-resolved. Он выступает посредником между программами и внешними DNS-серверами. Его задача — кэширование и интеллектуальное управление запросами DNS. Однако, для наших целей он будет мешать, так как занимает порт 53, который необходим внутреннему DNS-серверу Samba AD DC.
Отключаем службу systemd-resolved:
systemctl disable --now systemd-resolved
Удаляем симлинк для resolv.conf:
unlink /etc/resolv.conf
Создаем новый файл resolv.conf:
vi /etc/resolv.conf
nameserver 77.88.8.8
search sadc-01.dmosk.local
* обратите внимание, что мы указали внешний DNS для Яндекса (77.88.8.8). Нам он нужен на момент установки пакетов. После мы его поменяем.
Теперь мы можем приступить к развертыванию контроллера домена.
Установка и настройка контроллера домена
Выполняем установку пакетов:
apt install samba samba-dsdb-modules samba-vfs-modules acl attr winbind libpam-winbind libnss-winbind krb5-config krb5-user libpam-krb5 smbclient dnsutils net-tools
* где основные пакеты:
- samba: основной пакет сервера.
- samba-dsdb-modules и samba-vfs-modules: для работы службы каталогов DSDB (аналог базы Microsoft AD DC) и поддержки расширенных атрибутов файловой системы.
- acl и attr: для поддержки POSIX ACL и расширенных атрибутов (xattr). Реализует возможность управлять правами на файлы, по похожему принципу с NTFS.
- winbind, libpam-winbind, libnss-winbind: делает так, что доменные пользователи и группы, хранящиеся в базе AD, были видны самой операционной системе Linux.
- krb5-config, krb5-user, libpam-krb5: для работы протокола Kerberos (аутентификация).
** а также вспомогательные:
- smbclient: диагностика доступа к ресурсам.
- dnsutils: проверка работы DNS.
- net-tools: проверка сетевых интерфейсов.
В процессе развертывания kerberos установщик задаст несколько вопросов.
1) Домен ЗАГЛАВНЫМИ символами:
Default Kerberos version 5 realm: DMOSK.LOCAL
2) Имя сервера в формате FQDN:
Kerberos servers for your realm: sadc-01.dmosk.local
3) Как и на предыдущем шаге, необходимо указать полное наименование сервера:
Administrative server for your Kerberos realm: sadc-01.dmosk.local
После установки пакетов нам нужно остановить и запретить для автозапуска следующие службы:
systemctl disable --now smbd nmbd winbind
* где:
- smbd — обмен файлами и печать.
- nmbd — поиск имен в старых сетях.
- winbind — интеграция с пользователями Windows.
** все эти функции на себя возьмет служба samba-ad-dc. Если мы не выключим перечисленные сервисы, будет конфликт и ошибка в работе. По идее, они будут автоматически заблокированы (masked) после запуска samba-ad-dc, но их предварительная остановка — верный шаг.
Удаляем классический конфигурационный файл smb.conf:
mv /etc/samba/smb.conf /etc/samba/smb.conf.backup
* на всякий случай, мы его не удалили, а переместили.
Запускаем samba-tool:
samba-tool domain provision
Данная команда выполнит начальную настройку SAMBA DC, создав нужный конфигурационный файл. В ходе ее работы нам будет задано несколько вопросов:
Realm [DMOSK.LOCAL]:
Domain [DMOSK]:
Server Role (dc, member, standalone) [dc]:
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
DNS forwarder IP address (write 'none' to disable forwarding) [77.88.8.8]:
Administrator password:
Retype password:
* в моем примере мне не пришлось вводить никаких данных, кроме пароли администратора. Значения по умолчанию, которые берутся из системы подходят:
- Realm — полное доменное имя. Используется более современными протоколами DNS и Kerberos.
- Domain — NetBIOS-имя для старых версиях систем (поколения до Windows 2000).
- Server Role — устанавливаемая роль сервера. Нам нужен Domain Controller.
- DNS backend — выбираем, какой будет использоваться сервер DNS. В большинстве случаем стоит выбрать SAMBA_INTERNAL.
- DNS forwarder — серверы DNS, на которые будут переводиться запросы в случае отсутствия информации о запрашиваемой доменной зоне.
После завершения работы утилиты samba-tool нам остается внести несколько правок и можно запускать сервис DC.
Убираем оригинальный конфигурационный файл krb5.conf и заменяем его тем, что сформировала утилита samba-tool:
mv /etc/krb5.conf /etc/krb5.conf.backup
cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
Открываем конфигурационный файл resolv.conf:
vi /etc/resolv.conf
Нам нужно удалить старую запись внешнего DNS и заменить на адрес локального сервера:
nameserver 77.88.8.8
nameserver 192.168.100.16
В случае, если у нас будет несколько серверов samba dc, необходимо прописать несколько строк. При этом лучше, чтобы первая строка вела на партнера по DC.
Разрешаем автозапуск сервиса samba-ad-dc и стартуем его:
systemctl enable --now samba-ad-dc
Проверяем статус:
systemctl status samba-ad-dc
Наш контроллер домена установлен.
Проверка работы AD DC
Необходимо убедиться в правильной работе контроллера домена. Для этого важно проверить работу DNS и возможность получить тикет после аутентификации пользователя.
Все нижеописанные команды вводим на поднятом контроллере домена.
1. Убедимся, что сервер возвращает правильный IP при запросе адреса по домену:
host -t A dmosk.local
dmosk.local has address 192.168.100.16
* в моем случае домен dmosk.local правильно вернул IP-адрес контроллера домена.
2. Проверяем dns запись для имени контроллера домена. В моем случае команда и ответ такие:
host -t A sadc-01.dmosk.local
sadc-01.dmosk.local has address 192.168.100.16
3. Также DNS должен правильно вернуть SRV запись для kerberos:
host -t SRV _kerberos._udp.dmosk.local
_kerberos._udp.dmosk.local has SRV record 0 100 88 sadc-01.dmosk.local.
... и ldap:
host -t SRV _ldap._tcp.dmosk.local
_ldap._tcp.dmosk.local has SRV record 0 100 389 sadc-01.dmosk.local.
4. Пробуем пройти аутентификацию от администратора:
kinit administrator
* пароль для данного пользователя мы задали при выполнении samba-tool.
Мы должны увидеть ответ на подобие:
Warning: Your password will expire in 41 days on Wed Jan 28 15:08:31 2026
Проверяем, что в системе появился тикет:
klist
Мы должны увидеть ответ, похожий на этот:
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@DMOSK.LOCAL
Valid starting Expires Service principal
12/17/25 16:14:12 12/18/25 02:14:12 krbtgt/DMOSK.LOCAL@DMOSK.LOCAL
renew until 12/18/25 16:14:05
Контроллер домена готов к работе.
Создание пользователя
В качестве дополнительного примера рассмотрим создание нового пользователя.
Чтобы посмотреть на список уже существующих пользователей, вводим:
samba-tool user list
Для создания нового выполним команду:
samba-tool user create dmosk
Система запроси нас ввести логин и пароль:
New Password:
Retype Password:
User 'dmosk' added successfully
* в примере создан пользователь с именем dmosk.