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

Как быть, если и контроллер домена нужен, и сэкономить хочется? Сегодня мы представим вашему вниманию один из ответов на этот вопрос. Речь пойдёт о пакете Samba, об Ubuntu Server, и о том, как всё это быстро и правильно настроить.
4d020db14fbf43319cde0eefa8f6e988.png

С помощью 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"

На рисунке ниже показаны результаты исполнения этих команд, которыми можно будет воспользоваться для того, чтобы удалить ненужные файлы. Если же подобные файлы в системе не существуют — можно сразу двигаться дальше.

9e3b044d9ae224112152676ef568d611.jpg
Поиск файлов, которые надо удалить

Использование 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, вы должны увидеть сообщение об успешном подключении.

55cc4821e1b44cdc97645b21e5d4e2fc.jpg
Успешное подключение

Как видите, при проверке 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 кажутся вам наиболее интересными и полезными?

Комментарии (0)

© Habrahabr.ru