Настройка двухфакторной аутентификации в OpenVPN
В статье описывается настройка сервера OpenVPN для включения двухфакторной аутентификации.
OpenVPN — широко известный, бесплатный VPN сервер с открытым исходным кодом, который повсеместно используется для предоставления защищенного доступа сотрудников к внутренним ресурсам организации.
В качестве проверки подлинности для подключения к VPN серверу, как правило используется комбинация из ключа и логина/пароля пользователя. При этом, сохраненный на клиенте пароль превращает весь набор в единый фактор, не обеспечивающий должный уровень безопасности. Злоумышленник, получив доступ к клиентскому компьютеру, получает доступ и к VPN серверу в том числе. Особенно это касается подключения с машин под управлением Windows.
Использование второго фактора на 99% сокращает риск неправомерного доступа и совершенно не усложняет процесс подключения для пользователей.
Возможные способы аутентификации:
- Мобильное приложение MultiFactor
- Telegram
- Звонок (нужно принять вызов и нажать #)
- Аппаратные OTP токены
- Приложения OTP: Google Authenticator или Яндекс.Ключ
Принцип работы
- OpenVPN использует плагин openvpn-plugin-auth-pam для проверки подлинности
- Плагин запрашивает второй фактор через RADIUS протокол в сервисе Мультифактора
- Пользователь подтверждает в телефоне запрос доступа или вводит одноразовый код и подключается к 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
$ sudo vi /etc/pam.d/openvpn
и впишите в него
- C проверкой логина и пароля
- Без проверки
- С OTP
/etc/pam.d/openvpn
auth required pam_radius_auth.so skip_passwd client_id=NAS-IDentifier auth substack password-auth account substack password-auth
/etc/pam.d/openvpn
auth sufficient pam_radius_auth.so skip_passwd client_id=NAS-IDentifier account sufficient pam_permit.so session sufficient pam_permit.so
/etc/pam.d/openvpn
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
Настройка клиента
Включите в конфигурационный файл клиента запрос логина и пароля пользователя
auth-user-pass
Если вы настроили OpenVPN без проверки логина и пароля, то указывайте логин, который знает Мультифактор и произвольный пароль.
Проверка
Запустите клиента для OpenVPN, подключитесь к серверу, укажите логин и пароль. На телефон придет запрос доступа с двумя кнопками
Одна кнопка разрешает доступ, вторая блокирует.
Теперь смело можно сохранять пароль на клиенте, второй фактор надежно защитит ваш OpenVPN сервер от несанкционированного доступа.
Если что-то не работает
Последовательно проверьте, что вы ничего не упустили:
- С сервера открыт доступ по UDP порту 1812 на адрес radius.multifactor.ru
- Параметры NAS-Identifier и Shared Secret указаны корректно
- В системе Мультифактор заведен пользователь и ему предоставлен доступ в группу пользователей VPN
- Пользователь настроил способ аутентификации через Telegram
Если ничего не сработало, обращайтесь, поможем.
- How To Set Up and Configure an OpenVPN Server on CentOS 7.
- Настройка сервера OpenVPN в Ubuntu 18.04.
- Установка и настройка OpenVPN на сервере под управлением CentOS 7.
Отслеживания трафика который идет через vpn сервер
Если я использую рабочий впн-сервер, для просмотра видео и т.д. Так же сижу на заблокированом в стране сайте. Могут ли админы впн-сервера посмотреть историю посещений?
Отслеживать
задан 3 янв 2020 в 16:46
user366362 user366362
11 1 1 серебряный знак 2 2 бронзовых знака
Если сайт доступен только через https, то не могут. Но сам факт посещения сайта определить ничто не мешает, пользуясь фактом соединения с IP-адресом, принадлежащим сайту
3 янв 2020 в 17:05
Вот к примеру: Есть некое запрещенное заведение. Вы нашли человека который Вас проведет через черный вход туда и обратно. Как Вы думаете, может ли проводник узнать кого он проводит?
4 янв 2020 в 10:37
@andreymal есть же sni, днс и факт соединения тцп.
2 ноя 2021 в 23:42
@eri sni зашифрован, днс зашифрован, тцп подключается к серверам условного cloudflare за которым миллионы сайтов
2 ноя 2021 в 23:55
где sni зашифрован? кто зашифровал днс? нелегальные сайты не хостятся на cloudflare
3 ноя 2021 в 0:19
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
И да и нет, зависит от того, включили ли они ведение логов.
Если вы используете протокол HTTP, админы видят все, что передается по сети — не только адреса, но и вообще все занные, переданные от вас и к вам.
Если вы используете HTTPS — админы увидят только адрес сайта, но им недоступен URL открываемой страницы и переданные данные.
Аналогично с мессенджерами — некторые мессенджеры позволяют читать на транзитном узле всю переписку (ICQ), некоторые — только сам факт связи с серверами мессенжера (Telegram)
Отслеживать
ответ дан 3 янв 2020 в 16:52
22.3k 2 2 золотых знака 33 33 серебряных знака 53 53 бронзовых знака
Есть вариант подделки главной страницы входа(авторизации) подтвердить реальный домен которой в vpn на мой взгляд невозможно (будь то сайт с браузера или приложение на устройствах). Потому говорить что использование https защищает от перехвата логина и пароля в vpn как-то опасно. Так как https будет успешно обрабатываться на сервере vpn после запроса на вход от клиента и уже авторизироваться на проксируемом сервере для того что бы отдать клиенту результат авторизации в соединение в котором он прислал логин и пароль.В итоге выходит 2 https между клиентом и vpn и между vpn и удалённым сервером
3 янв 2020 в 18:48
@noname2019 ничего подобного, https ровно один и он защищает соединение между браузером и сайтом, и vpn никак не способен на него повлиять (кроме как прервать соединение). Вы путаете vpn с обычным http-прокси.
Как подключиться к VPN из стран с ограниченным доступом к сети?
Некоторые страны вводят запреты на использования сети и блокируют некоторые подключения. Если вы заметили, что не можете подключиться к Surfshark, возможно причина тому цензура в интернете. Тем не менее, всегда есть способ обойти запреты и пользоваться неограниченным доступом в интернет — так и должно быть.
Если вы находитесь в одной из стран, где действуют запреты на использование интернета и невозможно подключиться к Surfshark VPN, попробуйте следующее:
Попробуйте подключиться к VPN, используя другие методы
Профиль Tunnelblick или OpenVPN могут отлично помочь обойти запреты на доступ в интернет, если к приложению Surfshark не подключиться. Вы сможете подключиться к сервисам Surfshark, и вам будет обеспечен тот же уровень защиты.
Выберите свое устройство и прочитайте инструкцию по подключению к VPN вручную:
Настройка приложения Surfshark
- Попробуйте изменить протокол . Перейдите в раздел Settings (настройки) -> Advanced (сложные) -> Protocol (протокол) и попробуйте подключиться с использованием разных протоколов.
- Попробуйте подключиться к другим сервисам. Попробуйте, по крайней мере, пять различных локаций.
- Выключите другие VPN.
Попробуйте подключиться к VPN вручную при помощи приложения Surfshark
Если у вас на устройстве установлен Windows или Android, возможно стоит попробовать подключиться вручную.
- Здесь руководство по подключению вручную в Windows
- А здесь — в системе Android.
Как узнать кто подключен к OpenVpn серверу
Узнать кто в данный момент подключен к серверу OpenVpn достаточно просто. Эта информация сохраняется в специальных журнал (log) openvpn-status.log. Но для начала нужно узнать где храниться этот лог и храниться ли он вообще. Настраивается ведение логов в файле конфигурации сервера server.conf. Давайте посмотрим как все это можно посмотреть в Linux.
Я уже писал про настройку логов OpneVpn рекомендую Вам прочитать данную статью.
Как посмотреть список активных подключений к серверу
И так в моем случае сервер OpenVpn настроен на Linux. Для просмотра конфигов я буду использовать файловый менеджер mc. И так открываем файл конфигурации который расположен по следующему пути.
И открываем его.
И видим что лог храниться в корне папки openvpn.
Открываем его и видим список подключений.
Если у вас нет такой строчки добавляем и перезапускаем службу openvpn.
Раздел: Linux Метки: OpenVpn активные пользователи
OpenVpn активные подключения : 2 комментария
- Валерий 25.10.2020 Нету вообще такого файла(