[Перевод] Превращаем Ubuntu Server в контроллер домена с помощью samba-tool

С помощью Samba можно превратить сервер, работающий под управлением ОС семейства Linux, в контроллер домена (Domain Controller, DC) Active Directory. Тот DC, который мы собираемся поднять, сможет работать как контроллер домена Windows NT4. Он подойдёт для централизованного хранения данных учётных записей пользователей и компьютеров.
Надо отметить, что мы не будем говорить о задаче создания основного контроллера домена (Primary Domain Controller, PDC) Active Directory, хотя связка Ubuntu Server/Samba, рассмотренная здесь (с добавлением OpenLDAP) вполне может играть и такую роль.
Итак, наша цель — быстро и экономично обзавестись AD DC. В этом нам поможет интерактивный инструмент samba-tool, который предназначен для автоматизированной подготовки сервера к работе, а именно, он позволяет сформировать файл настроек /etc/smb.conf.
Начнём с установки необходимого ПО.
Установка
Первый шаг — установка на сервер пакетов Samba и Winbind. Сделать это можно с помощью следующей команды:
sudo apt install samba libpam-winbindВремя установки невелико, даже с учётом того, что системе может понадобиться загрузить некоторые зависимости.
После установки можно приступать к настройкам.
Подготовка к настройке
Перед запуском
samba-tool нужно проверить файл /etc/hosts, а именно — верны ли записанные в нём полное доменное имя и IP-адрес контроллера домена. Там можно найти что-то вроде этого: 127.0.0.1 localhost.localdomain
IP_ADDRESS_OF_SERVER localhost
IP_ADDRESS_OF_SERVER SAMBADOM.EXAMPLE.NET
SAMBADOMЗдесь
IP_ADDRESS_OF_SERVER — это реальный адрес сервера Samba. Проверьте, чтобы файл содержал актуальные данные.Далее нужно задать имя узла для сервера. Как можно судить по приведённому выше фрагменту файла /etc/hosts, в нашем случае имя узла — SAMBADOM. Для того, чтобы его настроить, откройте файл /etc/hostname и соответствующим образом его измените. Далее — перезагрузите сервер.
После того, как сервер перезагрузится, нужно удалить существующий файл smb.conf, а так же — любые файлы баз данных Samba (это .tdb и .ldb-файлы). Для того, чтобы найти директории, содержащие эти файлы, выполните следующие команды:
mbd -b | grep "CONFIGFILE"
smbd -b | egrep "LOCKDIR|STATEDIR|CACHEDIR|PRIVATE_DIR"На рисунке ниже показаны результаты исполнения этих команд, которыми можно будет воспользоваться для того, чтобы удалить ненужные файлы. Если же подобные файлы в системе не существуют — можно сразу двигаться дальше.

