Autenticazione a due fattori in OpenVPN con il bot di Telegram

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

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

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

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

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

Principio di funzionamento

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

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

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

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

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

Autenticazione a due fattori in OpenVPN con il bot di Telegram

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

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

Autenticazione a due fattori in OpenVPN con il bot di Telegram

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

Autenticazione a due fattori in OpenVPN con il bot di Telegram

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

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

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

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

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

$ sudo yum install pam_radius

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

radius.multifactor.ru   shared_secret   40

dove:

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

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

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

$ sudo vi /etc/pam.d/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 ресурса.
    Все возможные параметры описаны в документации к модулю.

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

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

$ sudo systemctl restart openvpn@server

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

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

auth-user-pass

Verifica

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

Autenticazione a due fattori in OpenVPN con il bot di Telegram

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

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

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

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

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

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

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

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster