Top.Mail.Ru
Перейти к основному содержимому

Установка и настройка MultiDirectory

Общая информация

В статье описывается установка и первоначальная настройка WEB-интерфейса службы каталогов MultiDirectory.

Архитектура работы решения

Описание
1Пользователи и сервисы, которые используют Kerberos для аутентификации. Подключаются к порту 88 для работы с Kerberos.
2Пользователи взаимодействуют с системой через клиентов LDAP. Эти клиенты могут быть различными приложениями или устройствами, которые используют протокол LDAP для доступа к данным и сервисам в системе.
3Администраторы системы используют web-приложение для управления и конфигурирования системы в web-интерфейсе.
4Контейнеризация всех компонентов службы каталогов происходит при помощи Docker'a.
5Traefik является обратным прокси-сервером, который маршрутизирует запросы от пользователей, администраторов и автоматизированных систем к соответствующим внутренним сервисам. Он обеспечивает балансировку нагрузки, безопасность и управление маршрутизацией.
6Центр распределения ключей, который управляет аутентификацией по протоколу Kerberos.
7MultiDirectory Admin API выполняет роль серверного компонента, который отвечает за обработку запросов от административного интерфейса и запросов от систем автоматизации. Этот компонент обеспечивает все необходимые функции для безопасного и эффективного управления данными LDAP через административный интерфейс.
8Представляет компонент для загрузки веб интерфейса, который позволяет управлять службой каталогов, создавать пользователей, настраивать политики доступа и управлять учетными записями клиентов.
9Административный сервис управления Kerberos сервером.
10LDAP-сервер реализует протокол Lightweight Directory Access Protocol (LDAP), хранит и обрабатывает поступающие от пользователей запросы в каталоге данных. Он отвечает за идентификацию, аутентификацию и авторизацию пользователей, определяя права доступа на основе атрибутов и членства в группах.*
* LDAP - сервер представляет собой 4 сервиса в виде отдельных контейнеров, обеспечивая большую производительность и отказоустойчивость - на схеме представлен в виде одного блока.
11DNS-сервер для разрешения доменных имен.
12PostgreSQL является системой управления базами данных. База данных MultiDirectory хранит настройки конфигурации системы, данные службы каталогов, такие как информация о пользователях, группах, организационных единицах и т.д., а также другие важные данные.

Требования для установки каталога

  • Компонент устанавливается на Linux-сервер, протестирован на Ubuntu, Debian.
  • Минимальные требования для сервера: 4 CPU, 10 GB RAM, 30 GB HDD.
  • Необходимо зарегистрировать домен и сопоставить его с IP вашего сервера.
Важно

Необходим статический IP-адрес. Пример: ваш_домен.ru -> 255.255.255.255.

Для работы MultiDirectory необходимо произвести установку Docker и Docker-Compose.

MultiDirectory используют следующие репозитории:

Обратите внимание

Все сервисы работают при помощи Traefik, используя Postgres в качестве базы данных. Другие СУБД несовместимы.

Описание контейнеров MultiDirectory

Имя контейнераОписание
multidirectory_apiКонтейнер с веб-api.
multidirectory-ldap_server-*Контейнер с LDAP.
MD-postgresКонтейнер с СУБД PostgreSQL.
multidirectory_interfaceКонтейнер с веб интерфейсом.
traefikКонтейнер, отвечающий за балансировку нагрузки, безопасности и управляет маршрутизацией запросов от пользователей,администраторов и автоматизированных систем.
multidirectory_migrationsКонтейнер, отвечающий за миграцию данных.
multidirectory_certs_checkКонтейнер, отвечающий за проверку сертификатов.
kadminКонтейнер, отвечающий за управление базы данных Kerberos.
kdcКонтейнер с сервером аутентификации Kerberos.
kadmin_apiКонтейнер с API для администрирования Kerberos.
bind9Контейнер с DNS.
shadow_apiСкрытое API, которое недоступно извне.
dragonflyКонтейнер, отвечающий за распределенное кэширование и хранение артефактов.
md_maintanceКонтейнер, выполняющий периодические задания.

Работа с паролями для учетных записей

С MultiDirectory работают два вида второго фактора:

  • Push-уведомления.
  • OTP-токен.

Когда срабатывают Push и OTP

Push-уведомление

Срабатывает в том случае, если:

  • в конце пароля отсутствуют цифры.
  • последним символом пароля является буква или спецсимвол.
  • в конце пароля есть цифры, но их количество меньше 6.

OTP-токен

Срабатывает в том случае, если:

  • в пароле для учетной записи последние 6 или более символов – цифры (в случае если в конце пароля стоит более 6 цифр – в OTP будут использоваться последние шесть).

Видеоинструкция по установке и настройке MultiDirectory

Создайте папку, в которой будет храниться MultiDirectory.

🔒 Войдите, чтобы просмотреть пример

Скачайте и сгенерируйте конфигурационный .env-файл при помощи:

🔒 Войдите, чтобы просмотреть пример

Файл конфигурации ./setup.sh запустится автоматически, в него необходимо внести данные. После заполнения будет создан .env-файл и службы будут готовы к развертыванию.


Расшифровка значения полей в файле setup.sh
  • Enter postgres user – введите пользователя Postgres, под которым будет осуществлятся подключение к вашей базе (если она есть). Если оставить незаполненным, будет установлен «user» (пользователь по умолчанию).
  • Enter postgres database name – введите имя базы данных, к которой будет осуществляться подключение (если она есть). Если оставить незаполненным, будет установлена база «postgres» (по умолчанию).
  • Enter postgres host – введите хост postgres. Если оставить не заполненным, будет использоваться хост «postgres» (по умолчанию).
  • Enter postgres password – введите пароль postgres, при помощи которого будет осуществляться подключение к вашей базе. Если оставить незаполненным, пароль будет сгенерирован автоматически.
  • Enter interface domain – введите домен интерфейса. Обращаем ваше внимание, что должен быть указан именно домен, в случае указания IP-адреса, web-интерфейс не запустится.

Запустите сервисы при помощи команды:

🔒 Войдите, чтобы просмотреть пример

Настройка Web-интерфейса MultiDirectory

После успешной настройки и запуска сервисов Docker – перейдите в браузер. В поисковую строку внесите домен, который ранее был указан при генерации .env-файла

Вы попадете в настройку WEB-интерфейса вашей MultiDirectory.


Проверьте правильность написания домена, выберите необходимые вам настройки:

  • Настроить DNS. Если стоит галочка, то настройка DNS будет произведена сразу же (настройку DNS можно произвести и позже в WEB-интерфейсе администратора).
  • Настроить Kerberos. Если стоит галочка, то настройка керберос произойдет сразу же (настройку керберос можно произвести и позже из интерфейса администратор MultiDirectory).
  • Сгенерировать пароли для Kerberos. Если стоит галочка, то произойдет автоматическая генерация паролей для Kerberos. После настройки WEB-интерфейса сгенерированные пароли будут выгруженны в файл.

Нажмите кнопку «Далее». 

Примечание!

Домен в данном поле заполняется автоматически из файла .env.


Настройка DNS

Если был выбран пункт «Настроить DNS» откроется мастер настройки DNS, все поля будут заполнены:


Обозначение полей
  • Имя зоны - по умолчанию заполняется автоматически именем используемого домена. Можно переименовать. Данное именя нельзя будет сменить в дальнейшем.
  • Домен - по умолчанию заполняется автоматически из файла .env.
  • TTL по умолчанию - продолжительность кэширования записи серверами и клиентами до её истечения. Значение измеряется в секундах.
Если был выбран пункт «Привязать к внешнему DNS серверу»
  • IP - адрес Вашего внешнего DNS сервера, который будет использоваться.
  • TSIG Ключ - содержимое файла, которое было сгенерировано на внешнем DNS сервере.

После заполнения всех полей нажмите кнопку «Далее».


Настройка Kerberos

Если НЕ была выбрана автоматическая генерация паролей для Kerberos

Если вы сняли галочку с пункта «Сгенерировать пароли для Kerberos автоматически», появится окно, в которое необходимо будет внести пароли для krbadmin и стэша.

  • Krbadmin - это служебная учетная запись сервера Kerberos. Она используется для взаимодействия с сервером LDAP. Данная учетная запись ограничена полномочиями и может управлять только своей выделенной областью в дереве LDAP.
  • Пароль stash, используется для защиты мастер ключа шифрования базы данных Kerberos. Вы можете выгрузить внесенные вами пароли в файл.

Требование к паролям:

  • Пароли должны быть более 7 символов;
  • Пароли не должны быть одинаковыми у krbadmin и стэша (они должны отличаться друг от друга);
  • Пароли должны содержать заглавные и строчные буквы (A-Z и a-z) и цифры (0-9).

После внесния паролей нажмите кнопку «Далее».

Внесите данные администратора, под которыми будет осуществлен первоначальный вход.


Требование к паролям:

  • Пароли должны быть более 7 символов;
  • Пароли должны содержать заглавные и строчные буквы (A-Z и a-z) и цифры (0-9).

Для продолжения нажмите кнопку «Далее». 


В появившемся окне проверьте правильность созданной учетной записи администратора:

  • UPN. 
  • Отображаемое имя. 
  • Email. 

Нажмите кнопку «Далее». 


Создание учетной записи администратора завершено. Вход в WEB-интерфейс MultiDirectory будет осуществлен автоматичекси.


Перезагрузка сервиса Bind9

В случае, если вы выбрали настройку DNS и не использовали привязку к внешнему DNS-серверу, после завершения настройки MultiDirectory и входа в web-интерфейс - необходимо перезапустить службу bind9, выполнив:

🔒 Войдите, чтобы просмотреть пример

Обновление MultiDirectory

Чтобы обновить вашу MultiDirectory, ипользуйте следующие шаги:

Для Linux

Скачайте файлы docker-compose.yml и traefik.yml

🔒 Войдите, чтобы просмотреть пример

Перезапустите контейнеры:

🔒 Войдите, чтобы просмотреть пример

Для Windows

Скачайте файлы docker-compose.yml и traefik.yml

🔒 Войдите, чтобы просмотреть пример

Перезапустите контейнеры:

🔒 Войдите, чтобы просмотреть пример

Проверка логирования сервисов и контейнеров

Расширенное логирование

Если вы хотите,чтобы логи передавались в расширеном формате, то в файле .env укажите формат логирования:

🔒 Войдите, чтобы просмотреть пример

После добавления расширенного логирования перезагрузите сервисы командой:

🔒 Войдите, чтобы просмотреть пример

Проверка логирования контейнеров

Просматривать логи контейнеров вы можете обращаясь к контейнеру по его имени, или же по ID. Для просмотра имен и ID контейнеров воспользуйтесь командой:

🔒 Войдите, чтобы просмотреть пример

Для просмотра логов по имени контейнера в реальном времени используйте команду:

🔒 Войдите, чтобы просмотреть пример

Для просмотра логов по ID контейнера в реальном времени используйте команду:

🔒 Войдите, чтобы просмотреть пример

Просмотр файлов логирования MultiDirectory

Файлы логирования MultiDirectory располагаются в каталоге /MultiDirectory/logs. Записываются 4 вида файлов логирования в следующем формате:

  • admin_dd-mm-yyyy.log - в данный файл ведется логирование действий в WEB-интерфейсе администратора.
  • kadmin_dd-mm-yyyy.log - в данный файл ведется логирование Kerberos (если он ранее был настроен).
  • ldap_dd-mm-yyyy.log - в данный файл ведется логирование действий по протоколам ldap и ldaps.
  • mfa_dd-mm-yyyy.log - в данный файл ведется логирование двухфакторной аутентификации (если ранее она была настроена).

Для просмотра файла логирования вы можете использовать команду:

🔒 Войдите, чтобы просмотреть пример

Проверка версии MultiDirectory

Проверка версии в web-интерфейсе

Для проверки версии в web-интерфейсе нажмите на значек шестеренки и выберите пункт «Настройка MultiDirectory».


В открывшемся окне выберите пункт «О программе».

Проверка версии на сервере

Для проверки версии MultiDirectory в контейнере Docker используйте команду:

🔒 Войдите, чтобы просмотреть пример

Проверка версии при помощи API

Для проверки версии MultiDirectory через API перейдите по ссылке https://your-domain.ru/api/docs

примечание

Замените «your-domain.ru» на имя вашего домена.

Вопросы и ответы

В: Я хочу чтобы MultiDirectoy работала с моим сертификатом, что мне для этого нужно сделать?
О: Для добавления самоподписанных сертификатов выполните следующие действия:

  • В файле traefik.yml закомментируйте следующие строки:
    🔒 Войдите, чтобы просмотреть пример

    P.S.: названия сертификатов обязательно должны быть:
    • privkey.pem
    • cert.pem

В: Как обновить сертификаты Kerberos?

О: 1. Удалите старые сертификаты krbcert.pem и krbkey.pem в папке ../MultiDirectory/certs/.
2. Перезагрузите Вашу Multidirectory коммандой:

🔒 Войдите, чтобы просмотреть пример

В: Контейнеры multidirectory-ldap-server-* не запускаются. В статусе висит «Error». Если вывожу лог с данного контейнера, то вижу следующую ошибку:

🔒 Войдите, чтобы просмотреть пример

О: У Вас возникла проблема с генерацией сертификата. Для ее устранения выполните следущие шаги:

  • Перейдите в папку ../MultiDirectorty/
  • Выполните скрипт по генерации сертификата (замените поле «your-domain.ru» на имя вашего домена):
🔒 Войдите, чтобы просмотреть пример

В: При запуске, один из контейнеров возвращает мне ошибку "137".
О: Для решения данной ошибки необходимо выполнить один из пунктов:

В: Я хочу добавить сертификат для ldaputil (только для letsencrypt), что для этого мне необходимо сделать?
О: Для решения данной проблемы выполните следующие шаги:

  • Загрузите файл и выполните команду:
    🔒 Войдите, чтобы просмотреть пример

  • В файл ldap.conf добавтье строку:
    🔒 Войдите, чтобы просмотреть пример