Поиск файлов, которые надо удалить
Использование samba-tool
Теперь пришло время воспользоваться
samba-tool. Мы запустим это средство в интерактивном режиме, выполнив следующую команду: sudo samba-tool domain provision --use-rfc2307 --interactiveВыполнив команду с ключом
--use-rfc2307, мы включаем расширения NIS. Samba-tool предложит настроить следующие параметры: Realm. Это полное DNS-имя домена, которое настроено в файлеhosts. Например:SAMBADOM.EXAMPLE.NET.Domain. Доменное имя NetBIOS сервера Samba. Обратите внимание на то, что здесь рекомендуется использовать первую часть доменного имени DNS. Например,SAMBADOM.Server Role. Этот параметр предназначен для указания типа серверной роли. По умолчанию здесь установлено значениеdc, оно нас устроит.DNS backend. Этот параметр позволяет настроить DNS-сервер. Здесь так же оставляем параметр по умолчанию —SAMBA_INTERNAL.DNS forwarder IP address. Данный параметр позволяет указать IP-адрес DNS-сервера, на который будут перенаправлены запросы, которые не может разрешить сервер Samba. Если перенаправление DNS-запросов вам не нужно — ничего не вводите в ответ на данный вопрос. Подробнее об этом можно почитать здесь.Administrator password. Тут надо указать пароль администратора домена.
После того, как система получит ответы на интересующие её вопросы,
samba-tool настроит Samba как контроллер домена. Можете просмотреть файл /etc/samba/smb.conf и, если нужно, внести в него изменения. Прежде чем продолжать, позаботьтесь о регистрации пользователей в Samba. Этот шаг очень важен — иначе пользователям не удастся пройти аутентификацию. Делается это следующими командами:
ssmbpasswd -a USERNAME
smbpasswd -e USERNAMEЗдесь
USERNAME — имя существующего пользователя, которого надо добавить к Samba. Указать пароль нужно будет лишь после ввода первой команды. Вторая активирует пользователя.Настройка DNS-сервера
Нам надо, чтобы в качестве DNS-сервера на контроллере домена использовался он сам. Для того, чтобы это сделать, отредактируем файл
/etc/network/interfaces, приведя его к такому виду: auto INTERFACE_NAME
iface INTERFACE_NAME inet static
address IP_ADDRESS_FOR_SERVER
netmask NETMASK
gateway GATEWAY
dns-nameservers IP_ADDRESS_FOR_SERVERТут же имеются настройки использования сетевым интерфейсом статического IP-адреса. Обратите внимание на то, что всё, набранное ЗАГЛАВНЫМИ буквами, надо настроить в соответствии с параметрами вашей системы.
После выполнения настроек перезапустите сетевые сервисы такой командой:
sudo service networking restartКроме того, следует отредактировать файл
/etc/resolv.conf, внеся изменения, согласующиеся с теми, о которых было сказано выше. А именно, тут нас интересует следующая строка: nameserver IP_ADDRESS_FOR_SERVERЗдесь, вместо
IP_ADDRESS_FOR_SERVER, нужно ввести тот же адрес, который был записан в параметр dns-nameservers выше.Настройка Kerberos
У Kerberos имеется собственный стандартный конфигурационный файл, который нужно заменить файлом
krb5.conf, сгенерированным в ходе подготовки Samba к работе. Для того, чтобы это сделать, выполните следующие команды: sudo mv /etc/krb5.conf /etc/krb5.conf.orig
sudo ln -sf /var/lib/samba/private/krb5.conf /etc/krb5.confОбратите внимание на то, что вы можете столкнуться с отсутствием в системе файла
/etc/krb5.conf. Если это действительно так, достаточно будет выполнить только вторую из вышеприведённых команд.Тестируем и подключаемся
Самое сложное позади. Теперь всё готово к тому, чтобы протестировать только что созданный контроллер домена на Samba и подключиться к нему. Быстро проверить, всё ли работает, можно с помощью такой команды:
smbclient -L localhost -U%После ввода пароля пользователя Samba, вы должны увидеть сообщение об успешном подключении.

Успешное подключение
Как видите, при проверке smbclient выведены сведения о netlogon и sysvol как об общих ресурсах. Они созданы по умолчанию и должны существовать на контроллере домена. Кроме того, в /var/lib/samba/sysvol/REALM/scripts следует поместить любые скрипты входа в систему, которые понадобятся клиентам. Здесь REALM соответствует тому параметру REALM, который был задан в ходе работы с командой samba-tool.
Итоги
Теперь контроллер домена готов принимать подключения. Однако, может оказаться так, что вам придётся отредактировать файл
/etc/samba/smb.conf, внести в него данные, отражающие ваши требования к серверу. Этот файл, сгенерированный samba-tool, весьма лаконичен, хотя и является хорошей отправной точкой для тонкой настройки вашего AD DC, построенного на базе Samba и Ubuntu Server.Уважаемые читатели! А какие варианты взаимодействия экосистем Linux и Windows кажутся вам наиболее интересными и полезными?
