Перейти к основному содержанию

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

Multifactor

Если вы настраиваете двухфакторную аутентификацию 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. Работаем под рутом.

multifactor

Компонент использует среду выполнения 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

multifactor

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

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

multifactor

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

multifactor

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

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 без пароля. Этот сертификат будет использоваться для аутентификации сервера и шифрования трафика. Вы можете заменить его на ваш сертификат при необходимости.

Теги

 

Похожие материалы