Установка и настройка MultiDirectory
Общая информация
В статье описывается установка и первоначальная настройка WEB-интерфейса службы каталогов MultiDirectory
.
Архитектура работы решения
- Архитектура с использованием СУБД в Docker
- Архитектура с использованием СУБД во внешнем кластере

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

Описание | |
---|---|
1 | Пользователи и сервисы, которые используют Kerberos для аутентификации. Подключаются к порту 88 для работы с Kerberos. |
2 | Пользователи взаимодействуют с системой через клиентов LDAP. Эти клиенты могут быть различными приложениями или устройствами, которые используют протокол LDAP для доступа к данным и сервисам в системе. |
3 | Администраторы системы используют web-приложение для управления и конфигурирования системы в web-интерфейсе. |
4 | Контейнеризация всех компонентов службы каталогов происходит при помощи Docker'a. |
5 | Traefik является обратным прокси-сервером, который маршрутизирует запросы от пользователей, администраторов и автоматизированных систем к соответствующим внутренним сервисам. Он обеспечивает балансировку нагрузки, безопасность и управление маршрутизацией. |
6 | Центр распределения ключей, который управляет аутентификацией по протоколу Kerberos. |
7 | MultiDirectory Admin API выполняет роль серверного компонента, который отвечает за обработку запросов от административного интерфейса и запросов от систем автоматизации. Этот компонент обеспечивает все необходимые функции для безопасного и эффективного управления данными LDAP через административный интерфейс. |
8 | Представляет компонент для загрузки веб интерфейса, который позволяет управлять службой каталогов, создавать пользователей, настраивать политики доступа и управлять учетными записями клиентов. |
9 | Административный сервис управления Kerberos сервером. |
10 | LDAP-сервер реализует протокол Lightweight Directory Access Protocol (LDAP), хранит и обрабатывает поступающие от пользователей запросы в каталоге данных. Он отвечает за идентификацию, аутентификацию и авторизацию пользователей, определяя права доступа на основе атрибутов и членства в группах.* * LDAP - сервер представляет собой 4 сервиса в виде отдельных контейнеров, обеспечивая большую производительность и отказоустойчивость - на схеме представлен в виде одного блока. |
11 | DNS-сервер для разрешения доменных имен. |
12 | PostgreSQL Cluster является системой управления базами данных. База данных хранит настройки конфигурации системы, данные службы каталогов, такие как информация о пользователях, группах, организационных единицах и т.д., а также другие важные данные.* * На данной схеме представлена в виде отдельной БД, которая подключается к MultiDirectory как внешний сервис. |
Требования для установки каталога
- Компонент устанавливается на Linux-сервер, протестирован на Ubuntu, Debian.
- Минимальные требования для сервера: 4 CPU, 10 GB RAM, 30 GB HDD.
- Необходимо зарегистрировать домен и сопоставить его с IP вашего сервера.
Необходим статический IP-адрес. Пример: ваш_домен.ru -> 255.255.255.255.
Для работы MultiDirectory
необходимо произвести установку Docker и Docker-Compose.
MultiDirectory используют следующие репозитории:
Описание контейнеров 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
- Установка в случае недоступности DockerHub
Создайте папку, в которой будет храниться MultiDirectory
.
Скачайте и сгенерируйте конфигурационный .env-файл
при помощи:
- Для Linux
- Для Windows
Файл конфигурации ./setup.sh
запустится автоматически, в него необходимо внести данные. После заполнения будет создан .env-файл
и службы будут готовы к развертыванию.
- Enter postgres user – введите пользователя Postgres, под которым будет осуществлятся подключение к вашей базе (если она есть). Если оставить незаполненным, будет установлен «user» (пользователь по умолчанию).
- Enter postgres database name – введите имя базы данных, к которой будет осуществляться подключение (если она есть). Если оставить незаполненным, будет установлена база «postgres» (по умолчанию).
- Enter postgres host – введите хост postgres. Если оставить не заполненным, будет использоваться хост «postgres» (по умолчанию).
- Enter postgres password – введите пароль postgres, при помощи которого будет осуществляться подключение к вашей базе. Если оставить незаполненным, пароль будет сгенерирован автоматически.
- Enter interface domain – введите домен интерфейса. Обращаем ваше внимание, что должен быть указан именно домен, в случае указания IP-адреса, web-интерфейс не запустится.
Запустите ./setup.bat
, затем следуйте инструкциям. После заполнения будет создан .env-файл
и службы будут готовы к развертыванию.
- 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 по умолчанию - продолжительность кэширования записи серверами и клиентами до её истечения. Значение измеряется в секундах.
- IP - адрес Вашего внешнего DNS сервера, который будет использоваться.
- TSIG Ключ - содержимое файла, которое было сгенерировано на внешнем DNS сервере.

