Двухфакторная аутентификация openvpn linux

Настройка двухфакторной аутентификации в OpenVPN

В статье описывается настройка сервера OpenVPN для включения двухфакторной аутентификации.

OpenVPN — широко известный, бесплатный VPN сервер с открытым исходным кодом, который повсеместно используется для предоставления защищенного доступа сотрудников к внутренним ресурсам организации.

В качестве проверки подлинности для подключения к VPN серверу, как правило используется комбинация из ключа и логина/пароля пользователя. При этом, сохраненный на клиенте пароль превращает весь набор в единый фактор, не обеспечивающий должный уровень безопасности. Злоумышленник, получив доступ к клиентскому компьютеру, получает доступ и к VPN серверу в том числе. Особенно это касается подключения с машин под управлением Windows.

Использование второго фактора на 99% сокращает риск неправомерного доступа и совершенно не усложняет процесс подключения для пользователей.

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

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

Принцип работы​

  1. OpenVPN использует плагин openvpn-plugin-auth-pam для проверки подлинности
  2. Плагин запрашивает второй фактор через RADIUS протокол в сервисе Мультифактора
  3. Пользователь подтверждает в телефоне запрос доступа или вводит одноразовый код и подключается к VPN

OpenVPN можно настроить в двух конфигурациях: с проверкой логина и пароля пользователя на сервере и без проверки. Во втором случае, одним из факторов аутентификации будет являться сертификат пользователя.

Установка OpenVPN сервера​

В интернете множество статей, описывающих процесс установки и настройки OpenVPN, поэтому мы не будем их дублировать. Если вам нужна помощь, в конце статьи есть несколько ссылок на обучающие материалы.

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

Зайдите в систему управления Мультифактором, зайдите в раздел «Ресурсы» и создайте новый OpenVPN. После создания вам будут доступны два параметра: NAS-IDentifier и Shared Secret, они потребуются для последующий настройки.

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

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

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

Плагин может находиться в директории /usr/lib/openvpn/plugins/ или /usr/lib64/openvpn/plugins/ в зависимости от вашей системы.

Далее создайте файл для service-type openvpn

auth required pam_radius_auth.so skip_passwd client_id=NAS-IDentifier auth substack password-auth account substack password-auth 
auth sufficient pam_radius_auth.so skip_passwd client_id=NAS-IDentifier account sufficient pam_permit.so session sufficient pam_permit.so 
auth sufficient pam_radius_auth.so client_id=NAS-IDentifier account sufficient pam_permit.so session sufficient pam_permit.so 

первая строчка подключает PAM модуль pam_radius_auth с параметрами:

  • skip_passwd — отключает передачу в RADIUS сервер Мультифактора пароль пользователя.
  • client_id — вставьте вместо NAS-Identifier соответствующий параметр из настроек VPN ресурса Мультифактор. Все возможные параметры описаны в документации к модулю.

Вторая и третья строки включают системную проверку логина, пароля и прав пользователя на вашем сервере вместе с вторым фактором аутентификации.

Далее необходимо установить модуль pam_radius_auth

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

Откройте для редактирования файл /etc/pam_radius.conf и укажите адрес RADIUS сервера Мультифактора

radius.multifactor.ru shared_secret 40 
  • radius.multifactor.ru — адрес сервера
  • shared_secret — скопируйте из соответствующего параметра настроек VPN ресурса Мультифактор
  • 40 — таймаут ожидания запроса

Остальные сервера необходимо удалить или закомментировать (поставить в начале точку с запятой)

$ sudo systemctl restart openvpn@server 

Настройка клиента​

Включите в конфигурационный файл клиента запрос логина и пароля пользователя

Если вы настроили OpenVPN без проверки логина и пароля, то указывайте логин, который знает Мультифактор и произвольный пароль.

Проверка​

Запустите клиента для OpenVPN, подключитесь к серверу, укажите логин и пароль. На телефон придет запрос доступа с двумя кнопками

Одна кнопка разрешает доступ, вторая блокирует.

Теперь смело можно сохранять пароль на клиенте, второй фактор надежно защитит ваш OpenVPN сервер от несанкционированного доступа.

Если что-то не работает​

Последовательно проверьте, что вы ничего не упустили:

  • С сервера открыт доступ по UDP порту 1812 на адрес radius.multifactor.ru
  • Параметры NAS-Identifier и Shared Secret указаны корректно
  • В системе Мультифактор заведен пользователь и ему предоставлен доступ в группу пользователей VPN
  • Пользователь настроил способ аутентификации через Telegram

Если ничего не сработало, обращайтесь, поможем.

Источник

Двухфакторная аутентификация в OpenVPN с Telegram ботом

