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

Настройка двухфакторной аутентификации OpenVPN Access Server

Общая информация

Защитите VPN подключения OpenVPN Access Server вторым фактором аутентификации с помощью MFA решения сервиса Мультифактор.

Возможные способы аутентификации:

  • Мобильное приложение MultiFactor
  • Telegram
  • Звонок (нужно принять вызов и нажать #)
  • Аппаратные OTP токены
  • Приложения OTP: Google Authenticator или Яндекс.Ключ

Вариант интеграции с Мультифактор зависит от вашего поставщика учётных записей:

  1. Поставщик учётных записей – Active Directory
    Интеграция по RADIUS-протоколу.
  2. Поставщик учётных записей – локальная директория учётных записей OpenVPN AS
    Интеграция с помощью Post-auth аутентификации.

Видео-презентация

Схема работы

 

  1. Пользователь подключается к VPN, вводит логин и пароль учетной записи в клиенте OpenVPN Connect;
  2. OpenVPN Access Server подтверждает корректность логина и пароля в Active Directory через Multifactor Radius Adapter;
  3. Мультифактор запрашивает второй фактор аутентификации: push в мобильном приложении или Telegram; одноразовый OTP или СМС-код; звонок, на который необходимо ответить и нажать #;
  4. Пользователь подтверждает запрос и подключается к VPN.

I. RADIUS интеграция

Используйте этот вариант интеграции, если ваш поставщик учётных записей – Active Directory.

Первые шаги

  1. Создайте аккаунт и войдите в административную панель Мультифактор.
  2. В разделе ресурсы кликните Добавить ресурс. В появившемся списке выберите Другой в разделе Сетевой экран. Заполните необходимые поля для того, чтобы получить параметры NAS Identifier и Shared Secret. Эти параметры потребуются для завершения настройки.
  3. Загрузите, установите и настройте компонент Multifactor RADIUS Adapter (Windows, Linux).

Настройка OpenVPN Access Server

  1. Зайдите в административную панель OpenVPN Access Server;
  2. В разделе Authentication, перейдите в подраздел RADIUS и кликните Use RADIUS;
  3. В разделе RADIUS Authentication Method выберите метод аутентификации PAP;
  4. В разделе RADIUS Settings укажите адрес RADIUS-компонента и Shared Secret из настроек компонента;
  5. Кликните Save Settings для сохранения настроек;
  6. Чтобы изменения вступили в силу кликните Update Running Server.
примечание

Убедитесь, что в списке только один RADIUS сервер, иначе OpenVPN AS будет отправлять запросы во все поочередно.

 

II. Post-auth интеграция

Используйте этот вариант интеграции, если ваш поставщик учётных записей – локальная директория учётных записей OpenVPN AS.

Первые шаги

  1. Создайте аккаунт и войдите в административную панель Мультифактор.
  2. В разделе ресурсы кликните Добавить ресурс. В появившемся списке выберите Другой в разделе Сетевой экран. Заполните необходимые поля для того, чтобы получить параметры NAS Identifier и Shared Secret. Эти параметры потребуются для завершения настройки.
  3. В случае аутентификации локальных пользователей OpenVPN AS создайте соответствующих пользователей в системе Мультифактор. Перейдите в раздел пользователи и кликните Добавить пользователя или Импортировать.
  4. Загрузите Post-auth плагин Мультифактор для OpenVPN Access Server.

Настройка Post-auth плагина

  1. Откройте файл post_auth_multifactor.py c помощью текстового редактора. В файле необходимо задать значения параметрам NAS_IDENTIFIER и SHARED_SECRET.

    ...
    NAS_IDENTIFIER = ''
    SHARED_SECRET = ''
    HOST = 'api.multifactor.ru'
    ...

    Сохраните изменения и закройте текстовый редактор.

  2. Разместите скрипт post_auth_multifactor.py в директории /usr/local/openvpn_as/scripts/ на сервере OpenVPN Access Server.

    $ scp post_auth_multifactor.py \
    <SSH_USER>@<AS_HOST>:/home/<SSH_USER>/post_auth_multifactor.py

    Замените <SSH_USER> и <AS_HOST> на фактические имя пользователя и IP-адрес сервера. Сначала загрузите скрипт в домашнюю директорию, т.к. по умолчанию у административного пользователя OpenVPN AS нет прав на запись без sudo.

    Если сервер был развернут с помощью средств виртуализации Microsoft Hyper-V, VMWare ESXi, Amazon AWS, Microsoft Azure, Google Cloud Platform и других, SSH вход может быть защищён приватным ключом. В таком случае, задайте путь к ключу с помощью опции -i <PATH_TO_PRIVATE_KEY>.

  3. Откройте новую SSH-сессию.

    $ ssh <SSH_USER>@<AS_HOST>
  4. Переместите post_auth_multifactor.py в директорию со скриптами.

    $ sudo mv post_auth_multifactor.py /usr/local/openvpn_as/scripts/ \
    post_auth_multifactor.py
  5. Убедитесь, что файл является исполняемым.

    $ sudo chmod a+x /usr/local/openvpn_as/scripts/post_auth_multifactor.py

Установка Post-auth плагина

  1. Задайте post_auth_multifactor.py Post-auth скриптом по умолчанию с помощью инструмента командной строки sacli. Если у SSH-пользователя нет прав на выполнение sudo, задайте имя административного пользователя из веб-консоли с помощью опции -a <USER>.

    $ sudo /usr/local/openvpn_as/scripts/sacli \
    --key "auth.module.post_auth_script" \
    --value_file="/usr/local/openvpn_as/scripts/post_auth_multifactor.py" \
    ConfigPut
  2. Запустите сервисы.

    $ sudo /usr/local/openvpn_as/scripts/sacli start

Тестирование входа

После настройки и установки Post-auth плагина Мультифактор попробуйте подключиться к VPN с помощью веб-интерфейса или клиента OpenVPN Connect.

Если установка прошла успешно, клиент запросит второй фактор для аутентификации с помощью SMS или OTP-кода.

  • Для аутентификации по SMS или OTP-коду введите код в отдельном окне ввода OpenVPN Connect.
  • Для аутентификации с помощью мобильного приложения Мультифактор (iOS, Android) или Telegram нажмите Да, это я в уведомлении с запросом подтверждения аутентификации.

Журналы

Журналы доступны в файлах /var/log/syslog и /var/log/openvpnas.log.

Решение проблем

Причины наиболее частных проблем с аутентификацией:

  1. Вы используете bootstrap-пользователя openvpn, для которого игнорируются правила post-auth аутентификации. Пользователя рекомендуется отключать после полной настройки сервера. Инструкции по отключению;
  2. Вы используете auto-login профиль, который игнорирует правила Post-auth;
  3. Логины пользователей в админ-панели Multifactor не соответствуют логинам локальных пользователей в OpenVPN Access Server;
  4. В файле post_auth_multifactor.py неверно указаны NAS Identifier и Shared Secret;
  5. Плагин не имеет прав на исполнение a+x;
  6. Плагин некорректно установлен;
  7. Сервер не был перезапущен после установки плагина.

Смотрите также: