Общие сведения
Avanpost FAM позволяет обеспечить 2FA для пользователей, выполняющих подключение при помощи клиента OpenVPN. В инструкции описывается настройка 2FA для OpenVPN с использованием RADIUS-сервера Avanpost FAM, pam_radius модуля и различные сценарии использования 2FA для OpenVPN.
Сценарий взаимодействия 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.
Настройка openVPN для тестирования
Все действия рекомендуется делать от имени суперпользователя.
1.Установить необходимые пакеты:
sudo apt install openvpn libpam-radius-auth
2. Далее использовать готовый скрипт, который автоматически производит настройку OpenVPN: создает сертификаты, создает конфигурационный файл OpenVPN-сервера, настраивает порты и внешний адрес для дальнейшего подключения.
После завершения настройки скрипт также создает файл для подключения в папке суперпользователя, его необходимо перенести на другое устройство для тестирования подключения.
wget https://git.io/vpn -O openvpn-install.sh bash openvpn-install.sh
На этом шаге нужно протестировать подключение к VPN, чтобы удостовериться в работоспособности скрипта.
Необходимо отредактировать конфигурационный файл, созданный в результате работы скрипта. Файл формируется в директории /root на стороне клиента и имеет расширение *.ovpn. В конец файла следует добавить:
auth-user-pass
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_IP | IP-адрес сервера RADIUS |
RADIUS_SERVER_PORT | port 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. Перезапустить OpenVPN-сервер:
systemctl restart openvpn-server@server
Настройка
В рамках данной инструкции предполагается первичная настройка RADIUS-сервера на стороне OpenVPN или замена ранее используемого RADIUS-сервера на RADIUS-сервер Avanpost FAM.
Для выполнения настройки необходимо наличие следующих параметров:
- IP-адрес и порт RADIUS-интерфейса компонента Avanpost FAM Server;
- IP-адрес сервера OpenVPN, с которого будет осуществляться отправка RADIUS-запросов;
- планируемое уникальное в рамках RADIUS-сервера Avanpost FAM значение NAS-Identifier;
- планируемый разделяемый RADIUS-секрет.
На стороне OpenVPN необходимо выполнить следующие настройки:
В конец конфигурационного файла
/etc/openvpn/server/server.conf
OpenVPN-сервера добавить плагин для аутентификации.OpenVPN-сервер сверяет внутреннюю базу пользователей ОС и отправляет запрос на аутентификацию на Radius-сервер. Путь к плагину может отличаться в зависимости от операционной системы.
plugin /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so openvpn
Создать конфигурационный файл модуля аутентификации.
sudo vi /etc/pam.d/openvpn
Вписать в конфигурационный файл модуля аутентификации следующий блок кода:
Требуется аутентификация в ОС Не требуется аутентификация в ОС auth required pam_radius_auth.so client_id=NAS-IDentifier auth substack password-auth account substack password-auth
auth sufficient pam_radius_auth.so client_id=NAS-IDentifier account sufficient pam_permit.so session sufficient pam_permit.so
Установить необходимые пакеты:
sudo apt install openvpn libpam-radius-auth
Отредактировать файл
/etc/pam_radius_auth.conf
и указать IP-адрес RADIUS сервера:radius-server.ru shared_secret 60
Перезапустить OpenVPN-сервер.
$ sudo systemctl restart openvpn-server@server
На стороне административной консоли Avanpost FAM необходимо выполнить следующие настройки:
- Создать и настроить приложение с типом RADIUS.
2. Указать для него в карточке приложения на вкладке «Настройки»:
- Флаг
IP-адрес как идентификатор
– выключен. NAS Identifier – NASIDENTIFIER
сервера OpenVPN, заданный ранее в конфигурационном файле pam_radius-модуля. В данном примере NAS Identifier = openvpn.- Протокол аутентификации –
PAP.
- Флаг
Разрешить Access-Challenge
– выключен.
- Флаг
3. В разделе «Разделяемые секреты RADIUS» создать RADIUS-секрет, указав для него в IP-адрес с маской подсети сервера OpenVPN либо подсеть (диапазон IP-адресов), из которой обращается OpenVPN.
4. Создать и настроить группу доступа, добавив в неё созданное приложение и пользователей, которые должны иметь доступ к приложению.
Проверка настройки
- Запустить клиент 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.