Pritunl — установка и настройка

Pritunl — тот же OpenVPN, но с преферансом и куртизанками. Почитать можно здесь. На самом деле Pritunl является оболочкой для OpenVPN, предоставляя удобный графический интерфейс для создания конфигураций OpenVPN сервера, создания пользователей, генерации ключей и т.д. Продукт предназначен для  энтерпрайза, но есть и бесплатная версия. Её функционал урезан, однако для личных целей или для малого офиса его вполне достаточно. Установка не сложная, советую попробовать.

Нам понадобится любой VPS с поддержкой TUN/TAP. Pritunl можно поставить практически на любую операционную систему. Про это можно почитать здесь. В рамках данной статьи будет применяться CentOS 7.

Обновим сервер командами:

Для начала настройте безопасную аутентификацию на сервере, как написано здесь. Далее настроим правила файрволла. В текущей статье будет настраиваться следующая конфигурация: порт для web-консоли — 4445, порт для подключение ovpn-клиентов — 443. Для настроийки файрволла используйте вот эту инструкцию. Единственный момент — в файл ipt-set вписывайте не то, что указано в инструкции, а вот такое содержимое:

Не забудьте про правильное имя внешнего интерфейса в переменной IF_EXT.

Если всё сделано верно, то по команде

будет получен такой вывод:

Обратите внимание, что открыт также порт 80. Это нужно для получения и обновления сертификатов от LetsEncrypt для нашей web-консоли. Не лишним будет проверить, что этот порт не занят. Такое может быть, если при установке операционной системы сразу установлен apache или иной web-сервер. Выполните команду:

В ответ мы должны получить ровно ничего, а значит порт свободен.

Если система ругается, что -bash: netstat: command not found, то выполняем команду:

Теперь пробуем:

Если в выводе команды видим:

то значит порт занят, в данном случае, службой httpd. Остановим её и уберем из автозагрузки:

Таким же способом можно проверить незанятость порта 443.

Теперь добавим репозиторий mongodb командой:

Добавим репозиторий pritunl командой:

Импортируем ключи:

Теперь можно установить mongodb и pritunl командами:

Запустим службы mongodb и pritunl и добавим в автозагрузку mongodb:

Запустите приведенные ниже команды, чтобы увеличить ограничение на количество открытых файлов на сервере. Это нужно для нормальной работы mongodb:

Когда вы запускаете Pritunl в первый раз, на веб-сервере, работающем через порт 443, вам будет показано приглашение настроить базу данных. Программа установки базы данных запросит ключ установки и URI MongoDB. Чтобы получить ключ установки запустите команду:

В ответ получите тот самый setup-key из цифр и букв.

Теперь можно перейти по адресу https://[IP-адрес вашего сервера] в браузере. Так как сертификат для https пока самоподписанный, то увидим предупреждение. Соглашаемся:

Получаем приглашение настроить базу данных:

Используем секретный ключ, полученный ранее командой pritunl setup-key. Строчку URI не трогаем.

Некоторое время будет идти создание и настройка базы данных.

После это появится запрос логина и пароля.

Логин и пароль получим в ssh-консоли командой:

Вводим логин и пароль и попадаем в web-консоль. Нас сразу попросят сделать базовые настройки.

Здесь вам нужно сделать как инимум одну настройку: поменять порт с 443 на 4445. Также рекомендую изменить имя пользователя и пароль с дефолтных на свои.

Также, если у Вас есть доменное имя и настроена DNS-запись на IP-адрес сервера (подробнее можно найти в этой статье), то може вписать это имя в поле «Lets Encrypt Domain». Это позволит ходить в консоль по имени, а не по IP-адресу и не получать указанное выше предупреждение браузера при каждом входе. Если использовать доменное имя не планируется, оставьте поле пустым. Вы всегда можете вернуться к этим настройкам позднее.

Когда настройки сделаны, нажмите Save. Если вы ввели доменное имя, то некоторое время будет происходить получение сертификата Lets Encrypt . Обычно 5-10 секунд.

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

  • https://[IP-адрес вашего сервера]:4445 — если доменное имя не используется
  • https://[имя сервера]:4445 — если доменное имя используется

Теперь мы видим консоль

