Перейти к основному содержимому

Защита удаленного доступа к корпоративной сети с OpenVPN, ActiveDirectory и двухфакторной аутентификацией

Общая информация

Возможные способы аутентификации:

  • Мобильное приложение MultiFactor
  • Telegram
  • Звонок (нужно принять вызов и нажать #)
  • Аппаратные OTP токены
  • Приложения OTP: Google Authenticator или Яндекс.Ключ

Для настройки вам потребуется домен Active Directory, отдельный Linux сервер с установленным OpenVPN и настроить MultiFactor Radius Adapter.

Схема работы

  1. Пользователь подключается к VPN, вводит логин и пароль учетной записи.
  2. OpenVPN по протоколу RADIUS подтверждает корректность логина и пароля в Active Directory.
  3. Мультифактор присылает на телефон пользователя запрос для подтверждения доступа: push в Телеграм или звонок на который необходимо ответить и нажать #.
  4. Пользователь подтверждает запрос и подключается к VPN.

Настройка Мультифактора

Зайдите в систему управления Мультифактором, создайте новый ресурс "OpenVPN". После создания вам будут доступны два параметра: NAS Identifier и Shared Secret они понадобятся для дальнейшей настройки.

Настройка Active Directory

Загрузите и установите компонент Multifactor Radius Adapter. Компонент работает в качестве RADIUS сервера, получает запросы от OpenVPN и проверяет логин и пароль пользователя в домене.

Параметры компонента

Параметры работы компонента хранятся в файле MultiFactor.Radius.Adapter.exe.config в формате XML.

<!-- Адрес и порт (UDP) по которому адаптер будет принимать запросы на аутентификацию от OpenVPN -->
<add key="adapter-server-endpoint" value="192.168.0.1:1812"/>
<!-- Shared secret для аутентификации OpenVPN (из настроек Мультифактора) -->
<add key="radius-shared-secret" value=""/>
<!-- Где проверять логин и пароль пользователя: ActiveDirectory -->
<add key="first-factor-authentication-source" value="ActiveDirectory"/>
<!-- Домен-->
<add key="active-directory-domain" value="domain.local"/>
<!-- Проверять принадлежность пользователя к группе (не проверяется, если удалить настройку)-->
<add key="active-directory-group" value="VPN Users"/>
<!-- Адрес API Мультифактора -->
<add key="multifactor-api-url" value="https://api.multifactor.ru"/>
<!-- Параметр NAS-Identifier для подключения к API Мультифактора - из личного кабинета -->
<add key="multifactor-nas-identifier" value=""/>
<!-- Параметр Shared Secret для подключения к API Мультифактора - из личного кабинета -->
<add key="multifactor-shared-secret" value=""/>

Запуск компонента

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

Для установки, как Windows Service, выполните с ключом /i от имени Администратора

MultiFactor.Radius.Adapter.exe /i

и запустите службу

net start mfradiusadapter

Журналы

Журналы работы компонента находятся в папке Logs. Если их нет, удостоверьтесь, что папка доступна для записи пользователю Network Service.

Настройка OpenVPN

В первую очередь вам необходим Linux сервер с установленным OpenVPN. Сервер может быть CentOS, Ubuntu, Debian и тд. В нашем примере рассматривается CentOS, но для прочих систем отличия будут минимальными.

Сам процесс установки и первичной настройки OpenVPN мы не рассматриваем, так как на эту тему есть множество статей.

PAM_RADIUS

Установите модуль PAM_RADIUS

$ sudo yum -y install epel-release
$ sudo yum -y install pam_radius

Откройте для редактирования файл /etc/pam_radius.conf и укажите адрес компонента Multifactor Radius Adapter и shared key.

192.168.0.1:1812   shared_secret   40
примечание

Прочие сервера, если они есть по умолчанию в файле, необходимо удалить или закомментировать (поставить в начале #).

Настройка OpenVPN сервера

Откройте файл /etc/openvpn/server.conf и добавьте плагин для аутентификации с помощью PAM модуля

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

Далее создайте файл проверки подлинности для openvpn

$ sudo vi /etc/pam.d/openvpn

и впишите в него

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

Перезапустите OpenVPN сервер

$ sudo systemctl restart openvpn@server

В заключении

Рассмотренная в статье конфигурация обеспечивает необходимый уровень надежности и защиты для организации удаленного доступа с числом сотрудников от нескольких человек до нескольких тысяч. Кроме того, существенно упрощается администрирование, так как используется единый каталог учетных записей Active Directory. Использование второго фактора аутентификации от Мультифактора избавляет от необходимости выдавать каждому пользователю индивидуальный сертификат для подключения к OpenVPN.