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

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

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


  1. intit
    14.03.2017 12:23

    Ох уж этот Ubuntu Server ))
    Превращал его в сервер облачного видео, обрабатывающих более 100 видеопотоков по rtsp на ооочень слабенькой машинке, ведёт себя крайне стабильно и шустро ))


  1. Dark_kot
    14.03.2017 12:48
    +1

    Чем больше я работаю, тем больше утверждаюсь в мысли, что там, где не выделяют деньги на контроллер домена, он и не нужен на самом деле.


    1. foxmuldercp
      14.03.2017 17:53
      +2

      Скорее админ не может обосновать зачем оно надо. Потому что для централизованной аутентификации и авторизации — вообще можно обойтись обычным LDAP.
      Но никакая самба до сих пор не умеет групповые политики, и DAC.
      А про "уровень NT4" в 2017м году слышать даже не смешно, учитывая что Samba помнится умеет уровень 2003 больше 5 лет.


      Более того. еще под 6ю фрю в 2007 чтоли году я разворачивал почту, астериск, сквид, вебинтерфейсы к этому всему прекрасно интегрированные не только с AD, но и с его группами.
      Когда легкой сменой списка групп нашим администратором AD, у пользователя "заканчивалась" почта и уровень доступа к интернету на проксе понижался до "Играть хорошо, а работать кто будет?"


      1. StraNNicK
        14.03.2017 20:18

        Вообще-то групповые политики умеет и давно. Вопрос другой, что синхронизировать она их с AD не может.
        Вот насчёт DAC не знаю, не пробовал.

        P.S. Недавно встал вопрос, что развернуть на домашнем сервере «обычный LDAP» в виде 389ds или контроллер домена на самбе.


      1. LeoSunny
        14.03.2017 20:34

        Сведения устаревшие, уже 2008 R2 DC. Групповые политики и DAC в Samba уже есть. Пока в зачаточном состоянии, но есть. Посмотрите дорожную карту, планы очень интересные.


      1. Dark_kot
        15.03.2017 04:00

        Правильный вопрос — не не может обосновать, а нечего обосновывать. У меня 5 контор в обслуживании на аутсорсе. И им, на самом-то деле не нужно ничего. От слова совсем. Даже просто файловый сервер под вопросом(пара и них вполне успешно хранят файлы в бесплатных облаках) Единственное, что нужно на самом деле — это бэкапы на случай грозного криптолокера, просочившегося через антивирус. Иногда разграничения по доступу, но городить для 5-10 человек домен вовсе не обязательно. А те, кому нужно что-то в групповых политиках менять — это либо более-менее серьёзные организации со сложной структурой(а у них уже есть деньги на закупку ПО), либо студенты после вуза, так и не понявшие, что никому в конторе кроме них это не надо.


  1. ls1
    14.03.2017 19:44

    сможет работать как контроллер домена Windows NT4

    Есть же samba4 из которой можно нормальное AD построить


  1. LeoSunny
    14.03.2017 20:40

    Используя в качестве DNS backend параметр SAMBA_INTERNAL получите проблему синхронизации с DHCP и обратной зоной DNS.
    Лучше указать параметр BIND9_DLZ и потратить время на настройку BIND9.


  1. timteka
    14.03.2017 20:55
    +1

    PDC? Завязывайте уже с этим делом. В современной AD все контроллеры равнозначны. Нет больше ни праймари, ни секондари.


    1. foxmuldercp
      14.03.2017 21:16
      -2

      Ну да, ну да. а теперь открываем технет и идем уучить матчасть:


      Operations Masters
      Domain controllers that hold operations master roles are designated to perform specific tasks to ensure consistency and to eliminate the potential for conflicting entries in the Active Directory database. AD DS defines five operations master roles: the schema master, domain naming master, relative identifier (RID) master, primary domain controller (PDC) emulator, and infrastructure master.
      The following operations masters perform operations that must occur on only one domain controller in the forest:


      • Schema master
      • Domain naming master

      The following operations masters perform operations that must occur on only one domain controller in a domain:
      Primary Domain Controller (PDC) emulator


      • Infrastructure master
      • Relative ID (RID) master


      1. timteka
        14.03.2017 21:55
        +3

        Очевидно, вы не смогли перевести ремарку «obsolete» над текстом, который процитировали?
        RTFM: Active Directory Domain Services Overview


  1. Mistique666
    15.03.2017 09:45

    FSMO роли накой тащите то?
    PDC эмулятор только.
    Если у вас оно отвалится вы спокойно перетянете роли и будете дальше жить RID, Schema вообще крайне редко пользуются


  1. barinov20000
    15.03.2017 09:45
    -1

    AD можно заменить на JumpCloud, оно посовременнее