- Начало работы
- Интеграция
- HTTP API
- OpenID Connect
- RADIUS протокол
- RADIUS адаптер
- LDAP адаптер
- Портал самообслуживания
- MULTIFACTOR Directory Sync
- Windows Logon
- Регистрация пользователей
- .NET Core
- 1с-Bitrix24
- 1с-плагин двухфакторной аутентификации
- ADFS
- ASP.NET
- Ansible AWX
- Atlassian Cloud
- BearPass
- 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)
- 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
- МТС Линк (бывш. webinar.ru)
- С-Терра VPN
- Точка доступа Wi-Fi
- ФПСУ-IP/Клиент
RadiusV2 сервер для Windows
MULTIFACTOR RadiusV2 Adapter — программный компонент, RADIUS сервер для Windows.
Компонент доступен вместе с исходным кодом, распространяется бесплатно. Актуальная версия находится на GitHub: код и сборка (архив release_windows_V2.zip).
Важно
Текущая версия Radius-адаптера v2 не является финальной и может дорабатываться в будущем.
Лицензия
Обратите внимание на лицензию. Она не даёт вам право вносить изменения в исходный код Компонента и создавать производные продукты на его основе. Исходный код предоставляется в ознакомительных целях.
Требования для установки компонента
- Компонент устанавливается на любой Windows сервер начиная с версии Windows Server 2016;
- Минимальные требования для сервера: 2 CPU, 4 GB RAM, 40 GB HDD (обеспечивают работу ОС и адаптера для 100 одновременных подключений — примерно 1500 пользователей);
- На сервере должен быть открыт порт 1812 (UDP) для приема запросов от Radius клиентов;
- Серверу с установленным компонентом необходим доступ к хосту api.multifactor.ru по TCP порту 443 (TLS) напрямую или через HTTP proxy;
- Для взаимодействия с LDAP каталогом (например Active Directory), компоненту нужен доступ к серверу домена по TCP порту 389 или порту 636;
- Для взаимодействия со сторонним Radius( например, FreeRadius или Network Policy Server) компоненту нужен доступ по UDP порту 1812;
- Для записи журналов в Syslog, необходим доступ к Syslog серверу;
- Для работы с Active Directory машина с адаптером должна находиться в домене.
Установка
Установка библиотек
Компонент требует наличия среды выполнения .NET версии 8.0. Данная среда выполнения является:
- Бесплатной;
- открытой (Open Source);
- разрабатывается компанией Microsoft совместно с Open-Source сообществом;
- не накладывает ограничений на использование.
Необходимые пакеты:
aspnetcore-runtime-8.0 — среда выполнения ASP.NET Core
.runtime-8.0 — базовая среда выполнения .NET
Установка компонента
Создайте папку, скачайте и распакуйте актуальную версию компонента из GitHub:
Включите автозапуск службы:
sc create MFRA2.0 binPath="C:\release_windows_V2\Multifactor.Radius.Adapter.v2.exe" DisplayName= "Multifactor Radius 2.0" type=own start=auto
Общие параметры
Для удобства дальнейшего расширения функциональности и упрощения диагностики проблем рекомендуем:
- Основной конфигурационный файл оставить стандартным (со значениями по умолчанию).
- Использовать шаблоны из папки
clientsдля настройки новых ресурсов.Преимущества такого подхода:
- Упрощает добавление новых ресурсов при необходимости расширения 2FA.
- Снижает риск ошибок конфигурации.
- Облегчает поиск и устранение неисправностей.
Этот подход обеспечит более структурированное и поддерживаемое решение.
Минимальная конфигурация Multifactor.Radius.Adapter.v2.dll.config:
<appSettings> . . . <!-- Адрес и порт (UDP) по которому адаптер будет принимать запросы на аутентификацию от клиентов --> <add key="adapter-server-endpoint" value="0.0.0.0:1812"/> <!-- Адрес API MULTIFACTOR, можно задать несколько адресов через ; --> <add key="multifactor-api-url" value="https://api.multifactor.ru"/> <!-- Доступ к API MULTIFACTOR через HTTP прокси (опционально) --> <!-- <add key="multifactor-api-proxy" value="http://login:password@proxy:3128"/> --> <!-- Уровень логирования: 'Verbose', 'Debug', 'Info', 'Warn', 'Error' --> <add key="logging-level" value="Debug"/> <!--<add key="logging-format" value="json"/>--> . . . </appSettings>
Настройка сетевых подключений
Идентификация клиентов
Для настройки каждого сетевого подключения к адаптеру используется отдельный конфигурационный файл с расширением .config, который должен находиться в папке /clients.
Идентификация клиента производится либо по IP адресу, либо по атрибуту NAS-Identifier. По IP удобно идентифицировать конфигурацию единичных сетевых устройств, например, межсетевых экранов. По NAS-Identifier – несколько однотипных, например, группу хостов с WinLogon или SSH.
<appSettings> . . . <!-- IP адрес сетевого устройства, которое будет подключаться к адаптеру --> <add key="radius-client-ip" value="10.10.10.10"/> <!-- Или RADIUS атрибут NAS-Identifier, передаваемый с сетевого устройства при подключении к адаптеру --> <add key="radius-client-nas-identifier" value="windows"/> <!-- Shared secret, настроенный на сетевом устройстве --> <add key="radius-shared-secret" value=""/> . . . </appSettings>
Если идентификация клиентов не требуется, можно сделать универсальные настройки в файле Multifactor.Radius.Adapter.v2.dll.config, которые будут применимы для всех подключений.
Важно
В параметре radius-shared-secret, не поддерживаются спецсимволы: (‘>’,'<‘,’&’,’#’), так как XML-парсер адаптера считает это частью разметки.
Проверка первого фактора в LDAP cервере.
Секция LdapServers содержит конфигурацию для подключения к одним или нескольким LDAP-каталогам (допустимо перечисление различных каталогов: ActiveDirectory, MultiDirectory, FreeIPA, OpenLDAP). Все параметры задаются внутри корневого элемента <ldapServers>
Чтобы обеспечить проверку первого фактора в LDAP-каталоге, настройте в клиентской конфигурации данный параметр в разделе appSettings:
<appSettings> . . . <!-- Где проверять первый фактор --> <add key="first-factor-authentication-source" value="Ldap"/> . . . </appSettings>
Пример минимальной конфигурации для ActiveDirectory, MultiDirectory, Samba
Необходимо задать секцию ldapServers, в которой необходимо создать секцию ldapServer, где указываются параметры каталога :
<ldapServers>
<!-- Настройки LDAP сервера -->
<ldapServer
connection-string="ldap://127.0.0.1:389"
username="CN=admin,CN=Users,DC=domain,DC=your"
password="password"
/>
</ldapServers>
Пример минимальной конфигурации для FreeIPA, OpenLDAP, ALD Pro
Необходимо задать секцию ldapServers, в которой необходимо создать секцию ldapServer, где указываются параметры каталога :
<ldapServers>
<!-- Настройки LDAP сервера -->
<ldapServer
connection-string="ldap://127.0.0.1:389"
username="UID=admin,CN=users,CN=accounts,DC=example,DC=local"
password="password"
/>
</ldapServers>
Обязательные параметры подключения
connection-string
Строка подключения к LDAP-каталогу. По умолчанию используется ldap протокол.
connection-string="ldap://127.0.0.1:389" connection-string="domain.your" connection-string="127.0.0.1" connection-string="ldaps://127.0.0.1:636"
username
Distinguished Name (DN) учетной записи службы, используемой для привязки (bind) к каталогу.
username="CN=admin1,CN=Users,DC=domain,DC=your"
password
Пароль для указанной учетной записи службы.
password="123456"
Параметр таймаута ответа от LDAP-каталога
bind-timeout-in-seconds
Время ожидания ответа от LDAP-каталога при операции привязки, в секундах. Значение по умолчанию: 30
bind-timeout-in-seconds="45"
Параметры разграничения доступа на основании политик для групп LDAP
access-groups
Список групп, пользователи которых имеют право проходить аутентификацию. Группы задаются в формате Distinguished Name через точку с запятой.
access-groups="CN=VPN Users,OU=groups,DC=domain,DC=your"
second-fa-groups
Пользователи только из этих групп будут проходить второй фактор. Группы задаются через точку с запятой в формате distinguished name.
second-fa-groups="CN=2FA Users,OU=groups,DC=domain,DC=your"
second-fa-bypass-groups
У пользователей только из этих групп не будет запрашиваться второй фактор. Группы задаются через точку с запятой в формате DN.
second-fa-bypass-groups="CN=2FA Bypass Users,OU=groups,DC=domain,DC=your"
authentication-cache-groups
Список групп, для пользователей которых будет кэшироваться результат успешного прохождения второго фактора. (см. кэширование аутентификации)
Параметры работы с группами
load-nested-groups
Определяет, необходимо ли загружать и проверять вложенные группы членства пользователя. Принимает значения true или false. Включение этой настройки может увеличить время обработки запроса.
load-nested-groups="true"
nested-groups-base-dn
Ограничивает поиск вложенных групп указанными контейнерами. Значения задаются в формате DN через точку с запятой. По умолчанию поиск осуществляется из корня каталога.
nested-groups-base-dn="CN=Users,DC=domain,DC=your;CN=admins,DC=domain,DC=your"
Параметры атрибутов пользователя
phone-attributes
Задает имена LDAP-атрибутов, из которых извлекается номер телефона пользователя. Атрибуты указываются через точку с запятой. Система использует первое непустое значение.
phone-attributes="mobile;phone"
identity-attribute
Использовать значение указанного атрибута как Identity для запроса в облако Multifactor. Допускается только одно значение. Если настройка не указана, то используется имя пользователя из RADIUS пакета.
Значение атрибута может быть любым существующим атрибутом в LDAP-каталоге.
identity-attribute="userPrincipalName" identity-attribute="mail" identity-attribute="sAMAccountName"
Параметры UPN и доменов
requires-upn
Требует, ввод логина в формате UPN (User Principal Name, например, user@domain.com). Принимает значения true или false. По умолчанию: false.
requires-upn="true"
enable-trusted-domains
Включить обработку доверенных доменов каталога. Значение true/false, по умолчанию false. Работает только при requires-upn=”true”. На данный момент доверенные домены поддерживаются только для Active Directory.
enable-trusted-domains="true"
included-domains
Обрабатывать только указанные доверенные домены. Несколько значений задаются через точку с запятой.
included-domain="domain1.your;domain3.your"
Внимание
Настройка не может использоваться вместе с excluded-domains.
excluded-domains
Обрабатывать все домены, кроме указанных. Несколько значений задаются через точку с запятой.
excluded-domains="domain2.your;domain4.your"
Внимание
Настройка не может использоваться вместе с included-domains.
enable-alternative-suffixes
Включить обработку альтернативных UPN суффиксов домена. Значение true/false, по умолчанию false.
enable-alternative-suffixes="true"
included-suffixes
Разрешить использование только указанных UPN суффиксов. Несколько значений задаются через точку с запятой.
included-suffixes="suf1; suf2"
Внимание
Настройка не может использоваться вместе с excluded-suffixes.
excluded-suffixes
Разрешить использование всех UPN суффиксов, кроме указанных. Несколько значений задаются через точку с запятой.
excluded-suffixes="suf1; suf2"
Внимание
Настройка не может использоваться вместе с included-suffixes.
Работа с несколькими доменами
Адаптер при запуске находит все доверенные домены и может проводить аутентификацию пользователя в любом из них.
Внимание
Если среда включает несколько доменов или домены, связанные доверительными отношениями, установите параметр
requires-upn="true". Это обеспечит корректную работу механизма поиска пользователей, предотвращая неоднозначность при разрешении имен.
Вы можете отдельно настроить список разрешенных :
<configuration>
<appSettings>
. . .
</appSettings>
. . .
<ldapServers>
<!-- Настройки LDAP сервера -->
<ldapServer
connection-string="domain.your"
username="CN=admin,CN=Users,DC=domain,DC=your"
password="password"
enable-trusted-domains="true"
included-domains="domain1.your;domain3.your"
requires-upn="true"
/>
</ldapServers>
</configuration>
или список запрещённых доменов:
<configuration>
<appSettings>
. . .
</appSettings>
. . .
<ldapServers>
<!-- Настройки LDAP сервера -->
<ldapServer
connection-string="domain.your"
username="CN=admin,CN=Users,DC=domain,DC=your"
password="password"
enable-trusted-domains="true"
excluded-domains="domain2.your;domain4.your"
requires-upn="true"
/>
</ldapServers>
</configuration>
Важно
Настройка
included-domainsне может использоваться вместе сexcluded-domains.
Пример перечисления доменов:
<configuration>
<appSettings>
. . .
</appSettings>
. . .
<ldapServers>
<!-- Настройки LDAP сервера -->
<ldapServer
connection-string="domain.your"
username="CN=admin,CN=Users,DC=domain,DC=your"
password="password"
requires-upn="true"
/>
<ldapServer
connection-string="domain1.your"
username="CN=admin,CN=Users,DC=domain1,DC=your"
password="password"
requires-upn="true"
/>
</ldapServers>
</configuration>
Проверка первого фактора во внешнем RADIUS сервере
Для проверки первого фактора в RADIUS, например, в Network Policy Server применимы следующие параметры:
<appSettings> . . . <!-- Где проверять первый фактор: Radius --> <add key="first-factor-authentication-source" value="Radius"/> <!-- Адрес (UDP), с которого адаптер будет подключаться к серверу --> <add key="adapter-client-endpoint" value="0.0.0.0"/> <!-- Адрес и порт (UDP) сервера. Через точку с запятой можно задавать несколько адресов.--> <add key="nps-server-endpoint" value="192.168.0.10:1812; 193.168.0.10:1812"/> <!-- Время ожидания ответа от RADIUS сервера в формате hh:mm:ss. По умолчанию время ожидания 5 секунд --> <add key="nps-server-timeout" value="00:00:05" /> . . . </appSettings>
Внимание
Если необходима проверка членства в LDAP группе или передача LDAP атрибута, то необходимо указать секцию
ldapServersи задать параметры длягруппилиатрибутов. По умолчанию передаётся атрибутnameи
Без проверки первого фактора
Адаптер может работать без проверки пароля пользователя, только со вторым фактором доступа. Для настройки используется следующая конфигурация клиента:
<appSettings> . . . <!--Где проверять первый фактор: None --> <add key="first-factor-authentication-source" value="None"/> . . . </appSettings>
Внимание
Если необходима проверка членства в LDAP группе или передача LDAP атрибута, то необходимо указать секцию
ldapServersи задать параметры длягруппилиатрибутов. По умолчанию передаётся атрибутnameи
Проверка второго фактора перед первым
Адаптер может быть настроен на обязательное подтверждение второго фактора до проверки учетных данных в LDAP-каталоге.
В этом режиме, если пользователь не подтвердил свой второй фактор, адаптер не отправляет запрос на проверку логина и пароля в LDAP-каталог.
Это позволяет эффективно противостоять атакам перебора, так как неавторизованные попытки блокируются на более раннем этапе, до обращения к центральному каталогу, что, в том числе, предотвращает блокировку учетных записей в каталоге из-за превышения лимита неудачных попыток ввода пароля.
У данного параметра несколько вариантов значений: none, any, otp.
none
Обязательная проверка второго фактора до проверки учетных данных в LDAP-каталоге отключена. Проверка второго фактора будет проходит по стандартному сценарию.
any
Обязательная проверка подтверждения второго фактора до проверки учетных данных в LDAP-каталоге будет осуществлена любым из настроенных методов. (Push в мобильном приложении; Multifactor; push в Telegram; программные и аппаратные OTP токены; смсзвонок.)
otp
В режиме OTP пользователь должен ввести одноразовый пароль (OTP) вместе с паролем. Если пароль не требуется пользователю достаточно ввести только одноразовый пароль (OTP).
Пароль + OTP: mypassword123456 Только OTP: 123456
Важно
Данный параметр используется только вместе с
invalid-credential-delay.
<appSettings> . . . <!-- Проверка второго фактора перед первым. Варианты METHOD: "none", "any", "otp" --> <add key="pre-authentication-method" value="METHOD"/> <!-- Задержка ответа в секундах при отказе в доступе: случайная в интервале между 3 и 6 сек. (включая границы интервала) --> <add key="invalid-credential-delay" value="3-6" /> . . . </appSettings>
Подключение к серверу аутентификации
Для взаимодействия с серверами аутентификации MULTIFACTOR, которые отправляют второй фактор доступа, необходимо заполнить два параметра в конфигурации клиента:
<appSettings> . . . <!-- Параметр NAS-Identifier для подключения к API MULTIFACTOR - из личного кабинета --> <add key="multifactor-nas-identifier" value=""/> <!-- Параметр Shared Secret для подключения к API MULTIFACTOR - из личного кабинета --> <add key="multifactor-shared-secret" value=""/> . . . </appSettings>
Значения параметров необходимо взять из личного кабинета, в разделе «Ресурсы».
Разграничение IP-адресов
Данный параметр задаёт список допустимых IP адресов для обработки адаптером. Если AccessRequest пакет пришел не с адреса из настройки, то такой пакет игнорируется. Пакеты StatusServer будут обрабатываться в обычном режиме. Можно задавать конкретные IP, подсети, диапазоны адресов. Несколько значений задаются через точку с запятой.
Пример:
<appSettings> . . . <add key="ip-white-list" value="192.168.0.1; 127.0.0.1/16 ; 199.168.0.1-199.168.0.10"/> <add key="ip-white-list" value="192.168.0.1; 192.168.0.2"/> <add key="ip-white-list" value="199.168.0.1-199.168.0.10; 136.168.0.1-136.168.0.10"/> . . . </appSettings>
Дополнительные RADIUS атрибуты
При успешной аутентификации, в ответе клиенту компонент может передавать настраиваемые RADIUS атрибуты. Такие атрибуты обычно используются на сетевом оборудовании для разграничения прав доступа.
Атрибуты могут быть четырёх видов:
- Безусловные
- Условные: с проверкой вхождения пользователя в группу на сервере LDAP
- Условные: с проверкой имени пользователя
- С трансляцией значения атрибута LDAP в RADIUS.
Пример XML-синтаксиса файла конфигурации для передачи атрибута Class (RADIUS Attribute ID 25).
<configuration>
<!-- Параметры работы компонента -->
<appSettings>
. . .
</appSettings>
<!-- Параметры работы LDAP сервера -->
<ldapServers>
. . .
</ldapServers>
<!-- Настройка передачи дополнительных RADIUS атрибутов -->
<RadiusReply>
<Attributes>
<!-- Всегда передавать атрибут Class со значением Test1 -->
<add name="Class" value="Test1" />
<!-- Всегда передавать атрибут Class со значением из Ldap атрибута SampleLdapAttr -->
<add name="Class" from="SampleLdapAttr"/>
<!-- Передавать атрибут Class со всеми группами пользователя в Active Directory -->
<add name="Class" from="memberOf"/>
<!-- Передавать атрибут Class со значением Users, если пользователь входит в LDAP группу VPN Users -->
<add name="Class" value="Users" when="UserGroup=VPN Users"/>
<!-- Передавать атрибут Class со значением Admin, если имя пользователя SamlpeAdminName -->
<add name="Class" value="Admin" when="UserName=SamlpeAdminName"/>
</Attributes>
</RadiusReply>
</configuration>
Названия и значения атрибутов могут быть любыми, которые поддерживаются на вашем сетевом устройстве. Например, для передачи групп FortiGate можно использовать атрибут Fortinet-Group-Name. Словарь со всеми доступными атрибутами расположен в файле /realize/multifactor/radius/content/radius.dictionary.
Для передачи LDAP атрибутов должно быть выполнено одно из условий:
- Указан источник первого фактора LDAP-каталог и задано название домена;
- Заданы параметры сервисной учётной записи LDAP-каталога, если источником первого фактора является RADIUS, или первый фактор не проверяется.
Кэширование аутентификации
Адаптер можно настроить на кэширование аутентификаций пользователей вторым фактором.
В этом режиме повторные запросы ранее аутентифицированных вторым фактором пользователей будут приняты без запроса второго фактора. Кэш действует в течение настраиваемого временного интервала.
Запрос является повторным, если параметры текущего запроса совпадают с параметрами предыдущего запроса.
Формат и допустимые значения:
- Диапазон: от
00:00:00до23:59:59 - Формат:
hh:mm:ss
Компоненты ключа: - CallingStationId: значение одноименного атрибута из RADIUS-запроса. Если атрибут отсутствует, используется IP-адрес клиента, полученный из UDP-пакета.
- configName: имя конфигурационного файла, применяемого к данному клиенту.
- UserName: имя пользователя из RADIUS-пакета (атрибут
User-Name).
Для настройки используется следующий параметр:
<appSettings> . . . <!-- Пропускать повторные аутентификации без запроса второго фактора в течение 1 часа 20 минут 10 секунд (максимальное значение 23:59:59, кэширование отключено, если удалить настройку) --> <add key="authentication-cache-lifetime" value="01:20:10" /> . . . </appSettings>
Максимальное значение для данного параметра 23:59:59.
Защита от сбоев
В случае недоступности (по любой причине) API MULTIFACTOR, адаптер может работать в одном из двух вариантов:
- Пропускать без второго фактора (по умолчанию)
- Отказывать в доступе
Для настройки используется следующий параметр:
<appSettings> . . . <!-- true: пропускать, false: запрещать --> <add key="bypass-second-factor-when-api-unreachable" value="true"/> . . . </appSettings>
Прочие параметры
Пользователям, регистрирующимся в системе через Radius адаптер, можно автоматически присваивать членство в группах MULTIFACTOR следующей настройкой:
<appSettings> . . . <add key="sign-up-groups" value="group1;Название группы 2"/> . . . </appSettings>
Дополнительные настройки безопасности и конфиденциальности:
<appSettings> . . . <!-- Отключить передачу адаптером ФИО, email, IP пользователей на сервер MULTIFACTOR --> <add key="privacy-mode" value="Full"/> <!-- можно указать перечень передаваемых атрибутов --> <add key="privacy-mode" value="Partial:Name,Email,Phone,RemoteHost"/> . . . </appSettings>
Настройка времени ожидания ответа API MULTIFACTOR:
<appSettings> . . . <!--Время ожидания ответа от 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!"/> . . . </appSettings>
Журналы
Журналы работы компонента записываются в syslog и сохраняются в текстовые файлы в директорию /opt/multifactor/radius/logs. Если директория пуста или ее нет, нужно убедиться, что у пользователя, под которым запускается служба, есть права на запись в эту директорию.
Уровень и формат логирования
Уровень и формат логирования необходимо настраивать в корневом файле конфигурации multifactor-radius-adapter.dll.config :
Существуют следующие уровни логирования:
- Verbose
- Debug
- Info
- Warn
- Error
Пример:
<add key="logging-level" value="Debug"/>
Существуют следующие форматы логирования:
- ElasticCommonSchema
- Json
- JsonUtc
- JsonTz
Пример:
<add key="logging-format" value="json"/>
Логирование ошибок запуска
При запуске системы активируется механизм логирования. Ошибки, возникающие на этапе запуска, дублируются в два потока вывода: в консоль и в файл startup.log, расположенный в папке logs.
Запись журналов в Syslog
Для записи журналов работы адаптера в Syslog или SIEM систему, добавьте в корневой файл конфигурации multifactor-radius-adapter.v2.dll.config следующие параметры:
<!-- Адрес и порт сервера, протокол может быть 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-radius"/>
Также доступны расширенные возможности по настройке шаблона записи журналов.
Если syslog передаёт искаженные символы, нужно поменять следующую настройку на false (по умолчанию true):
<add key="syslog-use-tls" value="false" />
Шаблоны журналов
Для настройки шаблона записи журналов используются следующие настройки в корневом файле конфигурации multifactor-radius-adapter.v2.dll.config:
<appSettings>
. . .
<!--
Примеры шаблонов:
1) [{Timestamp:HH:mm:ss} {Level:u3}] ext_ip={CallingStationId} {Message:lj}{NewLine}{Exception}
2) [{Timestamp:HH:mm:ss} {Level:u3}] {CorrelationId} {Message:lj}{NewLine}{Exception}
3) {Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {CorrelationId}{Message:lj}{NewLine}{Exception}
-->
<!-- Шаблон записи журналов в текстовый файл -->
<!-- <add key="file-log-output-template" value=""/> -->
<!-- Шаблон записи журналов в консоли -->
<!-- <add key="console-log-output-template" value=""/> -->
. . .
</appSettings>
Обновление адаптера
- Остановите службу
- Перезапишите файлы на новые, не заменяя конфигурационные файлы(не подменяйте папку clients с настроенными конфигурациями,)
- Включите службу обратно.
- Основной конфиг (MultiFactor.Radius.Adapter.exe.config) нужно заполнить вручную, не подменяя его.
Подробнее о шаблонах: https://github.com/serilog/serilog/wiki/Formatting-Output.
Идентификатор корреляции
Для отслеживания событий на протяжении всей цепочки аутентификации пользователя используется идентификатор корреляции {CorrelationId}.
Значение идентификатора передается в формате «ConfigName-N», где
- «ConfigName» — имя конфигурации клиента, который подключился
- «N» — счетчик, который сбрасывается каждые сутки в 00:00.
Адрес удалённого клиента
Для записи названия хоста или IP удалённого пользователя используется шаблон {CallingStationId}.
Значение параметра последовательно проверяется в следующих RADIUS-атрибутах до первого непустого:
- Calling-Station-Id;
- MS-Client-Machine-Account-Name;
- MS-RAS-Client-Name.
Работа с несколькими адаптерами
При необходимости использования нескольких Radius адаптеров на одной машине, необходимо выполнить следующие действия. Каждая копия адаптера должна функционировать как отдельная служба Windows и обрабатывать запросы на уникальном сетевом порту.
Для этого необходимо указать разные имена для каждой службы, а также настроить разные порты в файле конфигурации каждой копии адаптера, чтобы они могли работать на одной машине одновременно.
Переименуйте службу для каждой новой копии адаптера:
- Откройте редактор реестра (
WIN+R).
regedit
- Перейдите в раздел, где хранятся службы Windows: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services.
- Откройте ключ «Службы», чтобы увидеть все установленные на компьютере службы. Список отсортирован по имени службы.
- Найдите и выделите нужную службу в списке.
- Правой кнопкой мыши нажмите на запись и выберите «Переименовать».
- Введите новое имя. Длина имени не должна превышать 256 символов, недопустимы обратные косые и прямые ссылки.
- Перезагрузите компьютер.
Важно
Новое имя службы не вступит в силу до перезагрузки Windows.
Настройте уникальный порт в конфигурационном файле:
Для того, чтобы задать порт необходимо настроить корневой файл конфигурации Multifactor.Radius.Adapter.v2.dll.config каждого адаптера, следующим образом:
1. Найдите строку с параметром adapter-server-endpoint:
<appSettings> . . . <add key="adapter-server-endpoint" value="0.0.0.0:1812"/> . . . </appSettings>
2. Измените номер порта на уникальный для данной службы:
Для службы на порту 1813:
<appSettings> . . . <add key="adapter-server-endpoint" value="0.0.0.0:1813"/> . . . </appSettings>
Для службы на порту 1814:
<appSettings> . . . <add key="adapter-server-endpoint" value="0.0.0.0:1814"/> . . . </appSettings>
Кластерная конфигурация
При размещении компонента в кластерной конфигурации придерживайтесь схемы Active/Passive или выбирайте вариант, при котором повторный запрос с клиента будет обрабатываться тем же сервером.
Для наилучшей работы с nginx или HAProxy также укажите в настройках прокси-сервера заголовок proxy_protocol.
Дополнительная информация про Active Directory
- Для работы с Active Directory используется простая проверка подлинности пароля пользователя. Настоятельно рекомендуем использовать схему LDAPS для шифрования трафика между адаптером и доменом (на сервере AD должен быть установлен сертификат, в т.ч. самоподписанный).
Удаление компонента
Остановите службу, удалите её из автозапуска:
sc delete MFRA2.0
Удалите файлы адаптера.
Вопросы и ответы
В: Где прописывается сервисная учетная запись для подключения к LDAP-каталогу?
О: Если проверка первого фактора осуществляется в LDAP-каталоге, сервисная учётная запись не используется. Адаптер подключается к LDAP-каталогу от имени пользователя, который запрашивает аутентификацию.
В иных случаях, см. Настройка сервисной учётной записи.
В: Можно указать несколько групп LDAP-каталога для контроля доступа и условного включения второго фактора?
О: Да, перечислите их через точку с запятой.
В: Как ускорить проверку групп в LDAP-каталоге?
О: По умолчанию адаптер проверяет в том числе вложенные группы, то есть пользователь может состоять в группе или состоять в группе, которая состоит в группе, которую проверяет адаптер. Если запрос занимает более 100 миллисекунд, вы можете отключить проверку вложенности следующей настройкой:
load-nested-groups="false
В: Как указать несколько доменов или хостов DC?
О: Перечислите их через точку с запятой.
В: Адаптер может работать в режиме Radius proxy?
О: Да, при подключении к внешнему Radius серверу, адаптер работает в качестве прокси: транслирует трафик между сетевым устройством и внешним сервером без изменений.
В: Как указать несколько IP для идентификации клиента?
О: Можно перечислить адреса через точку с запятой, можно указать диапазон, можно комбинировать, например:
<add key="radius-client-ip" value="192.168.0.1-192.168.0.5; 192.168.0.10"/>
или так:
<add key="radius-client-ip" value="10.0.0.0/24"/>