Назад к статьям

Контроллер домена на Ubuntu 18.04 — Ubuntu 18.04 AD-DC

AdminGuide ·
Контроллер домена на Ubuntu 18.04 — Ubuntu 18.04 AD-DC

Думаю если вы попали на эту страницу, значит тем или иным путем пришли к выводу о том, что необходимо настроить систему централизованного управления учетными записями в локальной сети вашего предприятия, скорее всего это контроллер домена на Ubuntu или Windows. У вас как обычно 3 основных пути для реализации своего плана:

  1. Выкинуть деньги на ветер
  2. Сесть за пиратство
  3. Использовать какое-либо решение на базе линукса

Если честно, есть еще 4-й вариант, и он очень даже неплох. Основывается он на Synology NAS, обладающих просто божественными возможностями даже в самых маленьких реализациях.

Но вернемся к нашим реалиям. Наш вариант номер 3. В деталях он выглядит примерно так:

  1. У нас в сети нет ни одного серверного решения Microsoft
  2. Мы не хотим появления в нашей сети пиратских серверных решений Microsoft
  3. В большинстве своем наша сеть состоит из машин с ОС Ubuntu Desktop, но есть и пара ноутбуков с вендами.
  4. У нас есть необходимость централизованного управления учётными записями
  5. У нас есть одно или несколько сетевых хранилищ и мы хотим управлять доступом к хранимой на них информации, предоставляя его через протоколы NFS и CIFS(smb). Сетевые хранилища могут быть реализованы как на голых ubuntu server, так на различных решениях типа FreeNAS, NAS4Free и тд, так и на покупных решениях, типа QNAP, Synology и тд.

Реализовывать контроллер домена на Ubuntu мы будем на хосте ESXi с примерно следующими характеристиками:

  1. CPU: 1 ядро на 2.2-2.8 GHz
  2. RAM: 2 Gb
  3. HDD: 1 hdd 32Gb
  4. Network: 1 Сетевая карта
  5. Имя сервера: ag-dc
  6. Имя домена: adminguide.lan

Что касается физической машины, то подойдет любая не сильно мощная машина. Но если там хотя бы 4‑х ядерный CPU и 4+ гига оперативной памяти, я рекомендовал бы запилить на неё бесплатный гипервизор ESXi и уже с его помощью полностью утилизировать имеющиеся мощности.

Поправка к инструкции: Везде в тексте инструкции, имя тестового samba домена изменено с adminguide.local на adminguide.lan. зона .local может вызывать глюки в виндовых сетях. Если вы видите на скриншоте adminguide.local, на самом деле там должно быть adminguide.lan

Устанавливаем Ubuntu Server 18.04 LTS amd64

Изменяем имя сервера на ag-dc

После изменения имени сервера в соответствии с инструкцией, перезагружаем сервер следующей командой:

bash
sudo reboot -h now

Проверяем имя сервера

После загрузки сервера, авторизовываемся и смотрим результат команды

hostnamectl

. Должно быть следующее:

Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - hostnamectl
Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - hostnamectl

Важно понимать, что после того, как вы настроите контроллер домена на Ubuntu, смена имени его сервера приведет к непредвиденным последствиям, поэтому не надо пытаться превратить свою тестовую попытку, в рабочее решение. После того как вы один или несколько раз инициализируете свой ad-dc и убедитесь в его работоспособности, удалите все свои достижения и уже только после этого выполняйте чистовую работу, полностью отдавая себе отчет в производимых действиях.

Настраиваем статический IP адрес

На данном этапе, пока у нас еще не стоит самба и не инициализирован домен, наши настройки будут следующими:

IP адрес и маска сети сервера: 192.168.1.100/24

Шлюз 192.168.1.1 (роутер в тестовой сети)

dns сервер 192.168.1.1 (роутер в тестовой сети). Переходим по ссылке и выполняем все по инструкции приводя настройки сети к следующему виду:

bash
            dhcp4: no
            dhcp6: no
            addresses: [192.168.1.100/24, ]
            gateway4: 192.168.1.1
            nameservers:
                    addresses: [192.168.1.1, ]
Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - Настройки сети
Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - Настройки сети

Вот как выглядит файл настроек на тестовом сервере:

Главным ДНС сервером на данный момент должен быть указан локальный роутер, или любой другой днс сервер, например 8.8.8.8, способный выполнять эти функции.

Отключаем systemd-resolved

Останавливаем сервис systemd-resolved

bash
sudo service systemd-resolved stop

Убираем systemd-resolved из автозапуска

bash
sudo systemctl disable systemd-resolved.service

Удаляем ссылку /etc/resolv.conf

bash
sudo rm /etc/resolv.conf

Открываем на редактирование файл /etc/resolv.conf

bash
sudo nano /etc/resolv.conf

По факту, на данный момент этого файла еще не существует, он будет создан при сохранении изменений.

Добавляем переадресацию на наш днс сервер и указываем search домен в resolv.conf .

bash
nameserver 192.168.1.1
search adminguide.lan
Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - Настройка resolv.conf
Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - Настройка resolv.conf

На данном этапе, nameserver должен указывать на тот же адрес, что и в пункте 3.1
В search указывается имя нашего будущего домена Active Directory.
Файл /etc/resolv.conf должен выглядеть следующим образом:

Сохраняем изменения нажав Ctrl+O

Настраиваем файл /etc/hosts

Одним из обязательных условий, является резолв имени нашего сервера, на его IP в локальной сети. Если сервер находится в сети 192.168.1.0/24 и его IP 192.168.1.100, то набирая на нем команду ping ag-dc или же ping ag-dc.adminguide.lan должен резолвиться адрес 192.168.1.100. Имя контроллера домена, не должно резолвиться на локальный адрес 127.0.0.1 или какой либо другой адрес, кроме того, что назначен сетевому интерфейсу который использует DC.

bash
sudo nano /etc/hosts

Приводим файл hosts к следующему виду:

Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - Настройка hosts
Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - Настройка hosts
bash
127.0.0.1       localhost.localdomain   localhost
192.168.1.100   ag-dc.adminguide.lan  ag-dc

Сохраняем с помощью команды

Ctrl+O

Проверяем что не запущено никаких самвобых процессов

Для этого понадобится следующая команда:

bash
ps ax | egrep "samba|smbd|nmbd|winbindd"
Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - Поиск процессов samba
Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - Поиск процессов samba

Если есть хоть один процесс и вы видите что-то типа этого:

таки возможно вы настраиваете AD-DC не на новом сервере или на сервере развернутом не из оригинального образа. Если вы решите на свой страх и риск продолжить установку, то вам необходимо убить все процессы с именами samba, smbd, nmbd, winbindd. Чтобы убить процесс, надо использовать команду sudo kill :

bash
sudo kill 3135

Устанавливаем Samba

На этом этапе так же важно знать, что после того как вы инициализируете контроллер домена на Ubuntu, вы не сможете изменить его название. Если вы называете свой домен ADMINGUIDE.LAN, он на веки вечные останется доменом ADMINGUIDE.LAN . Самба не поддерживает изменение имени домена. После его инициализации, чтобы изменить название, вам придется вывести из него все машины что вы успели зарегистрировать в нем, удалить старый домен, инициализировать новый и зарегистрировать машины повторно. Стоит ли говорить, что даже при 25 рабочих станциях — это уже проблема

Устанавливаем samba и все необходимые пакеты командой:

bash
sudo apt -y install samba krb5-config winbind smbclient krb5-user

Область по умолчанию для Kerberos версии 5

Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - Область по умолчанию для Kerberos версии 5
Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - Область по умолчанию для Kerberos версии 5

Указываем ADMINGUIDE.LAN

Серверы Kerberos для вашей области

Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - Серверы Kerberos для вашей области
Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - Серверы Kerberos для вашей области

Указываем ag-dc.adminguide.lan

Управляющий сервер вашей области Kerberos

Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - Управляющий сервер вашей области Kerberos
Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - Управляющий сервер вашей области Kerberos

Так же указываем ag-dc.adminguide.lan

Ожидаем окончание установки

Бэкапим стандартную конфигурацию Samba

bash
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.bkp

Инициируем контроллер домена на Ubuntu 18.04

Запускаем инициализацию в интерактивном режиме

Из своего домена, мы так же будем управлять пользователями и группами линуксовых машин. Поэтому нам нужно заранее включить поддержку NIS, с помощью команды —use-rfc2307

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

Включение поддержки NIS, не имеет никаких противопоказаний к применению, даже если ваш домен никогда не будет обслуживать линуксовые машины. В то же время, если инициализировать домен без поддержки NIS, и когда-нибудь в него войдут линуксовые машины и захочется управлять их учётками, расширять схему Active Directory и добавлять поддержку NIS, придётся уже ручками на свой страх и риск.

Указываем параметры домена

Если в процессе настройки не было допущено ошибок, все необходимые данные установщик поместит в квадратные скобки в виде стандартных значений:

bash
Realm [ADMINGUIDE.LAN]:
Domain [ADMINGUIDE]:
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) [192.168.1.1]:
Administrator password:
Retype password:

Когда установщик запросит пароль, рекомендую указать пароль понадежнее. Это будет пароль от учетной записи администратора домена.

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

Смотрим результаты инициализации

Следующие строки возвестят о том, что контроллер домена на Ubuntu успешно завершил инициализацию:

