Общие сведения
Avanpost FAM позволяет обеспечить 2FA для пользователей, выполняющих подключение при помощи клиента OpenVPN. В инструкции описывается настройка 2FA для OpenVPN с использованием RADIUS-сервера Avanpost FAM, pam_radius модуля и различные сценарии использования 2FA для OpenVPN (как для бесплатной версии OpenVPN Community Edition, так и для платной версии OpenVPN Access Server).
Сценарий взаимодействия OpenVPN с Avanpost FAM для аутентификации:
- Пользователь подключается к VPN, вводит логин и пароль в OpenVPN. OpenVPN подключается к VPN-серверу.
- OpenVPN по протоколу RADIUS подключается к службе RADIUS Avanpost FAM, выполняет проверку логина и пароля по одному из настроенных методов аутентификации RADIUS-протокола.
- Если для OpenVPN настроена проверка дополнительных факторов аутентификации, то OpenVPN запрашивает у пользователя проверку этих факторов в режиме диалога или в фоновом режиме.
- После успешной проверки аутентификаторов в соответствии с настроенным сценарием аутентификации пользователь успешно подключен к VPN.
Для OpenVPN в качестве второго фактора (2FA) возможно использование следующих методов аутентификации:
Через клиент OpenVPN доступна первичная настройка аутентификаторов для тех пользователей, для которых настройка не была выполнена:
- Мобильное приложение Avanpost Authenticator;
- TOTP;
- SMS;
- E-mail.
Для выполнения настройки 2FA в OpenVPN в соответствии с настоящей инструкцией должны быть выполнены следующие предварительные условия:
- Установлен в сети OpenVPN, настроен VPN-сервера.
- Установлен АРМ с клиентом OpenVPN, который может выполнить подключение по VPN через OpenVPN.
- Установлен в сети компонент Avanpost FAM Server.
Если необходима аутентификация через:
- Мобильное приложение Avanpost Authenticator, то установить компонент Avanpost FAM Mobile Services.
- Мобильное приложение SafeTech PayControl, то установить сервер SafeTech PayControl.
- SMS, то настроить подключение к внешнему SMS-шлюзу, который предоставляет услугу доставки SMS-сообщений.
- E-mail, то настроить подключение к SMTP-шлюзу, который обеспечивает доставку почтовых сообщений.
- Telegram, то настроить подключение к Telegram Bot API.
Для выполнения настройки необходимо наличие следующих параметров:
- IP-адрес и порт RADIUS-интерфейса компонента Avanpost FAM Server;
- IP-адрес сервера OpenVPN, с которого будет осуществляться отправка RADIUS-запросов;
- планируемое уникальное в рамках RADIUS-сервера Avanpost FAM значение NAS-Identifier;
- планируемый разделяемый RADIUS-секрет.
Настройка OpenVPN Community Edition
В данном разделе рассматривается настройка OpenVPN Community Edition (бесплатная версия с открытым исходным кодом) для тестирования.
Настройка выполняется следующим образом (действия рекомендуется делать от имени суперпользователя):
- Выполнить установку пакетов OpenVPN и libpam-radius-auth (PAM-модуль, позволяет Linux-машине функционировать в качестве RADIUS-клиента), используя команду:
sudo apt install openvpn libpam-radius-auth
- Запустить скрипт для автоматической настройки OpenVPN (создание сертификатов, конфигурационного файла OpenVPN-сервера, настройка портов и внешнего адреса для дальнейшего подключения):
- Подключиться к серверу по SSH.
- Скачать скрипт установки OpenVPN и запустить его.
wget https://git.io/vpn -O openvpn-install.sh bash openvpn-install.sh
- Осуществить настройку, ответив на задаваемые вопросы.
- Файл для подключения, созданный скриптом в папке суперпользователя после завершения настройки, перенести на то устройство, на котором будет тестироваться подключение.
- Протестировать корректность подключения к VPN, чтобы удостовериться в работоспособности скрипта. Следует отредактировать конфигурационный файл, созданный в результате работы скрипта. Файл формируется в директории /root на стороне клиента и имеет расширение *.ovpn. В конец файла требуется добавить:
auth-user-pass
- Из файла конфигурации OpenVPN-сервера (путь к расположению:
/etc/openvpn/server/server.conf
) необходимо удалить следующие строки:user nobody group nogroup
- Найти расположение плагина openvpn-plugin-auth-pam.so (может отличаться в зависимости от операционной системы), используя команду:
find /usr/lib -name "openvpn-plugin-auth-pam.so"
- В конец конфигурационного файла OpenVPN-сервера (/etc/openvpn/server/server.conf) необходимо добавить плагин openvpn-pluginauth-pam.so командой (с указанием актуального пути до файла):
plugin /usr/lib/openvpn/openvpn-plugin-auth-pam.so "openvpn login USERNAME password PASSWORD"
- Создать файл
/etc/pam.d/openvpn
, используя команду (здесь и далее в подобных случаях используется текстовый редактор vi, но допускается использование другого редактора):sudo vi /etc/pam.d/openvpn
- Добавить в созданный файл следующие строки:
auth sufficient pam_radius_auth.so account sufficient pam_permit.so session sufficient pam_permit.so
- Отредактировать информацию в файле
/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_IP IP-адрес 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
Чтобы исключить вероятность опроса каждого сервера из файла по очереди, следует обязательно закомментировать неиспользуемые строки с адресами серверов.
- Открыть файл командой :
- Перезапустить OpenVPN-сервер:
systemctl restart openvpn-server@server
Настройка OpenVPN Access Server
В данном разделе рассматривается настройка OpenVPN Access Server (платная enterprise-версия продукта).
Настройку OpenVPN Access Server следует выполнять следующим образом:
Войти в панель администратора OpenVPN Access Server.
Перейти в раздел “Authentication” → “Settings”
В разделе "Default Authentication System" выбрать “RADIUS” (если RADIUS-протокол не был выбран ранее) и нажать “Save settings” для сохранения изменений.
Нажать “Update Running Server” для применения изменений.
Перейти в раздел “Authentication”, подраздел "RADIUS".
- Заполнить настройки в блоке “RADIUS Settings” и “RADIUS Server”.
Параметр Описание Hostname or IP Address IP-адрес RADIUS-сервера. Shared Secret Секрет приложения, который будет использоваться при настройке на стороне FAM Server. Authentication Port Порт RADIUS-сервера. По умолчанию: 1812 Accounting Port Порт RADIUS-сервера, использующийся для передачи информации об учете сетевых ресурсов и активности пользователей. - Сохранить настройку, нажав кнопку “Save Settings”.
- Обновить сервер, нажав “Update Running Server”.
Настройка на стороне Avanpost FAM
На стороне административной консоли Avanpost FAM необходимо выполнить следующие настройки:
- Открыть административную консоль Avanpost FAM Server и зайти во вкладку создания приложения, нажав кнопку "Добавить приложение" режима "Приложения".
- На этапе "Основные настройки" требуется ввести наименование и выбрать тип "RADIUS" (более подробно процесс создания и управления приложениями описан в разделах Управление приложениями и Управление RADIUS-приложениями).
- На этапе "Настройки интеграции" заполнить указанные поля в соответствии с таблицей.
Параметр Значение IP-адрес как идентификатор Включить флаг. NAS Identifier NASIDENTIFIER
сервера OpenVPN, заданный ранее в конфигурационном файле pam_radius-модуля. В данном примереNAS Identifier = openvpn
Протокол аутентификации
PAP Разрешить Access-Challenge В зависимости от типа используемого OpenVPN:
- Выключен – для OpenVPN Community Edition (OpenVPN с открытым исходным кодом не поддерживает Access-Challenge);
- Включен – для OpenVPN Access Server.
- Создать и настроить приложение с типом RADIUS.
- На этапе "Настройки аутентификации" выбрать факторы аутентификации приложения, установив переключатели напротив тех или иных факторов.
- На этапе "Завершение" следует сохранить приложение, делая его активным сразу после создания.
- Настроить Разделяемые секреты RADIUS:
- Перейти в профиль приложения, найдя созданное RADIUS-приложение OpenVPN в реестре режима "Приложения".
- Войти в раздел "Настройки" профиля приложения и установить адрес сервера сетевого доступа (NAS IP), если он не определен.
- Перейти в раздел "Разделяемые секреты RADIUS".
- Создать новый разделяемый секрет клиента RADIUS:
- Нажать "Добавить" в реестре секретов;
- Ввести название клиентского приложения "OpenVPN".
- Ввести диапазон IP-адрес с маской подсети сервера OpenVPN или либо подсеть (диапазон IP-адресов), из которой обращается OpenVPN.
- Ввести секрет (должен соответствовать секрету в параметра SHARED_SECRET в файле
/etc/pam_radius_auth.conf
). в соответствии с требованиями к RADIUS-секретам и нажать "Сохранить".
- Создать группу (если таковая отсутствует), пользователи которой будут в приложении OpenVPN. Для этого необходимо нажать кнопку "Добавить группу" в режиме "Группы" и в открывшейся вкладке ввести запрашиваемые параметры (более подробно о настройке группы описано в разделе Управление доступом).
- Добавить в группу пользователей, которые будут аутентифицироваться при помощи OpenVPN (более подробно о добавлении пользователей в разделе Управление пользователями).
- Предоставить группе доступ к созданному приложению: в профиле группы зайти во вкладку "Приложения", найти созданное RADIUS-приложение (
OpenVPN
в данном примере) и перевести переключать напротив него в положение
Проверка настройки OpenVPN
Корректность настройки OpenVPN (как для бесплатной версии OpenVPN Community Edition, так и для платной версии OpenVPN Access Server) осуществляется следующим образом:
- Запустить клиент OpenVPN.
- Ввести логин и пароль, запрошенный программой.
Если требуется, выполнить дополнительную аутентификацию в соответствии с настроенным сценарием аутентификации.
- Если требуется, выполнить привязку аутентификатора в соответствии с настроенным сценарием.
В результате выполненных действий пользователь должен успешно подключиться к 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.