Настройка двухфакторной аутентификации для входа в Staffcop

Инструкция описывает настройку двухфакторной аутентификации (2FA) через Radius-адаптер. Staffcop отправляет Radius-запросы на адаптер, который передает их в сервис 2FA.

Поддерживаются два сервиса:

  • Контур ID (K.ID) — адаптер устанавливается на сервер Staffcop;

  • Multifactor — адаптер устанавливается на сервере с Multifactor.

Настройка Staffcop для обоих сервисов одинакова. Различаются адрес Radius-сервера, секрет и способ установки адаптера.

Порядок настройки

Определить сценарий входа
         │
         ├── Пользователь в AD, для Контура также доступен ALD Pro ──┐
         │                                                           │
         └── Локальный админ Staffcop ───────────────────────────────┤
                                                                     │
Настроить пользователей ◄────────────────────────────────────────────┘
         │
         ├── Служба каталогов
         ├── Контур.ID
         └── Multifactor
         │
Настроить сеть (если каталог)
         │
Выбрать вариант 2FA
         │
         ├── Контур.ID ──────► Развернуть RadiusProxy на сервере Staffcop
         │                     │                                           ──────────────────────┐
         │                     └── Настроить адаптер (appsettings.json)                          |
         │                                                                                       |
         └── Multifactor ────► Развернуть multifactor-radius на сервере Multifactor              |
                               │                                                                 |
                               └── Настроить адаптер (multifactor-radius-adapter.dll.config) ────|
                                                                                                 |
                                                                                                 |
                                                                                                 |
                                 Настроить двухфакторную авторизацию на сервере Staffcop         |
                                 в файле локальной конфигурации сервера /etc/staffcop/config ────┘
                                                              |
                                                              |
staffcop restart ─────────────────────────────────────────────┘
      │
Проверить вход

Сценарии входа

Вход в Staffcop работает по одному из двух сценариев:

Сценарий

Где проверяется пароль

Чем подтверждается вход

Пользователь есть в Active Directory или ALD Pro.
ALD Pro доступен только для Контур.ID

В каталоге Active Directory или ALD Pro

Контур.ID, Multifactor или Яндекс.Ключ

Пользователь — локальный администратор Staffcop

Не проверяется

Контур.ID, Multifactor или Яндекс.Ключ

Способы подтверждения входа зависят от сервиса 2FA:

  • Контур.ID — приложение Контур.Коннект: пуш-уведомление, OTP-код или звонок;

  • Multifactor — пуш-уведомление в приложении Multifactor;

  • Яндекс.Ключ — код.

Настройка пользователей

Перед настройкой Radius-прокси подготовьте учетные записи пользователей во всех задействованных системах.

Внимание

Radius игнорирует запросы пользователей с логином admin.

Служба каталогов

  1. Создайте пользователя:

    • в Active Directory — user@domain.local;

    • в ALD Pro — user@domain.local.

  2. Добавьте пользователя user@domain.local в группу, которая синхронизируется с MS AD / ALD Pro.

  3. На сервере Staffcop подключитесь к AD — см. Настройка Active Directory.

Контур.ID

  1. В кабинете администратора K.ID отправьте пользователю ссылку-приглашение на учетную запись user@example.com.

Примечание

К учетной записи user@example.com должен быть привязан Контур.Коннект. После перехода по ссылке из приглашения пользователь появится в списке.

  1. Добавьте этого пользователя в Организацию.

  2. Привяжите к пользователю Логин — Домен для входа: user@domain.local или user.

Примечание

Привязанные логины должны совпадать с логинами в AD, ALD Pro или на сервере Staffcop. При несовпадении аутентификация через RADIUS завершится ошибкой.

Multifactor

Пользователя в Multifactor можно добавить на вкладке Пользователи.

../_images/two_factor_auth_1.png

Настройка сети

Если вы используете службу каталогов, настройте сетевые параметры сервера Staffcop. Замените тестовые IP-адреса и домены в примерах на реальные.

  1. Добавьте параметры MS AD / ALD Pro в файл конфигурации сетевых интерфейсов. Пример содержимого файла: /etc/netplan/00-installer-config.yaml:

network:
  ethernets:
    ens33:
      dhcp4: true
      dhcp-identifier: mac
      dhcp4-overrides:
        use-dns: false
      nameservers:
        addresses: [10.10.10.10]
        search: [domain.local]
  version: 2
  1. Добавьте параметры MS AD / ALD Pro в файл /etc/resolv.conf.

nameserver 10.10.10.10
options edns0 trust-ad
search domain.local

Развертывание адаптера

Контур.ID

RADIUS-адаптер RadiusProxy устанавливается на сервер Staffcop.

Пользователь Active Directory или ALD Pro

  1. Установите RadiusProxy на сервере Staffcop по официальной документации. В настройках конфигурации ресурса Radius-адаптера в качестве Основного фактора выберите Active Directory:

../_images/two_factor_auth_2.png ../_images/two_factor_auth_3.png
  1. Включите 2FA на сервере Staffcop.

    1. Добавьте в /etc/staffcop/config настройки:

    AUTHENTICATION_BACKENDS = (
        'accounts.backends.Radius2FABackend',
        'django.contrib.auth.backends.ModelBackend',
        'active_directory.backend.SimpleBackend',
    )
    
    RADIUS_SERVER = 'localhost'           # адрес Radius-сервера
    RADIUS_PORT = 1812                    # порт Radius-сервера
    RADIUS_SECRET = 'test-shared-secret'  # общий секретный ключ, должен совпадать с ключом на Radius-сервере
    RADIUS_RETRIES = 1                    # количество попыток получить ответ от Radius-сервера
    RADIUS_TIMEOUT = 40                   # таймаут ожидания ответа от Radius-сервера, в секундах
    
    1. Перезагрузите сервер:

    staffcop restart
    

Пользователь — локальный администратор Staffcop

  1. В файле настройки ресурса Radius-адаптера измените значение параметра FirstFactorSource на None.

  2. Измените настройки 2FA на сервере Staffcop.

    1. Измените файл /etc/staffcop/config:

    AUTHENTICATION_BACKENDS = (
        'accounts.backends.Radius2FABackend',
        'django.contrib.auth.backends.ModelBackend',
    )
    
    RADIUS_SERVER = 'localhost'           # адрес Radius-сервера
    RADIUS_PORT = 1812                    # порт Radius-сервера
    RADIUS_SECRET = 'test-shared-secret'  # общий секретный ключ, должен совпадать с ключом на Radius-сервере
    RADIUS_RETRIES = 1                    # число попыток получить ответ от Radius-сервера
    RADIUS_TIMEOUT = 40                   # таймаут ожидания ответа от Radius-сервера, в секундах
    
    1. Перезагрузите сервер:

    staffcop restart
    

Multifactor

В этом разделе вы настроите двухфакторную аутентификацию через сервис Multifactor. Radius-адаптер устанавливается на сервере с Multifactor. Второй фактор подтверждается одним из способов: приложение Multifactor или Яндекс.Ключ.

Пользователь Active Directory

  1. Установите Radius-адаптер на сервере с Multifactor по официальной инструкции. Пример содержимого файла /opt/multifactor/radius/multifactor-radius-adapter.dll.config:

<configuration>
  <appSettings>
    <add key="adapter-server-endpoint" value="0.0.0.0:1812"/>
    <add key="multifactor-api-url" value="https://api.gos.multifactor.ru"/>
    <add key="multifactor-api-timeout" value="00:00:65"/>
    <add key="logging-level" value="Debug"/>
    <add key="multifactor-nas-identifier" value="rs_test000000000000000000000000"/>
    <add key="multifactor-shared-secret" value="test-multifactor-secret"/>
    <add key="first-factor-authentication-source" value="ActiveDirectory"/>
    <add key="active-directory-domain" value="ldap://10.0.0.10/DC=test,DC=local"/>
    <add key="radius-client-ip" value="10.10.10.10"/>
    <add key="radius-shared-secret" value="test-shared-secret"/>
  </appSettings>
</configuration>
  1. Включите 2FA на сервере Staffcop.

  1. Добавьте в /etc/staffcop/config настройки:

AUTHENTICATION_BACKENDS = (
    'accounts.backends.Radius2FABackend',
    'django.contrib.auth.backends.ModelBackend',
    'active_directory.backend.SimpleBackend',
)

RADIUS_SERVER = '10.10.10.10'         # адрес Radius-сервера
RADIUS_PORT = 1812                    # порт Radius-сервера
RADIUS_SECRET = 'test-shared-secret'  # общий секретный ключ, должен совпадать с ключом на Radius-сервере
RADIUS_RETRIES = 1                    # число попыток получить ответ от Radius-сервера
RADIUS_TIMEOUT = 40                   # таймаут ожидания ответа от Radius-сервера, в секундах
  1. Перезагрузите сервер:

staffcop restart

Пользователь — локальный администратор Staffcop

  1. Установите адаптер на сервере с Multifactor по официальной инструкции. Пример содержимого файла /opt/multifactor/radius/multifactor-radius-adapter.dll.config:

<configuration>
  <appSettings>
    <add key="adapter-server-endpoint" value="0.0.0.0:1812"/>
    <add key="multifactor-api-url" value="https://api.gos.multifactor.ru"/>
    <add key="multifactor-api-timeout" value="00:00:65"/>
    <add key="logging-level" value="Debug"/>
    <add key="multifactor-nas-identifier" value="rs_test000000000000000000000000"/>
    <add key="multifactor-shared-secret" value="test-multifactor-secret"/>
    <add key="first-factor-authentication-source" value="None"/>
    <add key="radius-client-ip" value="10.10.10.10"/>
    <add key="radius-shared-secret" value="test-shared-secret"/>
  </appSettings>
</configuration>
  1. Включите 2FA на сервере Staffcop.

  1. Добавьте в /etc/staffcop/config настройки:

AUTHENTICATION_BACKENDS = (
    'accounts.backends.Radius2FABackend',
    'django.contrib.auth.backends.ModelBackend',
)

RADIUS_SERVER = '10.10.10.10'         # адрес Radius-сервера
RADIUS_PORT = 1812                    # порт Radius-сервера
RADIUS_SECRET = 'test-shared-secret'  # общий секретный ключ, должен совпадать с ключом на Radius-сервере
RADIUS_RETRIES = 1                    # количество попыток получить ответ от Radius-сервера
RADIUS_TIMEOUT = 40                   # таймаут ожидания ответа от Radius-сервера, в секундах
  1. Перезагрузите сервер:

staffcop restart

Последнее обновление: 12.11.26