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


Общие сведения

Avanpost FAM позволяет обеспечить 2FA для пользователей, выполняющих подключение при помощи клиента OpenVPN. В инструкции описывается настройка 2FA для OpenVPN с использованием RADIUS-сервера Avanpost FAM, pam_radius модуля и различные сценарии использования 2FA для OpenVPN (как для бесплатной версии OpenVPN Community Edition, так и для платной версии OpenVPN Access Server).

Сценарий взаимодействия OpenVPN с Avanpost FAM для аутентификации:

  1. Пользователь подключается к VPN, вводит логин и пароль в OpenVPN. OpenVPN подключается к VPN-серверу.
  2. OpenVPN по протоколу RADIUS подключается к службе RADIUS Avanpost FAM, выполняет проверку логина и пароля по одному из настроенных методов аутентификации RADIUS-протокола.
  3. Если для OpenVPN настроена проверка дополнительных факторов аутентификации, то OpenVPN запрашивает у пользователя проверку этих факторов в режиме диалога или в фоновом режиме.
  4. После успешной проверки аутентификаторов в соответствии с настроенным сценарием аутентификации пользователь успешно подключен к VPN.

Для OpenVPN в качестве второго фактора (2FA) возможно использование следующих методов аутентификации:

Через клиент OpenVPN доступна первичная настройка аутентификаторов для тех пользователей, для которых настройка не была выполнена:

  • Мобильное приложение Avanpost Authenticator;
  • TOTP;
  • SMS;
  • E-mail.

Для выполнения настройки 2FA в OpenVPN в соответствии с настоящей инструкцией должны быть выполнены следующие предварительные условия:

  1. Установлен в сети OpenVPN, настроен VPN-сервера.
  2. Установлен АРМ с клиентом OpenVPN, который может выполнить подключение по VPN через OpenVPN.
  3. Установлен в сети компонент Avanpost FAM Server.

Если необходима аутентификация через:

  1. Мобильное приложение Avanpost Authenticator, то установить компонент Avanpost FAM Mobile Services.
  2. Мобильное приложение SafeTech PayControl, то установить сервер SafeTech PayControl.
  3. SMS, то настроить подключение к внешнему SMS-шлюзу, который предоставляет услугу доставки SMS-сообщений.
  4. E-mail, то настроить подключение к SMTP-шлюзу, который обеспечивает доставку почтовых сообщений.
  5. Telegram, то настроить подключение к Telegram Bot API.

Для выполнения настройки необходимо наличие следующих параметров:

  • IP-адрес и порт RADIUS-интерфейса компонента Avanpost FAM Server;
  • IP-адрес сервера OpenVPN, с которого будет осуществляться отправка RADIUS-запросов;
  • планируемое уникальное в рамках RADIUS-сервера Avanpost FAM значение NAS-Identifier;
  • планируемый разделяемый RADIUS-секрет.

Настройка OpenVPN Community Edition

В данном разделе рассматривается настройка OpenVPN Community Edition (бесплатная версия с открытым исходным кодом) для тестирования. 

