Перейти к содержанию

Двухфакторная аутентификация для OpenVPN

Последнее обновление 21 сентября 2026Открыть как Markdown

Описание

При подключении к OpenVPN пользователи проходят двухэтапную аутентификацию: вводят логин и пароль (первый фактор) и подтверждают вход вторым фактором.

Для интеграции используется PAM-адаптер Simple2FA, который устанавливается на сервер OpenVPN и взаимодействует с локальным инстансом Simple2FA по HTTPS. Если на сервере уже используется стандартный модуль pam_radius, его можно подключить к встроенному RADIUS-серверу Simple2FA вместо адаптера — см. статью Linux SSH и sudo через pam_radius.

Схема работы:

  1. Пользователь подключается к OpenVPN и вводит логин и пароль.
  2. OpenVPN передаёт учётные данные в PAM-адаптер Simple2FA.
  3. PAM-адаптер отправляет логин и пароль в локальный инстанс Simple2FA по HTTPS.
  4. Локальный инстанс Simple2FA проверяет первый фактор через Active Directory, LDAP или Keycloak.
  5. При успешной проверке первого фактора локальный инстанс инициирует проверку второго фактора.
  6. Пользователь подтверждает вход.
  7. После успешной проверки второго фактора OpenVPN устанавливает VPN-соединение.

Подготовка в Simple2FA

Войдите в панель администратора локального инстанса, перейдите в раздел «Настройка ресурсов» и создайте новый ресурс:

Поле Значение
Название OpenVPN (или любое удобное)
Описание Краткое описание ресурса
Проверка первого фактора Включена

В панели управления Simple2FA откройте ресурс OpenVPN и скопируйте:

  • API key ресурса
  • адрес бэкенда локального инстанса (local-backend), а не панели администратора

Требования

  • ОС: Linux на x86_64 или aarch64, glibc 2.28 или новее (Astra Linux 1.7+, Debian 10+, Ubuntu 20.04+, RHEL 8+)
  • OpenVPN: версии 2.5 и выше
  • Наличие PAM в системе
  • Доступ сервера OpenVPN к бэкенду локального инстанса по HTTPS (TCP 443)
  • Корректное системное время (NTP) на сервере OpenVPN и на бэкенде локального инстанса
  • Права root для установки PAM-адаптера и изменения PAM-конфигурации

Установка PAM-адаптера

1) Установите PAM-адаптер

  • Распакуйте архив комплекта поставки на сервере OpenVPN и запустите установщик от root: sudo ./install.sh.
  • Установщик определяет архитектуру хоста, копирует модуль в каталог модулей PAM, создаёт /etc/simple2fa и /var/log/simple2fa и кладёт шаблон конфигурации.
  • Если установщик предупреждает о второй копии simple2fa_pam.so в системе, удалите лишний файл.

2) Установите OpenVPN PAM-plugin

  • Установите пакет OpenVPN PAM-plugin и необходимые PAM-библиотеки.
  • Для Debian plugin обычно располагается по пути:

    /usr/lib/openvpn/plugins/openvpn-plugin-auth-pam.so

3) Создайте конфигурацию Simple2FA

Адаптер настраивается файлом /etc/simple2fa/s2fa_conf.toml — скопируйте шаблон s2fa_conf.toml.example, который положил установщик, и отредактируйте его (иной путь задаётся аргументом conf= в строке PAM). В конфигурации указываются:

  • ApiKey — ключ ресурса OpenVPN (протокол HTTPS), созданного в панели Simple2FA. Ключ RADIUS-ресурса и ключ организации не подходят.
  • Simple2faUrl — базовый адрес бэкенда локального инстанса (local-backend), без пути API. У бэкенда свой адрес, отдельный от адреса панели администратора: при установке инстанса они задаются как DOMAIN_API и DOMAIN_ADMIN. Схема должна совпадать с той, по которой бэкенд опубликован.
  • SendPassword — отправлять ли пароль в Simple2FA. При true первый фактор проверяется Simple2FA по каталогу организации; при false пароль проверяется другим PAM-модулем, а Simple2FA выполняет только проверку второго фактора.
  • Method — способ подтверждения: auto, push, telegram, max или otp. Для OpenVPN выбирайте способ, не требующий ввода кода: клиент OpenVPN передаёт только логин и пароль, отдельный запрос кода недоступен.
  • Debug — подробное логирование для диагностики. В рабочем режиме отключить.
  • SkipCertValidation — отключение проверки TLS-сертификата локального инстанса. Использовать только на тестовых стендах.

Полный список параметров со значениями по умолчанию — в статье Linux SSH.

Пример файла конфигурации:

ApiKey = "<ключ ресурса>"
Simple2faUrl = "https://<адрес бэкенда локального инстанса>"
SendPassword = true
Method = "push"
Debug = false
SkipCertValidation = false

Файл содержит ключ ресурса

Ограничьте доступ к нему правами root.

4) Настройте PAM для OpenVPN

В файл /etc/pam.d/openvpn добавьте строку PAM-адаптера Simple2FA:

auth     requisite    simple2fa_pam.so conf=/etc/simple2fa/s2fa_conf.toml
account  sufficient   pam_permit.so
session  sufficient   pam_permit.so

5) Настройте OpenVPN

В конфигурации OpenVPN подключается PAM-plugin и включается поддержка deferred PAM authentication.

6) Перезапустите OpenVPN

После применения конфигурации перезапустите сервис OpenVPN.

Проверка работы

  • Подключитесь к OpenVPN
  • Введите логин и пароль пользователя
  • Дождитесь запроса второго фактора
  • Подтвердите вход вторым фактором
  • После успешной проверки VPN-соединение будет установлено

Результат каждой попытки входа доступен в панели администратора, в разделе «Попытки авторизации».

Альтернатива: подключение через pam_radius

Если на сервере OpenVPN уже используется стандартный модуль pam_radius или установка стороннего ПО запрещена, второй фактор можно подключить без PAM-адаптера — через тот же OpenVPN PAM-plugin к встроенному RADIUS-серверу локального инстанса Simple2FA. В этом случае в Simple2FA создаётся ресурс с протоколом RADIUS, а в конфигурации pam_radius указываются его NAS ID и Shared Secret.

Настройка модуля описана в статье Linux SSH и sudo через pam_radius; строка pam_radius_auth.so добавляется в /etc/pam.d/openvpn.

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

Связаться с нами

Подберём сценарий под вашу инфраструктуру, рассчитаем стоимость и запустим бесплатный пилот на 30 дней.

Отправляя заявку, вы соглашаетесь на обработку персональных данных.