Настройка 2FA для OpenVPN - Avanpost FAM/MFA+

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

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

Сценарий взаимодействия 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.

Настройка

В рамках данной инструкции предполагается первичная настройка RADIUS-сервера на стороне OpenVPN или замена ранее используемого RADIUS-сервера на RADIUS-сервер Avanpost FAM. 

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

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

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

  1. В конец конфигурационного файла /etc/openvpn/server/server.conf OpenVPN-сервера добавить плагин для аутентификации.

    OpenVPN-сервер сверяет внутреннюю базу пользователей ОС и отправляет запрос на аутентификацию на Radius-сервер. Путь к плагину может отличаться в зависимости от операционной системы.

    plugin /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so openvpn
  2. Создать конфигурационный файл модуля аутентификации.

    sudo vi /etc/pam.d/openvpn
    
  3. Вписать в конфигурационный файл модуля аутентификации следующий блок кода:

    Требуется аутентификация в ОСНе требуется аутентификация в ОС
    auth    required pam_radius_auth.so client_id=NAS-IDentifier
    auth    substack     password-auth
    account substack     password-auth

    , где

    NAS-IDentifier должен соответствовать настройки приложения FAM.

    auth    sufficient  pam_radius_auth.so client_id=NAS-IDentifier
    account sufficient  pam_permit.so
    session sufficient  pam_permit.so

    , где

    NAS-IDentifier должен соответствовать настройки приложения FAM.

     

  4. Установить необходимые пакеты:

    sudo apt install openvpn libpam-radius-auth
  5. Отредактировать файл /etc/pam_radius_auth.conf и указать IP-адрес RADIUS сервера:

    radius-server.ru   shared_secret   60

    , где

    • radius-server.ru – адрес RADIUS-сервера;
    • shared_secret - секрет RADIUS-сервера;
    • 60 – таймаут (задаётся в секундах)
  6. Перезапустить OpenVPN-сервер.

    $ sudo systemctl restart openvpn-server@server

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

  1. Создать и настроить приложение с типом RADIUS.

2. Указать для него в карточке приложения на вкладке «Настройки»:

    1. Флаг IP-адрес как идентификатор – выключен.
    2. NAS Identifier – NASIDENTIFIER сервера OpenVPN, заданный ранее в конфигурационном файле pam_radius-модуля.
    3. Протокол аутентификации – CHAP.
    4. Флаг Разрешить Access-Challenge – выключен.

3. В разделе «Разделяемые секреты RADIUS» создать RADIUS-секрет, указав для него в IP-адрес с маской подсети сервера OpenVPN либо подсеть (диапазон IP-адресов), из которой обращается OpenVPN.

4. Создать и настроить группу доступа, добавив в неё созданное приложение и пользователей, которые должны иметь доступ к приложению.

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

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

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

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

Настройка openVPN для тестирования

Все действия рекомендуется делать от имени суперпользователя.

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

wget https://git.io/vpn -O openvpn-install.sh
bash openvpn-install.sh

2. На этом шаге рекомендуется протестировать подключение к VPN, чтобы удостовериться в работоспособности скрипта.
3. Из файла конфигурации OpenVPN-сервера (расположен по адресу /etc/openvpn/server/server.conf) необходимо удалить следующие строки:

user nobody
group nogroup

4. В конец конфигурационного файла OpenVPN-сервера (/etc/openvpn/server/server.conf) необходимо добавить плагин "openvpn-pluginauth-pam.so" следующем образом:

plugin /usr/lib/openvpn/openvpn-plugin-auth-pam.so "openvpn login USERNAME password PASSWORD"

Путь к файлу "openvpn-plugin-auth-pam.so" может отличаться в зависимости от ОС, перед добавление рекомендуется проверить точный путь.
5. Далее необходимо создать файл /etc/pam.d/openvpn:

sudo vi /etc/pam.d/openvpn

И добавить в него строки:

auth sufficient pam_radius_auth.so
account sufficient pam_permit.so
session sufficient pam_permit.so

6. Далее необходимо отредактировать информацию в файле /etc/pam_radius_auth.conf , открыв его командой:

sudo vi /etc/pam_radius_auth.conf

И добавить строки:

RADIUS_SERVER_IP:RADIUS_SERVER_PORT SHARED_SECRET TIMEOUT
127.0.0.1:1812 Avanp0st 120

Где:

ПараметрЗначение
RADIUS_SERVER_IPIP-адрес сервера RADIUS
RADIUS_SERVER_PORTport RADIUS-сервера, по умолчанию 1812 (из файла /opt/idp/config.toml)
SHARED_SECRETсекрет из FAM (FAM > Приложения > 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


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

7. Необходимо отредактировать конфигурационный файл из пункта 3, добавив в конец файла:

auth-user-pass

8. Перезапустить OpenVPN-сервер:

systemctl restart openvpn-server@server

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

Загрузка пользователей 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. 

Обсуждение