Контроллер домена на 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.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%

Related

PostgreSQL 10 FATAL: could not access file "online_analyze" - Ничего не предвещало беды да? Всё шло своим чередом, сервер PostgreSQL 10 для 1C работал в штатном режиме, бухгалтера стадами набигали на 1Сные сервера, делали свои грязные дела, а жалоб никаких не было?. И вот ты уже сидишь обтекая потом гуглишь что. Continue reading

Таки уже больше чем пол года прошло с того момента как 1C научилась из коробки работать с PostgreSQL 10, да и вышла Ubuntu 18.04. Значит пришла пора обновить статью Установка PostgreSQL 9.6 для 1C на Ubuntu 16.04 и речь у нас пойдет о том, что установка PostgreSQL 10 для 1С на Ubuntu 18.04 хоть и имеет несколько. Continue reading

Админите линуксовые сервера с мастдая? Дело достаточно распространенное ибо должен же админ хоть иногда играть в какие-нибудь игрушки, а что для этого подходит лучше чем мастдай? Ничего абсолютно :). Но вернемся к насущному вопросу. Как удобнее всего перемещать файлы на. Continue reading

Время - краеугольный камень всех "этих их интернетов". Контроллер домена на Ubuntu 18.04 - не исключение. Если в вашей локальной сети, различие во времени между контроллером и устройствами, превышает 5 минут, у вас проблемы. AD использует время для разрешения конфликтов репликации.. Continue reading

JOIN THE DISCUSSION

Comments

  • Nick 29.10.2018 at 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 at 15:11

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

      Reply
    • Dmitrii 29.01.2019 at 14:28

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

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

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

    Reply
    • Belfigor 13.12.2018 at 10:40

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

      Reply
  • Tim 11.01.2019 at 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 at 10:39

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

      Reply
      • TIM 21.02.2019 at 10:35

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

        Reply
  • Ajlex71 19.03.2019 at 13:12

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

    Reply
    • Belfigor 25.03.2019 at 09:50

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

      Reply
  • s6gy0 02.04.2019 at 11:16

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

    kinit administrator

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

    Reply
    • Belfigor 02.04.2019 at 11:32

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

      Reply