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

Любой удаленный доступ к конфиденциальным ресурсам должен быть защищен, а именно:

  • необходимо провести строгую аутентификацию пользователя при подключении;
  • необходимо создать зашифрованный канал доступа к сети.

Для решения этих задач будем использовать связку из трех компонентов:

  1. OpenVPN — широко известный, бесплатный VPN сервер, который создает зашифрованный туннель между пользователем и сервером, что обеспечиват конфиденциальность дистанционной работы.
  2. Active Directory в качестве поставщика учетных записей, чтоб не пришлось дублировать пользователей на сервере OpenVPN и раздавать новые пароли.
  3. Мультифактор для двухфакторной аутентификации.

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

Также необходимы минимальные навыки администрирования Linux и Windows серверов.

Схема работы

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

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

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

Настройка Active Directory

Загрузите компонент Multifactor Radius Adapter с сайта Мультифактора и распакуйте архив на сервере с Active Directory. Компонент работает в качестве 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.

Надежные VDS сервера