bash
A Kerberos configuration suitable for Samba AD has been generated at /var/lib/samba/private/krb5.conf
Setting up fake yp server settings
Once the above files are installed, your Samba AD server will be ready to use
Server Role:           active directory domain controller
Hostname:              ag-dc
NetBIOS Domain:        ADMINGUIDE
DNS Domain:            adminguide.lan
DOMAIN SID:            S-1-5-21-4033150357-3109693390-3173112578

Но радоваться еще слишком рано. Если вы видите нечто кардинально другое, значит вы допустили какую-то ошибку выше, либо прервали инициализацию запущенную ранее, либо инициализация вывалилась с ошибкой и сейчас вы пытаетесь инициализировать домен повторно. Если упереться рогом, можно вычистить все данные и записи сгенерированные в процессе инициализации и запустить её повторно. Это даже может привести к её успешному окончанию. НЕ ПЫТАЙТЕСЬ ЭТОГО ДЕЛАТЬ. Инициализируйте домен на новом чистом сервере. Если в процессе подготовки к инициализации, вы допустили косяк, и на момент запуска инициализации вы его не устранили и она завершилось ошибкой — просто удалите текущую инсталяцию сервера и начните сначала. Если вы настраиваете контроллер домена на виртуальной машине, сделайте снапшот выключенного сервера прежде чем приступать к пункту 7.1. В будущем в случае какого-то косяка на этапе инициализации, возвращайтесь к этому снапшоту и перепроверяйте всё \ исправляйте ошибки.

Настройка DC

Контроллер домена на Ubuntu, реализованный с помощью Samba сам автоматически запускает необходимые сервисы. Поэтому если они будут запущены не Samba DC, а например вручную пользователем, это может привести к необратимым последствиям и домен перестанет функционировать как должен. Поэтому на всякий случай, необходимо сделать эти сервисы недоступными для ручного запуска и отключить их автозапуск:

bash
sudo systemctl stop smbd nmbd winbind
sudo systemctl disable smbd nmbd winbind
sudo systemctl mask smbd nmbd winbind

Делаем samba-ad-dc доступным для запуска, включаем сервис и включаем его автозапуск

bash
sudo systemctl unmask samba-ad-dc
sudo systemctl start samba-ad-dc
sudo systemctl enable samba-ad-dc

Настройка DNS

Изменяем dns сервер в настройках сети на IP настраиваемого сервера. По факту он будет ссылаться на себя же как на днс сервер 192.168.1.100

Приводим настройки параметров сети к следующему виду:

bash
            dhcp4: no
            dhcp6: no
            addresses: [192.168.1.100/24, ]
            gateway4: 192.168.1.1
            nameservers:
                    addresses: [192.168.1.100, ]

Изменяем dns сервер в resolv.conf, так же указывая там IP своего сервера, приводя его к следующему виду:

bash
nameserver 192.168.1.100
search adminguide.lan

Настройка Kerberos

В процессе инициализации домена, создается файл krb5.conf, путь к нему указывается в последних строках отчета об успешной инициализации. Поэтому чтобы избежать ручной настройки файла /etc/krb5.conf, нам нужно заменить его только что сгенерированным.

bash
sudo cp /var/lib/samba/private/krb5.conf /etc/

Проверяем результаты своей работы

Смотрим все шары файл сервера DC

bash
smbclient -L localhost -U%

Они создаются в процессе инициализации домена и должны присутствовать для его правильного функционирования.

Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - DC Shares
Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - DC Shares

Контроллер домена на Ubuntu — Результат smbclient -L localhost -U%

Проверяем подключение к ним

Подключаемся к папке netlogon от имени администратора домена

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

Когда система запросит пароль, необходимо ввести пароль администратора домена, который мы указали при инициализации, в пункте 9.2

Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - Подключение к netlogon
Контроллер домена на Ubuntu — Результат smbclient //localhost/netlogon -UAdministrator -c ‘ls’

В случае успешной авторизации, вы без ошибок подключитесь к папке

Проверяем правильность настройки DNS

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

Смотрим SRV запись _ldap

bash
host -t SRV _ldap._tcp.adminguide.lan.

Смотрим SRV запись _kerberos

bash
host -t SRV _kerberos._udp.adminguide.lan.

Проверяем A запись контроллера домена

bash
host -t A ag-dc.adminguide.lan.
Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - DNS тесты
Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - DNS тесты

Контроллер домена на Ubuntu — Результаты проверки DNS

Проверяем работоспособность Kerberos

bash
kinit administrator

Смотрим кеш авторизационных тикетов Kerberos

bash
klist
Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - kinit & klist результат
Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - kinit & klist результат

Контроллер домена на Ubuntu — Результат kinit administrator и klist