После заполнения всех полей нажмите кнопку «Далее».
Настройка 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
будет осуществлен автоматичекси.
В случае, если вы выбрали настройку DNS и не использовали привязку к внешнему DNS-серверу, после завершения настройки MultiDirectory и входа в web-интерфейс - необходимо перезапустить службу bind9, выполнив:
Создайте папку, в которой будет храниться MultiDirectory
.
Скачайте и сгенерируйте конфигурационный .env файл при помощи:
- Для Linux
- Для Windows
Файл конфигурации ./setup.sh
запустится автоматически, в него необходимо внести данные.. После заполнения будет создан .env-файл
и службы будут готовы к развертыванию.
- Enter postgres user – введите пользователя Postgres, под которым будет осуществлятся подключение к вашей базе (если она есть). Если оставить незаполненным, будет установлен «user» (пользователь по умолчанию).
- Enter postgres database name – введите имя базы данных, к которой будет осуществляться подключение (если она есть). Если оставить незаполненным, будет установлена база «postgres» (по умолчанию).
- Enter postgres host – введите хост postgres. Если оставить не заполненным, будет использоваться хост «postgres» (по умолчанию).
- Enter postgres password – введите пароль postgres, при помощи которого будет осуществляться подключение к вашей базе. Если оставить незаполненным, пароль будет сгенерирован автоматически.
- Enter interface domain – введите домен интерфейса. Обращаем ваше внимание, что должен быть указан именно домен, в случае указания IP-адреса, web-интерфейс не запустится.
Запустите ./setup.bat
, затем следуйте инструкциям. После заполнения будет создан .env-файл
и службы будут готовы к развертыванию.
- Enter postgres user – введите пользователя Postgres, под которым будет осуществлятся подключение к вашей базе (если она есть). Если оставить незаполненным, будет установлен «user» (пользователь по умолчанию).
- Enter postgres database name – введите имя базы данных, к которой будет осуществляться подключение (если она есть). Если оставить незаполненным, будет установлена база «postgres» (по умолчанию).
- Enter postgres host – введите хост postgres. Если оставить не заполненным, будет использоваться хост «postgres» (по умолчанию).
- Enter postgres password – введите пароль postgres, при помощи которого будет осуществляться подключение к вашей базе. Если оставить незаполненным, пароль будет сгенерирован автоматически.
- Enter interface domain – введите домен интерфейса. Обращаем ваше внимание, что должен быть указан именно домен, в случае указания IP-адреса, web-интерфейс не запустится.
Скачайте *.tar-архивы
с нашего хранилища:
В нашем хранилище имеются весрии MultiDirectory
, выпускающиеся после версии V2.0.0.
Версии Potgres, Bind9 и Traefik поставляются в неизменной версии:
- Postgres - 16.
- Bind9 - 9.18-24.04_edge.
- Traefik - v2.6.
Для загрузки конкретной версии MultiDirectory
, вместо значка «*» укажите версию, пример:
Актуальные версии:
- multidirectory-v2.0.1;
- multidirectory-web-admin-v2.0.1;
- multidirectory_kerberos-v2.0.1.
Создайте Docker
-образы из ранее загруженных *.tar-архивов
использовав команду:
Запустите контейнеры Docker:
Настройка Web-интерфейса MultiDirectory
После успешной настройки и запуска сервисов Docker
– перейдите в браузер. В поисковую строку внесите домен, который ранее был указан при генерации .env-файла
.
Вы попадете в настройку WEB-интерфейса вашей MultiDirectory
.
Проверьте правильность написания домена, выберите необходимые вам настройки:
- Настроить DNS. Если стоит галочка, то настройка DNS будет произведена сразу же (настройку DNS можно произвести и позже в WEB-интерфейсе администратора).
- Настроить Kerberos. Если стоит галочка, то настройка керберос произойдет сразу же (настройку керберос можно произвести и позже из интерфейса администратор
MultiDirectory
). - Сгенерировать пароли для Kerberos. Если стоит галочка, то произойдет автоматическая генерация паролей для Kerberos. После настройки WEB-интерфейса сгенерированные пароли будут выгруженны в файл.
Нажмите кнопку «Далее».
Домен в данном поле заполняется автоматически из файла .env
.

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

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

После заполнения всех полей нажмите кнопку «Далее».
Настройка 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
будет осуществлен автоматичекси.
В случае, если вы выбрали настройку DNS и не использовали привязку к внешнему DNS-серверу, после завершения настройки MultiDirectory и входа в web-интерфейс - необходимо перезапустить службу bind9, выполнив:
Обновление MultiDirectory
Остановите запущенные контейнеры:
Удалите *.tar файлы со старыми версиями MultiDirectory
:
Скачайте контейнеры с обновленной версией с нашего хранилища:
Создайте Docker-образы из ранее загруженных .tar-архивов использовав команду:
Запустите контейнеры Docker:
Обновление 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".
О: Для решения данной ошибки необходимо выполнить один из пунктов:
- Добавить Swap-файл в папку MultiDIrectory, пример инструкции: https://dev.to/lovestaco/how-to-add-swap-space-on-linux-e28 ;
- Увеличить объем ОЗУ;
- Очистить память от сторонних процессов.
В: Я хочу добавить сертификат для ldaputil (только для letsencrypt), что для этого мне необходимо сделать?
О: Для решения данной проблемы выполните следующие шаги:
- Загрузите файл и выполните команду:
🔒 Войдите, чтобы просмотреть пример
- В файл ldap.conf добавтье строку:
🔒 Войдите, чтобы просмотреть пример