Осталось сделать еще одну вещь, прежде, чем мы начнем конфигурировать vpn-сервер.

Мы будем в web-консоли создавать vpn-серверы, а pritunl будет сам прописывать правила для них в iptables. При этом, в начале статьи, мы сделали свои настройки iptables. Нужно сделать так, чтобы это всё уживалось и не конфликтовало. Выше, после установки mongodb и pritunl мы добавили в автозагрузку только mongodb. И это неспроста. Теперь в файл /root/ipt-set в самом конце мы допишем строчки:

Сохраним и перезагрузим сервер командой reboot.

Т.е. теперь у нас будут при запуске сервера отрабатываться настройки iptables из файла ipt-set и только после применения настроек скрипт ipt-set запустит pritunl, а тот уже, в свою очередь, добавит в iptables свои настройки. В итоге никаких конфликтов и никаких лишних доступов.

Всё, ssh-консоль больше не нужна, заходим в web-консоль и работаем с ней. Жмём сверху в меню «Users», а потом кнопку «Add Organization».

Вводим любое имя организации. Не важно.

И нажимаем «Add». Теперь жмём «Add User». Здесь вводим имя будущего пользователя, а также пин-код. В пин-коде должно быть не менее 6 цифр. Он используется как второй фактор при авторизации. Email вводить не обязательно.

Жмём «Add» и получаем запись нового пользователя.

Обратите внимание на иконки слева. Когда создадим vpn-сервер, то с их помощью сможем получить готовый конфиг пользователя.

Сверху в меню выбираем «Servers»

Жмём кнопку «Add Server»  и, в появившемся окне, сверху, «Advanced».

На скриншоте цветом выделены параметры, на которые нужно обратить внимание:

  • Name — любое понятное вам имя сервера.
  • Port — порт, на котором будет работать сервер. В моём примере я ставлю 443.
  • Protocol — протокол. В моём примере я ставлю tcp.
  • Encryption Cipher — ставим AES 256bit или 512bit.
  • DNS Server — DNS сервер, к которому будут обращаться клиенты. Я поставил гугловые восьмёрки.
  • Enable Google Authenticator — если поставите галочку, то клиенты смогут дополнительно, при аутентификации, использовать одноразовые пароли из Google Authenticator. Сначала потренеруйтесь без этой опции. Её можно включить позже.
  • Bind Address — впишите внешний IP вашего сервера к которому будет привязан vpn-сервер.
  • Hash Algorithm — ставьте SHA-256.
  • Allow Multiple Devices — если галочка стоит, то клиент сможет использовать свой конфиг и ключи на нескольких устройствах одновременно.
  • Block Outside DNS — если галочка стоит, то клиенты будут использовать только тот DNS -сервер, который прописан здесь.
  • Inter-Client Communication — если галочка стоит, то клиенты могут видеть друг друга по виртуальным IP-адресам.

Настраиваем и жмём Add. Теперь нужно привязать сервер к организации.

Жмём кнопку «Attach Organization»

и привязываем наш сервер к организации.

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

Итоговый вид такой:

Оратите внимание: вместе с организацией к серверу прикрепился и пользователь этой организации.

Запускаем сервер кнопкой «Start Server» и видим, что сервер запустился

Дальше в меню выбираем «Users». Используя иконки напротив имени пользователя скачиваем конфиг с ключами.

Например если так:

То будет предложено несколько временных ссылок на разные типы ахивов. Скачиваем zip, внутри него стандартный ovpn-файл, который добавляем в OpenVPN-клиент.

Или так:

Тогда будет скачан tar-архив, но внтури всё тот же ovpn-файл.

Если нажать на стрелочку, то увидите виртуальный адрес клиента (или несколько адресов, если клиенту разрешено использовать профиль на нескольких устройствах):

Как использовать готовый ovpn-файл, описано во второй половине этой статьи.

На этом, думаю, достаточно. Пользуйтесь. В web-консоли ещё куча кнопок, кроме описанных здесь. Их все можно нажимать, найдёте ещё много интересного.

Вы можите оставить комментарий, или поставить трэкбек со своего сайта.

Написать комментарий

XHTML: Вы можете использовать эти теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">