Двухфакторная Аутентификация В 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-идентификатор И Общий секрет , они потребуются для последующей настройки.



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

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

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



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

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

Логин пользователя должен совпадать с логином на VPN-сервере.



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



Настройка 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 секунд - таймаут ожидания запроса с большим запасом
Остальные сервера необходимо удалить или закомментировать (поставить точку с запятой в начале)
Далее создайте файл для сервиса типа 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 Multifactor (ему его знать не обязательно).

  • client_id — замените [NAS-Identifier] на соответствующий параметр из настроек VPN-ресурса.

    Все возможные параметры описаны в документация к модулю .

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

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

$ sudo systemctl restart openvpn@server



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

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



auth-user-pass



обследование

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

Бот Telegram отправит запрос на доступ двумя кнопками

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

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



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

Последовательно проверяйте, ничего ли вы не пропустили:
  • На сервере есть пользователь с OpenVPN с установленным паролем.

  • Сервер имеет доступ через UDP порт 1812 к адресу radius.multifactor.ru.
  • Параметры NAS-Identifier и Shared Secret указаны правильно.

  • В системе Мультифактор создан пользователь с таким же логином и ему предоставлен доступ к группе пользователей VPN.
  • Пользователь настроил метод аутентификации через Telegram
Если вы еще не настроили OpenVPN, прочтите подробная статья .

Инструкции составлены с примерами на CentOS 7. Теги: #информационная безопасность #Администрирование сервера #openvpn #Telegram #2fa-аутентификация

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.