Настройка выполняется следующим образом (действия рекомендуется делать от имени суперпользователя):

  1. Выполнить установку пакетов OpenVPN и libpam-radius-auth (PAM-модуль, позволяет Linux-машине функционировать в качестве RADIUS-клиента), используя команду:
    sudo apt install openvpn libpam-radius-auth
  2. Запустить скрипт для автоматической настройки OpenVPN (создание сертификатов, конфигурационного файла OpenVPN-сервера, настройка портов и внешнего адреса для дальнейшего подключения):
    1. Подключиться к серверу по SSH.
    2. Скачать скрипт установки OpenVPN и запустить его.
      wget https://git.io/vpn -O openvpn-install.sh
      bash openvpn-install.sh
    3. Осуществить настройку, ответив на задаваемые вопросы.
  3. Файл для подключения, созданный скриптом в папке суперпользователя после завершения настройки, перенести на то устройство, на котором будет тестироваться подключение.
  4. Протестировать корректность подключения к VPN, чтобы удостовериться в работоспособности скрипта. Следует отредактировать конфигурационный файл, созданный в результате работы скрипта. Файл формируется в директории /root на стороне клиента и имеет расширение *.ovpn. В конец файла требуется добавить:
    auth-user-pass
  5. Из файла конфигурации OpenVPN-сервера (путь к расположению: /etc/openvpn/server/server.conf) необходимо удалить следующие строки:
    user nobody
    group nogroup
  6. Найти расположение плагина openvpn-plugin-auth-pam.so (может отличаться в зависимости от операционной системы), используя команду:
    find /usr/lib -name "openvpn-plugin-auth-pam.so"
  7. В конец конфигурационного файла OpenVPN-сервера (/etc/openvpn/server/server.conf) необходимо добавить плагин openvpn-pluginauth-pam.so командой (с указанием актуального пути до файла):
    plugin /usr/lib/openvpn/openvpn-plugin-auth-pam.so "openvpn login USERNAME password PASSWORD"
  8. Создать файл /etc/pam.d/openvpn, используя команду (здесь и далее в подобных случаях используется текстовый редактор vi, но допускается использование другого редактора):
    sudo vi /etc/pam.d/openvpn
  9. Добавить в созданный файл следующие строки:
    auth sufficient pam_radius_auth.so
    account sufficient pam_permit.so
    session sufficient pam_permit.so
  10. Отредактировать информацию в файле /etc/pam_radius_auth.conf 
    1. Открыть файл командой :
      sudo vi /etc/pam_radius_auth.conf
    2. Добавить в файл следующие строки 
      RADIUS_SERVER_IP:RADIUS_SERVER_PORT SHARED_SECRET TIMEOUT
      127.0.0.1:1812 Avanp0st 120
      ПараметрЗначение
      RADIUS_SERVER_IPIP-адрес RADIUS-сервера.
      RADIUS_SERVER_PORTПорт RADIUS-сервера. По умолчанию: 1812 (из файла /opt/idp/config.toml).
      SHARED_SECRET

      Секрет приложения, который будет использоваться при настройке на стороне FAM Server.

      Настройка секрета выполняется по следующему пути: режим "Приложения" административной консоли FAM Server → Профиль настроенного RADIUS-приложение → Вкладка "Настройки" → Разделяемые секреты RADIUS .

      Более подробно о разделяемых секретах в статье Настройка разделяемых секретов RADIUS.

      TIMEOUTТаймаут ожидания ответа от RADIUS-сервера в секундах.

      Пример файла /etc/pam_radius_auth.conf:

      # server[:port] shared_secret timeout (s) source_ip vrf
      127.0.0.1 secret 3
      #other-server other-secret 5 192.168.1.10 vrf-blue
      #[2001:0db8:85a3::4]:1812 other6-secret 3 [2001:0db8:85a3::3] vrf-red
      #other-other-server other-other-secret 5 0 vrf-blue
      10.10.181.111:1812 Avanp0st2024 120
      Чтобы исключить вероятность опроса каждого сервера из файла по очереди, следует обязательно закомментировать неиспользуемые строки с адресами серверов. 
  11. Перезапустить OpenVPN-сервер:
    systemctl restart openvpn-server@server

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

В данном разделе рассматривается настройка OpenVPN Access Server (платная enterprise-версия продукта). 

Настройку OpenVPN Access Server следует выполнять следующим образом:

  1. Войти в панель администратора OpenVPN Access Server.

  2. Перейти в раздел “Authentication” → “Settings”

  3. В разделе "Default Authentication System" выбрать “RADIUS” (если RADIUS-протокол не был выбран ранее) и нажать “Save settings” для сохранения изменений.

  4. Нажать “Update Running Server” для применения изменений.

  5. Перейти в раздел “Authentication”, подраздел "RADIUS".

  6. Заполнить настройки в блоке “RADIUS Settings” и “RADIUS Server”.
    ПараметрОписание
    Hostname or IP AddressIP-адрес RADIUS-сервера.
    Shared SecretСекрет приложения, который будет использоваться при настройке на стороне FAM Server.
    Authentication PortПорт RADIUS-сервера. По умолчанию: 1812
    Accounting PortПорт RADIUS-сервера, использующийся для передачи информации об учете сетевых ресурсов и активности пользователей.
  7. Сохранить настройку, нажав кнопку “Save Settings”.
  8. Обновить сервер, нажав “Update Running Server”.

Настройка на стороне Avanpost FAM

На стороне административной консоли Avanpost FAM необходимо выполнить следующие настройки:

  1. Открыть административную консоль Avanpost FAM Server и зайти во вкладку создания приложения, нажав кнопку "Добавить приложение" режима "Приложения".
  2. На этапе "Основные настройки" требуется ввести наименование и выбрать тип "RADIUS" (более подробно процесс создания и управления приложениями описан в разделах Управление приложениями и Управление RADIUS-приложениями).
  3. На этапе "Настройки интеграции" заполнить указанные поля в соответствии с таблицей.
    ПараметрЗначение
    IP-адрес как идентификаторВключить флаг.
    NAS IdentifierNASIDENTIFIER сервера OpenVPN, заданный ранее в конфигурационном файле pam_radius-модуля. В данном примере NAS Identifier = openvpn

    Протокол аутентификации 

    PAP
    Разрешить Access-Challenge

    В зависимости от типа используемого OpenVPN:

    • Выключен – для OpenVPN Community Edition (OpenVPN с открытым исходным кодом не поддерживает Access-Challenge);
    • Включен – для OpenVPN Access Server.
  4. Создать и настроить приложение с типом RADIUS.
  5. На этапе "Настройки аутентификации" выбрать факторы аутентификации приложения, установив переключатели напротив тех или иных факторов.
  6. На этапе "Завершение" следует сохранить приложение, делая его активным сразу после создания.
  7. Настроить Разделяемые секреты RADIUS:
    1. Перейти в профиль приложения, найдя созданное RADIUS-приложение OpenVPN в реестре режима "Приложения".
    2. Войти в раздел "Настройки" профиля приложения и установить адрес сервера сетевого доступа (NAS IP), если он не определен.
    3. Перейти в раздел "Разделяемые секреты RADIUS".
    4. Создать новый разделяемый секрет клиента RADIUS:
      1. Нажать "Добавить" в реестре секретов;
      2. Ввести название клиентского приложения "OpenVPN".
      3. Ввести диапазон IP-адрес с маской подсети сервера OpenVPN или либо подсеть (диапазон IP-адресов), из которой обращается OpenVPN.
      4. Ввести секрет (должен соответствовать секрету в параметра SHARED_SECRET в файле /etc/pam_radius_auth.conf). в соответствии с требованиями к RADIUS-секретам и нажать "Сохранить".
  8. Создать группу (если таковая отсутствует), пользователи которой будут в приложении OpenVPN. Для этого необходимо нажать кнопку "Добавить группу" в режиме "Группы" и в открывшейся вкладке ввести запрашиваемые параметры (более подробно о настройке группы описано в разделе Управление доступом).
  9. Добавить в группу пользователей, которые будут аутентифицироваться при помощи OpenVPN (более подробно о добавлении пользователей в разделе Управление пользователями).
  10. Предоставить группе доступ к созданному приложению: в профиле группы зайти во вкладку "Приложения", найти созданное RADIUS-приложение (OpenVPN в данном примере) и перевести переключать напротив него в положение .

Проверка настройки OpenVPN

Корректность настройки OpenVPN (как для бесплатной версии OpenVPN Community Edition, так и для платной версии OpenVPN Access Server) осуществляется следующим образом:

  1. Запустить клиент OpenVPN.
  2. Ввести логин и пароль, запрошенный программой.
  3. Если требуется, выполнить дополнительную аутентификацию в соответствии с настроенным сценарием аутентификации.

  4. Если требуется, выполнить привязку аутентификатора в соответствии с настроенным сценарием.

В результате выполненных действий пользователь должен успешно подключиться к VPN.

Сценарии использования

Загрузка пользователей OpenVPN из домена (LDAP)

Чтобы пользователи из домена смогли проходить 2FA при подключении к OpenVPN, необходимо использовать встроенную в Avanpost FAM функциональность интеграции с LDAP-каталогами (Microsoft Active Directory, FreeIPA, 389Directory, openldap и т. д.). В рамках этой функции существует возможность настроить LDAP-фильтры, которые позволят обеспечить загрузку в Avanpost FAM только тех пользователей, которые будут использовать OpenVPN. Таким образом можно подключить несколько доменов.

Контроль попыток аутентификации пользователей к OpenVPN через Avanpost FAM

Для контроля попыток аутентификации необходимо использовать журнал событий безопасности, доступный в административном интерфейсе системы и посредством утилиты syslog.

Управление доступом пользователей к OpenVPN через Avanpost FAM

Для предоставления доступа пользователю его необходимо включить в группу, которая имеет доступ к созданному приложению. Также можно реализовать автоматическое включение/исключение пользователя из группы в рамках синхронизации с LDAP-каталогом.

Для отзыва доступа у пользователя необходимо исключить его из группы, которая имеет доступ к созданному приложению.

Аутентификация в OpenVPN с 2FA при помощи push-подтверждения в мобильном приложении-аутентификаторе Avanpost Authenticator

Для OpenVPN доступно использование push-аутентификации через мобильное приложение Avanpost Authenticator:

Управление доступом пользователей к OpenVPN через домен (LDAP)

Avanpost FAM в рамках интеграции с LDAP-каталогом (Microsoft Active Directory, FreeIPA, 389Directory, openldap и т. д.) обеспечивает автоматизацию управления членством пользователей в группах Avanpost FAM путём синхронизации членства пользователей в группах Avanpost FAM на основе членства пользователей домена в доменных группах.

Управление вторым фактором (2FA) для OpenVPN через Avanpost FAM

Для настройки второго фактора, который будет использоваться для приложения OpenVPN, необходимо перейти в административной консоли в карточку приложения на вкладку «MFA». В качестве первого шага аутентификации необходимо указать метод – Password. В качестве второго шага можно выбрать один из следующих факторов:

Управление вторым фактором (2FA) для отдельных групп сотрудников, подключающихся к OpenVPN, через Avanpost FAM

Необходимо в административной консоли Avanpost FAM перейти в карточку группы на вкладку «MFA» и настроить дополнительный сценарий аутентификации. Пользователи, входящие в указанную группу, будут проходить аутентификацию с использованием второго фактора, заданного на указанной вкладке. Таким образом можно определить специфический сценарий 2FA для администраторов и других привилегированных пользователей, подключающихся к OpenVPN.

Аутентификация в OpenVPN пользователя без настроенного второго фактора (2FA)

Если у пользователя не привязан аутентификатор, обязательный для подключения к OpenVPN, то система отклонит запрос на аутентификацию. Пользователю потребуется обратиться в систему с поддержкой функции Inline-привязки либо воспользоваться личным кабинетом. После выполнения привязки аутентификатора система запросит у пользователя аутентификацию с использованием этого же аутентификатора.

Изменение метода проверки пароля в рамках RADIUS для OpenVPN

Для OpenVPN доступны следующие RADIUS-методы проверки пароля RADIUS-сервера Avanpost FAM:

  • PAP;
  • CHAP;
  • MSCHAPv2.

Метод проверки пароля MSCHAPv2 требует наличия включенного на стороне OpenVPN флага Microsoft CHAPv2 Capable. 

Обсуждение