В статье описывается настройка сервера OpenVPN для включения двухфакторной аутентификации с Telegram ботом, который будет присылать запрос с подтверждением при подключении.

OpenVPN — широко известный, бесплатный VPN сервер с открытым исходным кодом, который повсеместно используется для организации защищенного доступа сотрудников к внутренним ресурсам организации.

В качестве проверки подлинности для подключения к VPN серверу, как правило используется комбинация из ключа и логина/пароля пользователя. При этом, сохраненный на клиенте пароль превращает весь набор в единый фактор, не обеспечивающий должный уровень безопасности. Злоумышленник, получив доступ к клиентскому компьютеру, получает доступ и к VPN серверу в том числе. Особенно это касается подключения с машин под управлением Windows.

Использование второго фактора на 99% сокращает риск неправомерного доступа и совершенно не усложняет процесс подключения для пользователей.

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

Принцип работы

  1. OpenVPN использует плагин openvpn-plugin-auth-pam для проверки подлинности
  2. Плагин проверяет пароль пользователя на сервере и запрашивает второй фактор через RADIUS протокол в сервисе Мультифактора
  3. Мультифактор отправляет через Telegram бота сообщение пользователю с подтверждением доступа
  4. Пользователь подтверждает в Telegram чате запрос доступа и подключается к VPN

Установка OpenVPN сервера

В интернете множество статей, описывающих процесс установки и настройки OpenVPN, поэтому мы не будем их дублировать. Если вам нужна помощь, в конце статьи есть несколько ссылок на обучающие материалы.

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

Зайдите в систему управления Мультифактором, зайдите в раздел «Ресурсы» и создайте новый VPN.
После создания вам будут доступны два параметра: NAS-IDentifier и Shared Secret, они потребуются для последующий настройки.

В разделе «Группы», зайдите в параметры группы «All users» и уберите флаг «Все ресурсы», чтоб только только пользователи определенной группы могли подключаться к VPN серверу.

Создайте новую группу «VPN users», отключите все способы аутентификации кроме Telegram и укажите, что пользователи имеют доступ к созданному ресурсу VPN.

В разделе «Пользователи» создайте пользователей, которые будут иметь доступ к VPN, добавьте в группу «VPN users» и отправьте им ссылку на настройку второго фактора аутентификации. Логин пользователя должен совпадать с логином на VPN сервере.

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

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

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

Плагин может находиться в директории /usr/lib/openvpn/plugins/ или /usr/lib64/openvpn/plugins/ в зависимости от вашей системы.

Далее необходимо установить модуль pam_radius_auth

$ sudo yum install pam_radius

Откройте для редактирования файл /etc/pam_radius.conf и укажите адрес RADIUS сервера Мультифактора

radius.multifactor.ru shared_secret 40
  • radius.multifactor.ru — адрес сервера
  • shared_secret — скопируйте из соответствующего параметра настроек VPN
  • 40 секунд — таймаут ожидания запроса с большим запасом

Далее создайте файл для service-type openvpn

auth required pam_radius_auth.so skip_passwd client_id=[NAS-IDentifier] auth substack password-auth account substack password-auth

первая строчка подключает PAM модуль pam_radius_auth с параметрами:

  • skip_passwd — отключает передачу в RADIUS сервер Мультифактора пароль пользователя (не надо ему знать).
  • client_id — вставьте вместо [NAS-Identifier] соответствующий параметр из настроек VPN ресурса.
    Все возможные параметры описаны в документации к модулю.

Вторая и третья строки включают системную проверку логина, пароля и прав пользователя на вашем сервере вместе с вторым фактором аутентификации.

$ sudo systemctl restart openvpn@server

Настройка клиента

Включите в конфигурационный файл клиента запрос логина и пароля пользователя

Проверка

Запустите клиента для OpenVPN, подключитесь к серверу, укажите логин и пароль. От Telegram бота придет запрос доступа с двумя кнопками

Одна кнопка разрешает доступ, вторая блокирует.

Теперь смело можно сохранять пароль на клиенте, второй фактор надежно защитит ваш OpenVPN сервер от несанкционированного доступа.

Если что-то не работает

Последовательно проверьте, что вы ничего не упустили:

  • На сервере с OpenVPN есть пользователь с установленным паролем
  • С сервера открыт доступ по UDP порту 1812 на адрес radius.multifactor.ru
  • Параметры NAS-Identifier и Shared Secret указаны корректно
  • В системе Мультифактор заведен пользователь с таким же логином и ему предоставлен доступ в группу пользователей VPN
  • Пользователь настроил способ аутентификации через Telegram

Если вы ранее не настраивали OpenVPN, почитайте развернутую статью.

Инструкция сделана с примерами на CentOS 7.

Источник

Читайте также:  Html run linux script
Оцените статью
Adblock
detector