Найти тему

MultiFactor Ldap Adapter — установка на Linux

Оглавление

Если вы настраиваете двухфакторную аутентификацию MultiFactor, то с помощью MultiFactor Ldap Adapter можно реализовать 2FA для сервисов, которые поддерживают LDAP(S) аутентификацию:

  • Zabbix
  • VMware vCenter Server
  • Ansible AWX
  • 1c-Bitrix24
  • Redmine
  • Seafile (нужно проверить)
MultiFactor Ldap Adapter — LDAP proxy сервер, разработанный и поддерживаемый компанией Мультифактор для двухфакторной аутентификации пользователей в приложениях, использующих LDAP аутентификацию.

MultiFactor — удовольствие платное, но сам компонент MultiFactor Ldap Adapter распространяется бесплатно в версиях для Windows и Linux. Сегодня произведём установку на Ubuntu 20.

https://multifactor.ru/docs/ldap-adapter/linux

Второй фактор включается только, после успешной проверки учетной записи в Active Directory или другом LDAP каталоге.

Функции MultiFactor Ldap Adapter

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

Возможности MultiFactor Ldap Adapter

  • работа по протоколам LDAP и LDAPS (шифрованный TLS канал);
  • перехват запросов на аутентификацию, использующих механизмы Simple, Digital, NTLM;
  • пропуск запросов от сервисных учетных записей (Bind DN) без второго фактора;
  • настройка доступа на основе принадлежности пользователя к группе в Active Directory;
  • избирательное включение второго фактора на основе принадлежности пользователя к группе в Active Directory;
  • запись журналов в Syslog сервер или SIEM систему.

MultiFactor Ldap Adapter для Linux

MULTIFACTOR Ldap Adapter (Ldap proxy сервер) — программный компонент, LDAP proxy сервер для Linux. Компонент доступен вместе с исходным кодом, распространяется бесплатно. Актуальная версия находится на GitHub: код и сборка. Адаптер протестирован со следующими реализации каталогов:

  • ActiveDirectory
  • Samba4
  • FreeIPA

Требования для Linux:

  • Компонент устанавливается на Linux сервер, протестирован на CentOS, RHEL, Ubuntu, Debian, Astra Linux, REDOS, ALT Linux, SUSE Linux.
  • Минимальные требования для сервера: 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).

Установка на Ubuntu 20

Устанавливать будем на Ubuntu 20.04.4. Работаем под рутом.

-2

Компонент использует среду выполнения ASP.NET Core runtime версии 3.1, которая является бесплатной, открытой, разрабатывается компанией Microsoft и Open-Source сообществом.

https://docs.microsoft.com/ru-ru/dotnet/core/install/linux-ubuntu

Устанавливаем компонент aspnetcore-runtime-3.1.

cd /tmp
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
apt-get update
apt-get install -y apt-transport-https
apt-get update
apt-get install -y aspnetcore-runtime-3.1

Устанавливаем MultiFactor Ldap Adapter. Создаём рабочие директории:

mkdir /opt/multifactor /opt/multifactor/ldap /opt/multifactor/ldap/tls /opt/multifactor/ldap/logs
cd /tmp
wget https://github.com/MultifactorLab/multifactor-ldap-adapter/releases/latest/download/release_linux_x64.zip
unzip release_linux_x64.zip -d /opt/multifactor/ldap
-3

Создаём системного пользователя:

useradd -r mfa
chown -R mfa: /opt/multifactor/ldap/
chmod -R 700 /opt/multifactor/ldap/

Настраиваем автозапуск:

vim /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
-4
systemctl enable multifactor-ldap

Конфигурация

Параметры работы компонента хранятся в файле

/opt/multifactor/ldap/multifactor-ldap-adapter.dll.config

Общие параметры:

<!-- Адрес и порт (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 --> <add key="ldap-server" value="ldaps://domain.local"/>
<!-- [Опционально] Base DN для подключения к FreeIPA --> <!-- <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"/> <!-- [Опционально] Не запрашивать второй фактор у пользователей из указанной группы (в том числе, если пользователь одновременно находится в группе, заданной в active-directory-2fa-group) --> <add key="active-directory-2fa-bypass-group" value="Bypass 2FA Users"/>

<!-- Адрес API Мультифактора --> <add key="multifactor-api-url" value="https://api.multifactor.ru"/> <!-- Параметр 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"/>

В случае недоступности (по любой причине) API Мультифактора, адаптер может работать в одном из двух вариантов:

  1. Пропускать без второго фактора (по умолчанию)
  2. Отказывать в доступе

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

<!-- true: пропускать, false: запрещать --> <add key="bypass-second-factor-when-api-unreachable" value="true"/>

Запуск

После настройки конфигурации запускаем компонент:

systemctl start multifactor-ldap

Проверка статуса:

systemctl status multifactor-ldap
-5

Перезапуск (после изменения настроек):

systemctl daemon-reload
systemctl restart multifactor-ldap

Логирование

Журналы работы компонента записываются в syslog и сохраняются в текстовые файлы в директорию /opt/multifactor/ldap/logs. Если директория пуста или ее нет, нужно убедиться, что у пользователя, под которым запускается служба, есть права на запись в эту директорию.

less /var/log/syslog
journalctl -fu multifactor-ldap

LDAPS

Если включена схема LDAPS, адаптер при первом запуске создаст самоподписанный SSL сертификат и сохранит его в папке /tls в формате pfx без пароля. Этот сертификат будет использоваться для аутентификации сервера и шифрования трафика. Вы можете заменить его на ваш сертификат при необходимости.

Источник:

MultiFactor Ldap Adapter — установка на Linux | internet-lab.ru

💰 Поддержать проект

Если вам понравилась статья, то ставьте 👍🏻 каналу.
Пишите комментарии, задавайте вопросы, подписывайтесь.