Развертываем OpenVPN сервер с панелью управления в облаке InfoboxCloud и настраиваем доступ для клиентов

    Процесс настройки и управления VPN на Linux-сервере обычно занимает немало времени. И если настроить можно один раз и забыть, то управлять пользователями VPN периодически приходится и хорошо бы, чтобы это мог делать и рядовой сотрудник компании без прав доступа к серверу и SSH вообще. Часто используется сценарий, когда с помощью VPN организуется доступ во внутреннюю сеть облака для подключения виртуальных серверов к корпоративной сети компании. Даже для себя быстро поднять VPN бывает полезно.

    В этой статье мы буквально за несколько минут настроим OpenVPN сервер с возможностью простого управления VPN–серверами, пользователями и организациями и запустим все это в InfoboxCloud. Это облако присутствует в регионах Москва и Амстердам, благодаря чему можно использовать VPN как для корпоративных целей, так и для того, чтобы представиться жителем Нидерландов в сети (например для использования сервисов, которые не доступны на территории вашей страны).

    На сервере мы будем использовать проект Pritunl, который представляет собой панель управления, автоматизирующую управление конфигурациями OpenVPN. Исходные тексты pritunl открыты и доступны на гитхабе. Бесплатной версии более чем достаточно для использования. Платная позволяет отправлять данные для доступа по email или настраивать автоматическую отказоустойчивость сервиса (что для InfoboxCloud не очень важно, т.к. само облако работает в отказоустойчивом кластере) и управлять балансировкой нагрузки между несколькими серверами.

    В самое ближайшеее время в InfoboxCloud появится шаблон сервера с предустановленным Pritunl и можно будет создавь VPN–сервер за 1 клик.

    Что нам потребуется для настройки


    • Мы надеемся, что у вас уже есть учетная запись в InfoboxCloud. Если еще нет — создайте ее.
      Затем создайте облачный сервер с Ubuntu 14.04 в панели управления (не забудьте серверу выделить 1 публичный IP–адрес и установить необходимую скорость канала — до гигабита). При создании сервера необходимо установить галочку «разрешить управление ядром ОС». После создания сервера на вашу электронную почту придут данные для доступа к серверу. Подключитесь к серверу по SSH.
    • Также нам потребуется домен или поддомен для организации точки входа в VPN. Запись A домена следует направить на ip–адрес созданного облачного сервера.

    Устанавливаем Pritunl


    Подключившись к серверу с Ubuntu 14.04 по SSH выполните команду:
    apt-key update && apt-get update && apt-get -y upgrade && apt-get -y install python-software-properties && apt-get -y install software-properties-common && add-apt-repository -y ppa:pritunl && apt-get update && apt-get -y install pritunl
    

    Настраиваем VPN–сервер в веб-интерфейсе


    Откройте в браузере
    https://адрес_домена_направленного_на_сервер:9700
    

    В статье используется тестовый адрес
    https://vpn.trukhin.com:9700
    

    Предлагается настроить путь к базе данных.



    Просто нажмите «Save». Откроется окно входа.



    Используйте:
    • Логин: pritunl
    • Пароль: pritunl

    После входа будет предложено изменить пароль (что сделать очень рекомендуется), указать данные SMTP сервера для отправки писем (не обязательно) и отображается ключ API для программного управления VPN. Подробная документация по API тут. Если вы оставите ip–адрес как есть — VPN будет работать через публичную сеть Infobox (отлично подходит для того, чтобы пользоваться интернетом из Нидерландов).



    После заполнения формы вы попадете в панель управления. Пока что пользователей VPN в системе нет.



    Перейдите в раздел «Users».


    Добавьте организацию.



    Теперь добавьте пользователя.



    Пришло время наконец-то создать наш VPN–сервер. Нажмите на кнопку «Servers».



    Нажмите «Add server».



    Укажите имя VPN–сервера (должно совпадать с доменом, направленным на VPN–сервер!). Можно настроить DNS, выбрать способ работы VPN, разрешить нескольким устройствам подключаться одновременно и даже можно использовать двухфакторную аутентификацию с Google Authenticator.



    Теперь прикрепите организацию (со всеми пользователями) к VPN–серверу, нажав «Attach Organization».



    Нам уже предлагается наша организация и VPN-сервер. Просто нажмем «Attach».



    Все готово! Нажмите «Start server» для запуска VPN–сервера.



    Наш VPN–сервер успешно запущен!



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



    Особенности подключения к внутренней сети InfoboxCloud


    Это очень часто используемый компаниями сценарий. Серверам кроме VPN–сервера и веб-сервера не назначается публичный ip–адрес и они не имеют доступа к внешней сети. Пользователь подключается по VPN и входит во внутреннюю сеть компании в облаке.

    Для того, чтобы этот сценарий работал, для начала посмотрите в панели управления InfoboxCloud приватные ip–адреса серверов, к которым необходимо доступ.



    При создании VPN–сервера в pritunl выберите режим сервера «Local Traffic Only» и установите cidr подсети, как показано на скриншоте.



    После этого как и раньше, добавьте компанию к VPN–серверу, скачайте заново настройки для подключения пользователя и подключитесь к VPN. Теперь вы можете подключаться к серверам, доступным только из приватной сети InfoboxCloud.



    Настраиваем клиентов OpenVPN


    Для подключения можно использовать любой клиент OpenVPN, в том числе можно настроить подключение с роутера, если он поддерживает OpenVPN (например Mikrotik). Мы рассмотрим способы подключения с десктопа.

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

    Скачайте клиент OpenVPN для Windows отсюдa.

    Установите клиент с настройками по умолчанию. В процессе согласитесь на установку драйвера OpenVPN.

    Затем скачайте файл конфигурации OpenVPN из раздела пользователей вашего VPN–сервера:



    Установите 7zip и распакуйте скачанный tar файл.



    Скопируйте .ovpn файл в директорию
    C:\Program files\OpenVPN\config
    

    Запустите с рабочего стола с правами администратора OpenVPN Gui (в свойствах ярлыка можно установить запуск с правами администратора постоянно).

    В системном трее нажмите правой кнопкой мыши на ярлык OpenVPN и выберите «Connect».



    Соединение будет успешно установлено.



    Настройка OpenVPN–клиента на OS X

    Скачайте Tunnelblick отсюда и установите его.

    Скачайте файл конфигурации OpenVPN из раздела пользователей вашего VPN–сервера:



    Установите The Unarchiver, чтобы распаковать tar файл не открывая терминал.

    Распакуйте tar файл. Затем сделайте двойной клик по файлу конфигурации .ovpn. Разрешите использование файла конфигурации только для себя или для всех пользователей (на выбор).



    Введите пароль администратора.



    В панели меню нажмите на иконку Tunnelblick и выберите «Connect».



    Соединение будет успешно установлено.



    Настройка OpenVPN–клиента на Ubuntu Desktop

    Откройте терминал и введите следующую команду:
    sudo apt-get install network-manager-openvpn
    

    Скачайте файл конфигурации OpenVPN из раздела пользователей вашего VPN–сервера:



    Загрузится файл tar. Перейдите в терминале в директорию, куда был загружен файл:
    cd ~/Downloads/
    

    Распакуйте файл (название файла будет соответствовать имени пользователя):
    tar -xvf trukhinyuri.tar
    


    Из-за ошибки в Network Manager мы не можем импортировать ovpn файл напрямую. Но есть временное решение:
    • Создайте папку «OpenVPN» и скопируйте туда файл конфигурации ovpn, который вы распаковали ранее из архива.
    • Откройте файл конфигурации ovpn из папки «OpenVPN» в текстовом редакторе.
    • Создайте файл ca.crt в папке «OpenVPN»: скопируйте в него текст между
      <ca> и </ca>
      
      из файла конфигурации ovpn.
    • Создайте файл client.crt в папке «OpenVPN»: скопируйте в него текст между
      <cert> и </cert>
      
      из файла конфигурации ovpn.
    • Создайте файл client.key в папке «OpenVPN»: скопируйте в него текст между
      <key> и </key>
      
      из файла конфигурации ovpn.
    • Создайте файл ta.key в папке «OpenVPN»: скопируйте в него текст между
      <tls-auth> и </tls-auth>
      
      из файла конфигурации ovpn.
    • Откройте файл конфигурации ovpn из папки «OpenVPN» и отредактируйте его: удалите секцию
      <ca> 
      
      и все ниже и добавьте в конец:
      ca ca.crt
      cert client.crt
      key client.key
      tls-auth ta.key
      


    Нажмите на иконку Network Manager и выберите «Edit connections»:



    В Network manager нажмите Add и выберите «Import a saved vpn configuration» и нажмите «create»:



    Выберите модифицированный файл конфигурации ovpn из папки «OpenVPN» и нажмите «Open»:



    Войдите в «Advanced» -> «TLS Authentication» и установите «Key Direction» такой же, как в оригинальном файле конфигурации ovpn значение «key-direction». В нашем случае это «1».



    Нажмите «Save» и закройте все окна Network manager. Подключитесь к VPN серверу, как показано на скриншоте ниже:



    Вы успешно подключились к VPN из Ubuntu Desktop.

    Заключение


    В этой статье мы научились быстро разворачивать VPN–сервер с веб-интерфейсом в InfoboxCloud. Если вы хотите попробовать облачный сервер — пришлите нам свой email и мы предоставим бесплатную пробную версию облака на 15 дней.

    Если вы не можете писать комментарии, задайте вопрос в Сообществе InfoboxCloud. В случае, если вы обнаружили ошибку в статье, автор ее с удовольствием исправит. Пожалуйста напишите в ЛС или на почту о ней.

    Успешной работы!
    Infobox
    Компания
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 15

      +1
      Отличный мануал, подробно и в картинках.
      Видимо следующая статья про VPN будет содержать только ссылку =)
      VPN–сервер за 1 клик
        0
        VPN-сервер с простым управлением и настройкой через WEB-интерфейс — это, разумеется, здорово. А кто-нибудь заглядывал в раздел Privacy Policy у Pritunl? Текста там очень много, и размещен он таким образом, что не помещается по ширине в форму на сайте, нужно скроллить вправо-влево.

        Вот например:
        When you access or use our services, we automatically collect information about you, including:
        Log Information: We log information about your use of our services, including the type of browser you use, access times, pages viewed, your IP address and the page you visited before navigating to our services.
        Device Information: We collect information about the computer you use to access our services, including the hardware model, and operating system and version.
        Location Information: We may collect information about the location of your device each time you access or use one of our mobile applications or otherwise consent to the collection of this information.
        Information Collected by Cookies and Other Tracking Technologies: We use various technologies to collect information, and this may include sending cookies to your computer. Cookies are small data files stored on your hard drive or in your device memory that helps us to improve our services and your experience, see which areas and features of our services are popular and count visits. We may also collect information using web beacons (also known as «tracking pixels»). Web beacons are electronic images that may be used in our services or emails and to track count visits or understand usage and campaign effectiveness.


        И это еще далеко не все, рекомендую ознакомиться полностью.
          +1
          Это про их сайт.
            0
            Да, возможно, в любом случае исходники есть на githab, а автору поста спасибо за труд.
          0
          Предотвращение доступа уже выданным пользователям (удаление пользователя) каким образов на уровне openvpn в этом решении происходит?
            +1
            Я знаю единственный вариант для openvpn, это CRL. Интересно делает ли это сервер.
              0
              Можно еще через client-connect вызывать все что угодно, проверяющее CN сертификата. Тогда не придется хранить базу CRL. Я бы сделал через него.
                0
                CRL — Certificate Revocation List.

                Что-то, что проверяет "где-то"… если "где-то" это база данных, тогда это все еще CRL, просто еще раз изобретенный. Просто не в виде файла который понимает openvpn а в виде какого-то скрипта, который почему-то постоянно должен ходить куда-то… Попахивает как-то...

                ИМХО лучше хранить CRL в базе и выгружать на сервера время от времени. Тогда её сложно потерять. Секретом никаким CRL не является, разве что если вы храните в нем email-ы пользователей.

                З.Ы. Само-собой хранить не CRL-файл а отпечатки отозванных сертификатов. В общем тут: https://cryptography.io/en/latest/x509/ есть годные примеры на Python.
              –1
              Сертификат клиента просто отзывается
                0
                Вы уверены? Только отзыв, через CRL? Ужасный вариант, так как придется хранить всю базу CRL и, в случае ее утери, перевыпускать сертификаты для всех клиентов.
              0
              Кто-нибудь пробовал использовать двухфакторную авторизацию в Pritunl? Google Authenticator генерирует ключ. Он же является паролем для пользователя, т.к. при создании в Pritunl пользователя пароль не указывается. Но в в результате при подключении выдает ошибку ERROR User auth failed «Invalid OTP code».
                0
                Кто нибудь ставил на Debian? Я попробовал и попал в замкнутый круг зависимостей… Пакеты от Убунту не работают с пакетами от Дебин и наоборот.
                  0
                  ИМХО панелька docs.openvpn.net/access-server на много лучше.
                    0
                    Спасибо. Очень понятная статья. Из замечаний могу отметить, что среди обязательных пакетов для установки должен быть пакет iptables, иначе сервак не стартанет и в логи будет писать ошибки об отсутствии файла или папки и невозможности добавить правило.
                    Скажите, а был ли у вас опыт настройки мониторинга https://docs.pritunl.com/docs/monitoring?
                      0
                      Про iptables – в момент написания статьи этот пакет не требовался, тем не менее в облаке Azure Pack Infrastructure https://infoboxcloud.ru/services/azurepack/ уже сделали готовый образ с PritunlVPN, настраивать ничего дополнительно не надо.

                      Мониторинг пока не настраивали, надо посмотреть.

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое