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

Ldap proxy сервер для Windows

MULTIFACTOR Ldap Adapter программный компонент, LDAP proxy сервер для Windows.

Компонент доступен вместе с исходным кодом, распространяется бесплатно. Актуальная версия находится на GitHub: код и сборка.

Лицензия

Обратите внимание на лицензию. Она не дает вам право вносить изменения в исходный код Компонента и создавать производные продукты на его основе. Исходный код предоставляется в ознакомительных целях.

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

  • Компонент устанавливается на любой Windows сервер начиная с версии 2008 R2;
  • Минимальные требования для сервера: 2 CPU, 4 GB RAM, 40 GB HDD (обеспечивают работу ОС и адаптера для 100 одновременных подключений примерно 1500 пользователей);
  • На сервере должны быть открыты TCP порты 389 (LDAP) и 636 (LDAPS) для приема запросов от клиентов;
  • Серверу с установленным компонентом необходим доступ к хосту api.multifactor.ru по TCP порту 443 (TLS) напрямую или через HTTP proxy;
  • Для взаимодействия с Active Directory, компоненту нужен доступ к серверу домена по TCP порту 389 (LDAP) или 636 (LDAPS);
  • Для записи журналов в Syslog, необходим доступ к Syslog серверу.
Обратите внимание

Для Windows Server версии младше 2016 необходимо установить Microsoft .NET Framework 4.6.2.

Параметры компонента

Параметры работы компонента хранятся в секции <appSettings> файла MultiFactor.Ldap.Adapter.exe.config в формате XML. Не заменяйте файл целиком, так как в нем содержится техническая информация, необходимая для корректного запуска адаптера.

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

MultiFactor.Ldap.Adapter.exe.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"/>

<!-- Список сервисных учетных записей (bind dn), которым не требуется второй фактор, перечисленные через точку с запятой -->
<add key="ldap-service-accounts" value="CN=Service Acc,OU=Users,DC=domain,DC=local"/>

<!-- Или OU сервисных учетных записей, которым не требуется второй фактор -->
<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"/>
<!--Таймаут запросов в API Мультифактора, минимальное значение 65 секунд -->
<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"/>
<!--certificate password leave empty or null for certificate without password-->
<!--<add key="certificate-password" value="XXXXXX"/>-->

Защита от сбоев

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

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

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

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

Запуск компонента

Компонент может работать в консольном режиме или в качестве службы Windows. Для запуска в консольном режиме достаточно запустить приложение.

Для установки в качестве Windows Service выполните команду с ключом /i от имени Администратора

MultiFactor.Ldap.Adapter.exe /i

Компонент устанавливается в режиме автоматического запуска от имени Network Service.

Для удаления Windows Service выполните команду с ключом /u от имени Администратора

MultiFactor.Ldap.Adapter.exe /u

Журналы

Журналы работы компонента находятся в папке Logs. Если их нет, удостоверьтесь, что папка доступна для записи пользователю Network Service.

Syslog

Для записи журналов в Syslog сервер или SIEM систему, добавьте в конфигурацию следующие параметры:

<!--адрес и порт сервера, протокол может быть udp или tcp-->
<add key="syslog-server" value="udp://syslog-server:514"/>
<!--формат журнала: RFC3164 или RFC5424-->
<add key="syslog-format" value="RFC5424"/>
<!--категория: User, Auth, Auth2, Local0 .. Local7-->
<add key="syslog-facility" value="Auth"/>
<!--название приложения (tag)-->
<add key="syslog-app-name" value="multifactor-ldap"/>

Сертификат для TLS шифрования

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

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

В: Можно указать несколько групп AD для контроля доступа и условного включения второго фактора?

О: Да, перечислите их через точку с запятой.


В: Как ускорить проверку групп в Active Directory?

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

<add key="load-active-directory-nested-groups" value="false"/>