Главная страница » Контроллер домена на Ubuntu 18.04 — Ubuntu 18.04 AD-DC

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

by Belfigor
1273 views
post_logo_Samba-Windows-Ubuntu

Думаю если вы попали на эту страницу, значит тем или иным путем пришли к выводу о том, что необходимо настроить систему централизованного управления учетными записями в локальной сети вашего предприятия, скорее всего это контроллер домена на 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.local

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

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

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

    1.  После изменения имени сервера в соответствии с инструкцией, перезагружаем сервер следующей командой:
      sudo reboot -h now
    2. Проверяем имя сервера
      После загрузки сервера, авторизовываемся и смотрим результат команды hostnamectl. Должно быть следующее:
      Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - hostnamectl
      Важно понимать, что после того, как вы настроите контроллер домена на Ubuntu, смена имени его сервера приведет к непредвиденным последствиям, поэтому не надо пытаться превратить свою тестовую попытку, в рабочее решение. После того как вы один или несколько раз инициализируете свой ad-dc и убедитесь в его работоспособности, удалите все свои достижения и уже только после этого выполняйте чистовую работу, полностью отдавая себе отчет в производимых действиях.
  3. Настраиваем статический IP адрес

    1. На данном этапе, пока у нас еще не стоит самба и не инициализирован домен, наши настройки будут следующими:
      IP адрес и маска сети сервера: 192.168.1.100/24
      Шлюз 192.168.1.1 (роутер в тестовой сети)
      dns сервер 192.168.1.1 (роутер в тестовой сети). Переходим по ссылке и выполняем все по инструкции приводя настройки сети к следующему виду:

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

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

    1. Останавливаем сервис systemd-resolved
      sudo service systemd-resolved stop
    2. Убираем systemd-resolved из автозапуска
      sudo systemctl disable systemd-resolved.service
    3. Удаляем ссылку /etc/resolv.conf
      sudo rm /etc/resolv.conf
    4. Открываем на редактирование файл /etc/resolv.conf
      sudo nano /etc/resolv.conf

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

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

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

    6. Сохраняем изменения нажав Ctrl+O
  5. Настраиваем файл /etc/hosts

    1. Одним из обязательных условий, является резолв имени нашего сервера, на его IP в локальной сети. Если сервер находится в сети 192.168.1.0/24 и его IP 192.168.1.100, то набирая на нем команду ping ag-dc или же ping ag-dc.adminguide.local должен резолвиться адрес 192.168.1.100. Имя контроллера домена, не должно резолвиться на локальный адрес 127.0.0.1 или какой либо другой адрес, кроме того, что назначен сетевому интерфейсу который использует DC.
      sudo nano /etc/hosts
    2. Приводим файл hosts к следующему виду:
      Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - Настройка hosts

      127.0.0.1       localhost.localdomain   localhost
      192.168.1.100   ag-dc.adminguide.local  ag-dc
    3. Сохраняем с помощью команды Ctrl+O
  6. Проверяем что не запущено никаких самвобых процессов

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

    ps ax | egrep "samba|smbd|nmbd|winbindd"

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

    sudo kill 3135
  7. Устанавливаем Samba

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

    1. Устанавливаем samba и все необходимые пакеты командой:
      sudo apt -y install samba krb5-config winbind smbclient krb5-user
    2. Область по умолчанию для Kerberos версии 5
      Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - Область по умолчанию для Kerberos версии 5

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

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

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

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

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

    5. Ожидаем окончание установки
  8. Бэкапим стандартную конфигурацию Samba

    sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.bkp
  9. Инициируем контроллер домена на Ubuntu 18.04

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

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

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

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

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

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

      Realm [ADMINGUIDE.LOCAL]:
       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:
      

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

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

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

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

      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.local
      DOMAIN SID:            S-1-5-21-4033150357-3109693390-3173112578
      

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

  10. Настройка DC

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

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

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

    sudo systemctl unmask samba-ad-dc
    sudo systemctl start samba-ad-dc
    sudo systemctl enable samba-ad-dc
  11. Настройка DNS

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

                  dhcp4: no
                  dhcp6: no
                  addresses: [192.168.1.100/24, ]
                  gateway4: 192.168.1.1
                  nameservers:
                          addresses: [192.168.1.100, ]
      
    2. Изменяем dns сервер в resolv.conf, так же указывая там IP своего сервера, приводя его к следующему виду:
      nameserver 192.168.1.100
      search adminguide.local
  12. Настройка Kerberos

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

    sudo cp /var/lib/samba/private/krb5.conf /etc/
  13. Проверяем результаты своей работы

    1. Смотрим все шары файл сервера DC
      smbclient -L localhost -U%

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

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

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

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

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

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

      Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - Подключение к netlogon

      Контроллер домена на Ubuntu — Результат smbclient //localhost/netlogon -UAdministrator -c ‘ls’

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

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

      1. Смотрим SRV запись _ldap
        host -t SRV _ldap._tcp.adminguide.local.
      2. Смотрим SRV запись _kerberos
        host -t SRV _kerberos._udp.adminguide.local.
      3. Проверяем A запись контроллера домена
        host -t A ag-dc.adminguide.local.
        Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - DNS тесты

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

    4. Проверяем работоспособность Kerberos
      kinit administrator
    5. Смотрим кеш авторизационных тикетов Kerberos
      klist
      Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - kinit & klist результат

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

  14. Полезные ссылки:

Text.ru - 100.00%

You may also like

23 комментария

Nick 29.10.2018 - 13:31

sudo apt -y install samba krb5-config winbind smbclient krb5-user
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Пакет krb5-user недоступен, но упомянут в списке зависимостей другого пакета.
Это может означать, что пакет отсутствует, устарел, или доступен из источников, не упомянутых в sources.list

E: Для пакета «krb5-user» не найден кандидат на установку

Reply
Belfigor 30.10.2018 - 15:11

Какая версия ОС?

Reply
Dmitrii 29.01.2019 - 14:28

Добавьте universe в /etc/apt/sources.list

Reply
Викулечка 13.12.2018 - 06:36

Вообще-то групповые политики умеет и давно. Вопрос другой, что синхронизировать она их с AD не может. Вот насчёт DAC не знаю, не пробовал. P.S. Недавно встал вопрос, что развернуть на домашнем сервере «обычный LDAP» в виде 3s или контроллер домена на самбе.

Reply
Belfigor 13.12.2018 - 10:40

Для дома LDAP я как-то поднимал на synology nas. Они и ldap и ad-dc (старшие модели) умеют поднимать.

Reply
Tim 11.01.2019 - 08:05

ERROR(): Provision failed — ProvisioningError: guess_names : ‘realm =’ was not specified in supplied /etc/samba/smb.conf. Please remove the smb.conf file and l et provision generate it
Вот такая вот загогулина появляется при попытке инициализировать домен.

Reply
Belfigor 08.02.2019 - 10:39

Оно явным текстом жалуется на параметр realm в smb.conf
Контроллер разворачивается не на чистой установке?

Reply
TIM 21.02.2019 - 10:35

я разобрался в чем была проблема, не внимательность. Спасибо за гайд)

Reply
Ajlex71 19.03.2019 - 13:12

Подскажите пожалуйста как добавлять пользователей в домен

Reply
Belfigor 25.03.2019 - 09:50

Для добавления пользователей в домен самый действенный способ — установить на машину Windows пакет RSAT и управлять доменом через стандартную оснастку. Так же можно добавлять пользователей через коммандную строку, но это пожалуй самый неудобный вариант.

Reply
User 20.09.2019 - 05:47

А как добавлять пользователей через командную строку на данном сервере?

Reply
Belfigor 20.09.2019 - 06:24

С помощью команды
sudo samba-tool user create smb_test_create
будет создан пользователь «smb_test_create» в папке Users каталога AD
Там еще огромный набор всевозможных параметров, ознакомиться с которым можно с помощью команды
samba-tool user create --help

Reply
s6gy0 02.04.2019 - 11:16

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

kinit administrator

Cannot find KDC for requested realm while getting initial credentials в чем проблема?

Reply
Belfigor 02.04.2019 - 11:32

А что показывает команда:
«host -t SRV _kerberos._udp.adminguide.local.»
?

Reply
23865@mail.ru 06.06.2019 - 17:16

Проверяем A запись контроллера домена
host -t A srv.kam.loc.
Выдаёт
srv.kam.loc has no A record

Как это поправить?

Reply
Belfigor 07.06.2019 - 09:24

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

Reply
bammbr 16.07.2019 - 07:20

«…вам необходимо убить все процессы с именами…»
А не проще ли просто
`systemctl stop smbd nmbd samba-ad-dc winbind`
или в этом роде?

Reply
Belfigor 10.09.2019 - 17:43

Безусловно, тоже вариант.

Reply
Александр 10.09.2019 - 15:49

Скажите, а при вводе в домен виндовой машины пользователи автоматически регистрируются?

Reply
Belfigor 10.09.2019 - 17:43

Возможно я не верно понял вопрос, но при вводе в домен вендовой машины, учетные записи имевшиеся в локальной рабочей группе — никак не влияют на домен. Это дает возможность авторизовываться на компьютере под доменными, имеющимися в домене учетными записями. А локальные, после ввода в домен я бы рекомендовал вообще отключить.

Reply
Constantine 16.09.2019 - 12:13

Столкнулся с несколькими проблемами:
1) После выполнения пункта 4 перестали подтягиваться пакеты из инета и, чтобы установить необходимые, пришлось включать systemd-resolved, а потом отключать.
2) После пункта 11 вообще пропал резолвинг — с обоими вариантами.
3) При выводе команды
smbclient //localhost/netlogon -UAdministrator -c ‘ls’
указал Workgroup как WORKGROUP, а не её отсутствие, как в примере. Но потом:
4) Команды kinit и klist не сработали. kinit пишет «Cannot contact any KDC for realm ‘DOM.LOCAL’ while getting credentials»
Всё делал по инструкции. Что не так?

Reply
Belfigor 17.09.2019 - 07:13

Какая версия Ubuntu Server? Могу для начала порекомендовать создать домен в зоне не LOCAL, а LAN. В руководстве в будущем тоже изменю в примерах везде local на lan

Reply
Denis26 16.10.2019 - 15:41

При подключении к домену виндовой машины лезет ошибка: «Не удалось выполнить операцию присоединения. Это может быть вызвано тем, что существующая учетная запись компьютера с именем test была изначально создана с использованием других учетных данных. Либо используйте другое имя компьютера, либо попросите администратора удалить устаревшие конфликтующие учетные записи.» Перед этим на домене был создан пользователь командой: sudo samba-tool user create smb_test_create

Reply

Leave a Comment