Загрузка данных
Вот подробный пошаговый план развёртывания MULTIFACTOR Radius Adapter на Linux.
---
## Шаг 1 — Подготовка: личный кабинет MULTIFACTOR
Перед установкой зайди в [admin.multifactor.ru](https://admin.multifactor.ru), раздел **«Ресурсы»**, и создай ресурс. Оттуда понадобятся два значения:
- `multifactor-nas-identifier`
- `multifactor-shared-secret`
Они потребуются на шаге настройки конфигурации.
---
## Шаг 2 — Установка зависимостей
### Для Debian 12 / Ubuntu 20.04–24.04 / Astra Linux 1.8 / Alt Linux:
```bash
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
sudo apt-get update && sudo apt-get install -y aspnetcore-runtime-8.0
sudo apt install libldap-2.5-0
```
### Для CentOS Stream 9:
```bash
sudo dnf update -y && sudo dnf upgrade -y
sudo dnf install -y dotnet-runtime-8.0
```
### Для RHEL 8/9:
```bash
sudo dnf install -y dotnet-sdk-8.0
```
### Для РЕД ОС 7/8:
```bash
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'`, создай симлинки вручную (см. ниже).
**Симлинки для Debian/Ubuntu (если нужны):**
```bash
sudo ln -s /usr/lib/x86_64-linux-gnu/libldap-2.5.so.2 /usr/lib/x86_64-linux-gnu/libldap.so.2
sudo ln -s /usr/lib/x86_64-linux-gnu/liblber-2.5.so.2 /usr/lib/x86_64-linux-gnu/liblber.so.2
```
**Для CentOS/RHEL/РЕД ОС:**
```bash
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
```
---
## Шаг 3 — Установка адаптера
Создай директорию и скачай актуальную версию (3.0.28):
```bash
sudo mkdir -p /opt/multifactor/radius/logs
sudo wget https://github.com/MultifactorLab/multifactor-radius-adapter/releases/download/3.0.28/release_linux_x64.zip
sudo unzip release_linux_x64.zip -d /opt/multifactor/radius
```
---
## Шаг 4 — Создание системного пользователя
```bash
sudo useradd -r mfa
sudo chown -R mfa: /opt/multifactor/radius/
sudo chmod -R 700 /opt/multifactor/radius/
```
---
## Шаг 5 — Создание systemd-службы
```bash
sudo nano /etc/systemd/system/multifactor-radius.service
```
Вставь содержимое:
```ini
[Unit]
Description=Multifactor Radius Adapter
[Service]
WorkingDirectory=/opt/multifactor/radius/
ExecStart=/usr/bin/dotnet /opt/multifactor/radius/multifactor-radius-adapter.dll
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=multifactor-radius
User=mfa
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
TimeoutStopSec=30
[Install]
WantedBy=multi-user.target
```
Включи автозапуск:
```bash
sudo systemctl enable multifactor-radius
```
---
## Шаг 6 — Основная конфигурация
Отредактируй файл `/opt/multifactor/radius/multifactor-radius-adapter.dll.config`:
```xml
<add key="adapter-server-endpoint" value="0.0.0.0:1812"/>
<add key="multifactor-api-url" value="https://api.multifactor.ru"/>
<add key="logging-level" value="Debug"/>
```
> ⚠️ В `shared-secret` нельзя использовать символы `&`, `#`, `<`, `>`.
---
## Шаг 7 — Конфигурация клиента (сетевого устройства)
Создай файл в папке `/opt/multifactor/radius/clients/`, например `my-device.config`:
```xml
<!-- IP сетевого устройства, которое подключается к адаптеру -->
<add key="radius-client-ip" value="10.10.10.10"/>
<!-- Shared secret, настроенный на устройстве -->
<add key="radius-shared-secret" value="YOUR_DEVICE_SECRET"/>
<!-- Источник первого фактора: ActiveDirectory / Radius / Ldap / None -->
<add key="first-factor-authentication-source" value="ActiveDirectory"/>
<!-- Домен AD -->
<add key="active-directory-domain" value="ldaps://10.0.0.4/DC=domain,DC=local"/>
<!-- Группы доступа (необязательно) -->
<add key="active-directory-group" value="VPN Users"/>
<add key="active-directory-2fa-group" value="2FA Users"/>
<!-- Данные из личного кабинета MULTIFACTOR -->
<add key="multifactor-nas-identifier" value="ИЗ_ЛИЧНОГО_КАБИНЕТА"/>
<add key="multifactor-shared-secret" value="ИЗ_ЛИЧНОГО_КАБИНЕТА"/>
```
Если первый фактор проверяется через AD — дополнительно укажи сервисную учётную запись (если источник первого фактора **не** AD):
```xml
<add key="service-account-user" value="svc-radius"/>
<add key="service-account-password" value="password"/>
```
---
## Шаг 8 — Открытие порта UDP 1812
```bash
# Для UFW (Ubuntu/Debian)
sudo ufw allow 1812/udp
# Для firewalld (CentOS/RHEL)
sudo firewall-cmd --permanent --add-port=1812/udp
sudo firewall-cmd --reload
```
---
## Шаг 9 — Запуск и проверка
```bash
sudo systemctl start multifactor-radius
sudo systemctl status multifactor-radius
```
Просмотр логов в реальном времени:
```bash
sudo journalctl -fu multifactor-radius
```
Если служба не стартует — запусти вручную для диагностики:
```bash
/usr/bin/dotnet /opt/multifactor/radius/multifactor-radius-adapter.dll
```
Логи также пишутся в `/opt/multifactor/radius/logs/`, включая `startup.log`.
---
## Дополнительные параметры (по необходимости)
| Параметр | Назначение |
|---|---|
| `authentication-cache-lifetime` | Кэш 2FA, напр. `01:00:00` = 1 час |
| `bypass-second-factor-when-api-unreachable` | `true` — пропускать если API недоступен |
| `pre-authentication-method` | Проверять 2FA **до** пароля (защита от брутфорса) |
| `privacy-mode` | Ограничить передачу ФИО/email на серверы MF |
| `ip-white-list` | Список разрешённых IP для приёма запросов |
---
Если нужна помощь с конкретным сценарием (AD, FreeIPA, NPS-прокси, кластер) — уточни, разберём подробнее.