- Начало работы
- Интеграция
- HTTP API
- Single Sign-On
- OpenID Connect
- RADIUS адаптер
- LDAP адаптер
- Портал самообслуживания
- MULTIFACTOR Directory Sync
- Windows Logon
- Регистрация пользователей
- .NET Core
- 1с-Bitrix24
- 1с-плагин двухфакторной аутентификации
- 1С:Предприятие с системой единого входа на базе OIDC
- ADFS
- ASP.NET
- Ansible AWX
- Atlassian Cloud
- BearPass
- BI.ZONE ZTNA
- Check Point VPN
- Cisco ASA VPN
- Citrix Gateway
- Deckhouse Stronghold
- Exchange ActiveSync
- FortiGate VPN
- HRBOX
- Huawei Cloud
- Huawei VPN
- Ideco
- Infrascope
- Grafana
- Keycloak
- Let's Encrypt Windows Server
- Linux logon (GUI/SSH)
- Linux SSH
- Linux SUDO
- Microsoft Entra ID
- MikroTik L2TP VPN
- NGate VPN
- Network Policy Server (NPS)
- Nextcloud
- OpenVPN
- OpenVPN + AD
- OpenVPN Access Server
- OpenVPN pfSense
- Outlook Web Access (OWA)
- Palo Alto GlobalProtect
- Passwork
- RD Gateway (RDGW)
- RdWeb
- Redmine
- Starvault
- Solar SafeInspect
- UserGate VPN
- VMware Horizon Cloud
- VMware Horizon View
- VMware vCloud Director
- VMware vSphere
- Vault
- ViPNET
- Windows VPN
- WordPress
- Yandex.Cloud
- Yandex 360
- Zabbix
- АйТи-Бастион
- Континент 4 VPN
- Кибер Бэкап
- МТС Линк
- С-Терра VPN
- Точка доступа Wi-Fi
- ФПСУ-IP/Клиент
- Пользовательское соглашение об использовании программного обеспечения «МУЛЬТИФАКТОР»
- Политика в отношении обработки персональных данных при использовании сайта https://multifactor.ru/
- Пользовательское соглашение об использовании мобильного приложения «MULTIFACTOR»
- Политика в отношении обработки персональных данных
- Согласие на обработку персональных данных пользователей сайта https://multifactor.ru/
- Лицензионное соглашение
- Политика оплаты
- Результаты проведения специальной оценки условий труда (СОУТ)
Ldap proxy сервер для Linux
MULTIFACTOR Ldap Adapter — программный компонент, LDAP proxy сервер для Linux.
Компонент доступен вместе с исходным кодом, распространяется бесплатно. Актуальная версия находится на GitHub (архив release_linux_x64.zip):
Лицензия
Обратите внимание на лицензию. Она не даёт вам право вносить изменения в исходный код Компонента и создавать производные продукты на его основе. Исходный код предоставляется в ознакомительных целях.
Поддержка реализаций LDAP
Адаптер протестирован со следующими реализации каталогов:
- ActiveDirectory;
- Samba4;
- FreeIPA.
Требования для установки компонента
- Компонент устанавливается на Linux сервер, протестирован на CentOS, RHEL, Ubuntu, Debian, Astra Linux, REDOS;
- Минимальные требования для сервера: 1 CPU, 2 GB RAM, 8 GB HDD (обеспечивают работу ОС и адаптера для 100 одновременных подключений — примерно 1500 пользователей);
- На сервере должны быть открыты TCP порты 389 (LDAP) и 636 (LDAPS) для приёма запросов от клиентов;
- Серверу с установленным компонентом необходим доступ к хосту api.multifactor.ru по TCP порту 443 (TLS) напрямую или через HTTP proxy;
- Для взаимодействия с Active Directory, компоненту нужен доступ к серверу домена по TCP порту 389 (LDAP) или 636 (LDAPS);
Установка
Установка библиотек
С версии компонента 3.0.3 используется среда выполнения ASP.NET Core runtime версии 8, которая является бесплатной, открытой, разрабатывается компанией Microsoft и Open-Source сообществом. Среда выполнения не накладывает никаких ограничений на использование.
Если ваша ОС не поддерживает ASP.NET Core runtime версии 8, вам нужно будет использовать версию компонента 2.0.27 и использовать ASP.NET Core runtime версии 6.0, в остальном установка не отличается.
Для установки на Debian 12, Ubuntu 22.04/24.04, Astra1.8 выполните команды:
wget https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
Установите среду выполнения .NET 8
sudo apt-get update && sudo apt-get install -y aspnetcore-runtime-8.0
Установка библиотек liblber и libldap
sudo apt install libldap-2.5-0
Для установки на CentOS Stream 9
sudo dnf update -y sudo dnf upgrade -y sudo dnf install -y dotnet-runtime-8.0
Для установки на CentOS Stream 8
sudo rpm -Uvh https://packages.microsoft.com/config/centos/8/packages-microsoft-prod.rpm sudo dnf install -y dotnet-runtime-8.0
Для установки на RHEL 8 и 9
sudo dnf install -y dotnet-sdk-8.0
Если команда выше не сработала, добавьте репозиторий вручную:
sudo dnf install -y wget sudo wget https://packages.microsoft.com/config/rhel/8/packages-microsoft-prod.rpm sudo rpm -Uvh packages-microsoft-prod.rpm sudo dnf install -y dotnet-sdk-8.0
Для установки на РЕД ОС 8
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/8/packages-microsoft-prod.rpm sudo dnf update -y sudo dnf install -y dotnet-runtime-8.0
Если при запуске программ возникает ошибка:
Unable to load shared library 'ldap.so.2' or one of its dependencies
То это означает, что системе не хватает симлинков для корректного поиска библиотек.
Проверка наличия библиотек
ls -la /usr/lib/x86_64-linux-gnu | grep libldap ls -la /usr/lib/x86_64-linux-gnu | grep liblber
Вывод покажет, какие версии библиотек установлены и как они ссылаются друг на друга.
Если в системе не хватает симлинка libldap.so.2, создадим его:
sudo ln -s /usr/lib/x86_64-linux-gnu/libldap-2.5.so.2 /usr/lib/x86_64-linux-gnu/libldap.so.2
Аналогично для liblber:
sudo ln -s /usr/lib/x86_64-linux-gnu/liblber-2.5.so.2 /usr/lib/x86_64-linux-gnu/liblber.so.2
В CentOS или RedHat-подобных дистрибутивах библиотеки обычно находятся в /usr/lib64/, поэтому команды будут такими:
sudo ln -s /usr/lib64/libldap-2.5.so.2 /usr/lib64/libldap.so.2 sudo ln -s /usr/lib64/liblber-2.5.so.2 /usr/lib64/liblber.so.2
Установка компонента
Создайте папку, скачайте и распакуйте актуальную версию компонента из GitHub:
sudo mkdir /opt/multifactor /opt/multifactor/ldap /opt/multifactor/ldap/tls /opt/multifactor/ldap/logs sudo wget https://github.com/MultifactorLab/multifactor-ldap-adapter/releases/latest/download/release_linux_x64.zip sudo unzip release_linux_x64.zip -d /opt/multifactor/ldap
Создайте системного пользователя mfa и дайте ему права на приложение:
sudo useradd -r mfa sudo chown -R mfa: /opt/multifactor/ldap/ sudo chmod -R 700 /opt/multifactor/ldap/
Создайте файл службы systemd:
sudo nano /etc/systemd/system/multifactor-ldap.service
Включите автозапуск:
[Unit] Description=Multifactor Ldap Adapter [Service] WorkingDirectory=/opt/multifactor/ldap/ ExecStart=/usr/bin/dotnet /opt/multifactor/ldap/multifactor-ldap-adapter.dll Restart=always # Restart service after 10 seconds if the service crashes: RestartSec=10 KillSignal=SIGINT SyslogIdentifier=multifactor-ldap User=mfa Environment=ASPNETCORE_ENVIRONMENT=Production Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false # How many seconds to wait for the app to shut down after it receives the initial interrupt signal. # If the app doesn't shut down in this period, SIGKILL is issued to terminate the app. # The default timeout for most distributions is 90 seconds. TimeoutStopSec=30 # give the executed process the CAP_NET_BIND_SERVICE capability. This capability allows the process to bind to well known ports. AmbientCapabilities=CAP_NET_BIND_SERVICE [Install] WantedBy=multi-user.target
Включите автозапуск службы:
sudo systemctl enable multifactor-ldap
Параметры компонента
Параметры работы компонента хранятся в файле /opt/multifactor/ldap/multifactor-ldap-adapter.dll.config в формате XML.
Общие параметры
<!-- В зависимости от варианта, не нужный закомментить или удалить из конфига -->
<!-- Адрес и порт (TCP) по которому адаптер будет принимать запросы по протоколу LDAP -->
<!-- Если указать адрес 0.0.0.0, то адаптер будет слушать все сетевые интерфейсы -->
<add key="adapter-ldap-endpoint" value="0.0.0.0:389"/>
<!-- Адрес и порт (TCP) по которому адаптер будет принимать запросы по зашифрованному протоколу LDAPS -->
<!-- Если указать адрес 0.0.0.0, то адаптер будет слушать все сетевые интерфейсы -->
<add key="adapter-ldaps-endpoint" value="0.0.0.0:636"/>
<!-- Адрес или название домена Active Directory, а также схема подключения ldap или ldaps -->
<!-- Например: ldaps://domain.local. Если используется LDAP, заменить ldaps:// на ldap:// -->
<add key="ldap-server" value="ldaps://domain.local"/>
<!-- [Опционально] Base DN для подключения к FreeIPA -->
<!-- Например: cn=users,cn=accounts,dc=domain,dc=local -->
<!-- <add key="ldap-base-dn" value="cn=users,cn=accounts,dc=domain,dc=local"/> -->
<!-- Список сервисных учетных записей (Bind DN), которым не требуется второй фактор -->
<!-- Укажите список через точку с запятой -->
<add key="ldap-service-accounts" value="CN=Service Acc,OU=Users,DC=domain,DC=local;service-acc;service-acc@domain.local"/>
<!-- OU сервисных учетных записей (Bind DN), которым не требуется второй фактор -->
<!-- <add key="ldap-service-accounts-ou" value="OU=Service Accounts"/> -->
<!-- [Опционально] Разрешать доступ только пользователям из указанной группы -->
<!-- <add key="active-directory-group" value="MyApp Users"/> -->
<!-- [Опционально] Запрашивать второй фактор только у пользователей из указанной группы -->
<!-- <add key="active-directory-2fa-group" value="MyApp 2FA Users"/> -->
<!-- [Опционально] Не запрашивать второй фактор у пользователей из указанной группы -->
<!-- <add key="active-directory-2fa-bypass-group" value="Bypass 2FA Users"/> -->
<!-- Настройки API Мультифактора -->
<!-- Адрес API Мультифактора. -->
<add key="multifactor-api-url" value="https://api.multifactor.ru"/>
<!-- Время ожидания ответа от API Мультифактора, по умолчанию 65 секунд. Формат: hh:mm:ss -->
<add key="multifactor-api-timeout" value="00:01:05"/>
<!-- Параметр NAS-Identifier для подключения к API Мультифактора -->
<!-- Укажите значение из личного кабинета -->
<add key="multifactor-nas-identifier" value=""/>
<!-- Параметр Shared Secret для подключения к API Мультифактора -->
<!-- Укажите значение из личного кабинета -->
<add key="multifactor-shared-secret" value=""/>
<!-- [Опционально] Доступ к API Мультифактора через HTTP прокси -->
<!-- <add key="multifactor-api-proxy" value="http://proxy:3128"/> -->
<!-- Уровень логирования: Debug, Info, Warn, Error -->
<add key="logging-level" value="Debug"/>
<!-- Формат логов. Например, json -->
<add key="logging-format" value="json"/>
<!-- Настройки LDAP -->
<!-- Время ожидания ответа от LDAP каталога. По умолчанию: 30 секунд. Формат: hh:mm:ss -->
<add key="ldap-bind-timeout" value="00:00:30"/>
<!-- Задержка перед ответом в случае неправильных входных данных. В секундах -->
<add key="invalid-credential-delay" value="5"/>
<!-- [Опционально] Загружать вложенные группы пользователя (true/false) -->
<!--add key="load-active-directory-nested-groups" value="true"/-->
<!-- Трансформация LDAP identity -->
<!-- [Опционально] Варианты: None, Upn, UidAndNetbios, SamAccountName, NetBIOSAndUid, DistinguishedName -->
<add key="transform-ldap-identity" value="None"/>
<!-- Сертификаты -->
<!-- Пароль x509 сертификата для TLS. Указать, если пароль есть -->
<!-- <add key="certificate-password" value=""/> -->
</appSettings>
</configuration>
Дополнительные настройки безопасности и конфиденциальности:
<!-- Отключить передачу адаптером email пользователей на сервер MULTIFACTOR --> <add key="privacy-mode" value="Full"/>
Защита от сбоев
В случае недоступности (по любой причине) API MULTIFACTOR, адаптер может работать в одном из двух вариантов:
- Пропускать без второго фактора (по умолчанию)
- Отказывать в доступе
Для настройки используется следующий параметр:
<!-- true: пропускать, false: запрещать --> <add key="bypass-second-factor-when-api-unreachable" value="true"/>
Настройка времени ожидания ответа API MULTIFACTOR
<!-- Время ожидания ответа от api мультифактора, по умолчанию 65 секунд. Время в формате hh:mm:ss --> <add key="multifactor-api-timeout" value="00:01:05"/> <!--Если указываете время менее 65 секунд, используйте следующий синтаксис. Время в формате hh:mm:ss--> <add key="multifactor-api-timeout" value="00:00:45!"/>
Запуск
После настройки конфигурации запустите компонент:
sudo systemctl start multifactor-ldap
Статус можно проверить командой:
sudo systemctl status multifactor-ldap
Дебаг
Логи старта приложения находятся в отдельном файле startup.logs в папке logs.
Для вывода причин неуспешного запуска адаптера используйте следующую команду:
/usr/bin/dotnet /opt/multifactor/ldap/multifactor-ldap-adapter.dll
Последующие изменения в файле конфигурации службы потребуют перезапуска подсистемы служб и службы:
sudo systemctl daemon-reload sudo systemctl restart multifactor-ldap
Обновление адаптера
- наличие компонента .Net версии 8
- остановить службу
- перезаписать файлы на новые (не заменяя конфигурационные файлы)
- включить службу обратно.
Необходимо будет вновь дать права на каталог с адаптером
sudo chown -R mfa: /opt/multifactor/ldap/ sudo chmod -R 700 /opt/multifactor/ldap/
Журналы
Журналы работы компонента записываются в syslog и сохраняются в текстовые файлы в директорию /opt/multifactor/ldap/logs. Если директория пуста или ее нет, нужно убедиться, что у пользователя, под которым запускается служба, есть права на запись в эту директорию.
Логирование ошибок запуска
При запуске системы активируется механизм логирования. Ошибки, возникающие на этапе запуска, дублируются в два потока вывода: в консоль и в файл startup.log, расположенный в папке logs.
Лог-файлы адаптеров подвергаются ротации с интервалом в 30 дней.
В процессе ротации старые логи удаляются и замещаются новыми.
Для просмотра содержимого syslog можно воспользоваться командой:
sudo less /var/log/syslog
Для просмотра журналов службы multifactor-ldap используйте команду:
sudo journalctl -fu multifactor-ldap
Сертификат для TLS шифрования
Если включена схема LDAPS, адаптер при первом запуске создаст самоподписанный SSL сертификат и сохранит его в папке /tls в формате pfx без пароля. Этот сертификат будет использоваться для аутентификации сервера и шифрования трафика. Вы можете заменить его на ваш сертификат при необходимости.
Важно
При добавлении собственного сертификата, необходимо его переименовать согласно автоматически созданному «certificate.pfx»
Удаление компонента
Удаление .NET Core
Для просмотра списка установленных на вашей машине версий SDK и сред выполнения .NET Core используйте команду:
dotnet --info
Далее, выполните команды:
Ubuntu
Ubuntu 20.04
sudo apt-get remove aspnetcore-runtime-8.0
Ubuntu 22.04
sudo rm /usr/bin/dotnet sudo rm -r /usr/local/lib/dotnet/ sudo dpkg --purge 1.0.2n-1ubuntu5.10
Ubuntu 24.04
sudo rm /usr/bin/dotnet sudo rm -r /usr/local/lib/dotnet/ sudo dpkg --purge 1.0.2n-1ubuntu5.10
Debian 12
sudo apt-get remove aspnetcore-runtime-8
Astra
Astra Орёл
sudo apt-get remove dotnet-sdk-8.0
Astra Смоленск
sudo apt purge dotnet-* aspnetcore-*
CentOS stream 8\9
sudo dnf remove aspnetcore-runtime-8.0
RHEL 8/9
sudo dnf remove dotnet* aspnetcore* netstandard*
РЕД ОС 8
sudo dnf remove aspnetcore-runtime-8.0
Удаление адаптера
Остановите службу multifactor-ldap, удалите её из автозапуска и удалите конфигурационный файл юнита:
sudo systemctl stop multifactor-ldap sudo systemctl disable multifactor-ldap sudo rm /etc/systemd/system/multifactor-ldap.service
Перезагрузите настройки systemd, просканировав систему на наличие изменённых юнитов:
sudo systemctl daemon-reload
Удалите файлы адаптера и системного пользователя mfa:
sudo rm -rf /opt/multifactor/ldap/ sudo userdel -r mfa
Вопросы и ответы
<add key="load-active-directory-nested-groups" value="false"/>