- Установка и настройка OpenVPN в Linux
- Что для этого нужно?
- Установка ПО
- Организация центра сертификации
- Генерация и настройка ключей клиентов
- Настройка сервера OpenVPN
- Настройка клиентов OpenVPN
- Заключение
- Установка OpenVPN в несколько кликов
- Создание сервера
- Подготовка
- Регистрация на DigitalOcean
- Запуск сервера
- Установка SSHeller
- Установка сервера OpenVPN
- Подключение
- Windows
- macOS
- Linux
- Android
- Как можно сэкономить
- В DigitalOcean почасовая оплата
- Делитесь с родными и друзьями
Установка и настройка OpenVPN в Linux
VPN – Virtual Private Network, т. е. защищённая частная сеть, которая объединяет в себе несколько разных сетей, соединённых через Интернет. OpenVPN – это свободная реализация этой технологии. Сети VPN удобны тем, что позволяют получить доступ к частным сетям из любой точки в сети Интернет верифицированным клиентам. Многие организации таким образом строят свои локальные или интрасети, когда их офисы (сервера и компьютеры) расположены далеко (даже на разных континентах) друг от друга. Это единственный вариант в такой ситуации поскольку аренда выделенного физического канала связи (кабели по дну моря например) — слишком дорогое удовольствие. Таким образом сотрудники могут подключаться к сети своей организации из дома или из любой другой точки, имея только доступ в интернет и специальный ключ. Именно с помощью ключей шифрования организуется туннели связи, объединяющие разные сети в одну защищённую VPN-структуру.
Что для этого нужно?
Настройка OpenVPN требует наличия следующих компонентов:
- несколько компьютеров-клиентов для организации, собственно, инфраструктуры сети VPN;
- OpenVPN на всех компьютерах-клиентах;
- Easy-RSA – для организации центров сертификации и работы с ключами, также на всех компьютерах;
- корректно настроенный центр сертификации.
Следует отметить, что центр сертификации (ЦС) рекомендуется использовать на отдельной машине. ЦС служит для обслуживания запросов на сертификаты.
Установка ПО
Это, пожалуй самый простой этап. Здесь достаточно воспользоваться менеджером пакетов или системой управления пакетами (СУП) для установки требуемых пакетов ПО. Для любого из популярных дистрибутивов Linux они доступны из стандартный репозиториев. Например, для Ubuntu 18.04:
В зависимости от используемого дистрибутива наименования пакетов могут различаться. Оба пакета нужно устанавливать и на сервере, и у клиентов.
Организация центра сертификации
Это очень важный этап, поскольку от наличия собственного ЦС зависит безопасность организуемой сети VPN. Также это удобно, поскольку собственный ЦС позволяет легко управлять ключами и сертификатами, а также распространять их для клиентов. Также отпадает необходимость хранения всех сертификатов клиентов, поскольку их подписи находятся у ЦС.
ЦС будет находиться в каталоге /etc/openvpn/easy-rsa . Вообще, ЦС можно разместить где угодно. Также необходимо скопировать в хранилище конфигурационные скрипты Easy-RSA:
Теперь необходимо развернуть сам ЦС в каталоге /etc/openvpn/easy-rsa . Для этого следует выполнить в нём некоторые скрипты (которые ранее были сюда скопированы) для создания инфраструктуры для работы ЦС:
Для удобства командная консоль была переведена в «суперпользовательский» режим командой sudo -i. Вторая команда устанавливает все необходимые переменные окружения. Третья команда проверяет, существует ли каталог keys/ и если его нет, то создаёт его. Если он существует, то производится очистка его содержимого. Далее устанавливаются необходимые режимы доступа. Четвёртая команда помещает в keys/ серверные ключи и сертификаты по-умолчанию.
Генерация и настройка ключей клиентов
На данном этапе нужно произвести похожие настройки для Easy-RSA на клиентских машинах, с той лишь разницей, что генерировать ключи нужно на основе главного сертификата серверной машины, на которой работает OpenVPN-сервер. Главный сертификат нужно скопировать на клиентские машины. Но для начала следует создать инфраструктуру клиентского окружения для работы с ключами:
Далее, нужно скопировать главный сертификат сервера (файл *.crt) на все клиентские компьютеры. Для этого удобно использовать утилиту scp:
Далее можно создавать (генерировать) клиентские ключи, используя скопированный с сервера сертификат. Для этого на клиентском компьютере в каталоге /etc/openvpn/easy-rsa нужно выполнить следующие команды:
Важно понимать, что для того, чтобы генерация клиентских ключей была возможной, необходимо, чтобы серверный сертификат находился в каталоге keys/ у клиентов. Сгенерированные в результате клиентские ключи позволяют подключаться к серверу OpenVPN. Однако, для того, чтобы сервер их принимал и предоставлял доступ к VPN-сети, необходимо, чтобы эти ключи (файлы *.csr) были подписаны на самом сервере. Можно также, используя SCP, отправить их на сервер:
$ scp /etc/openvpn/easy-rsa/keys/John.csr username@host:
Теперь, на сервере, предварительно перейдя в каталог /etc/openvpn/easy-rsa , можно выполнить подпись переданного ключа John.csr:
В результате будет создан уже подписанный сервером сертификат, который необходимо отдать клиенту:
На этом организация инфраструктуры для работы с ключами (и сертификатами) завершена. Теперь этого достаточно, чтобы сервер OpenVPN и клиенты установили защищённую связь. Однако необходимо ещё произвести некоторые настройки самой системы OpenVPN.
Также, если планируется для более надёжной защиты использовать TLS-шифрование, то на стороне сервера всё в том же в каталоге /etc/openvpn/easy-rsa выполнить команду:
Настройка сервера OpenVPN
После установки OpenVPN обычно по-умолчанию никаких конфигурационных файлов для работы не предоставляется. Это сделано потому, что для начала нужно определить, как использовать OpenVPN на конкретной машине: в качестве сервера или клиента. Только после этого должна определяться конфигурация, которая, как можно понимать, будет различаться для сервера и для клиента.
Для более удобного задания конфигурации существуют файлы-шаблоны, доступные в /usr/share/doc/openvpn/examples/sample-config-files/ . На их основе можно относительно быстро сконфигурировать целый сервер OpenVPN или его клиент:
Эта команда (точнее конвейер команд) извлечёт и архива server.conf.gz текстовые данные и создаст из них конфигурационный файл server.conf с базовыми настройками работы OpenVPN-сервера. Теперь нужно задать, собственно, актуальные опции. Протокол и номер порта:
Серверные ключи и сертификаты из каталога /etc/openvpn/easy-rsa/keys также необходимо определить в конфигурации:
Также нужно указать диапазон VPN-сети:
Эта запись определяет адрес самого OpenVPN-сервера (10.8.0.0), а также маску его сети. В итоге рабочая конфигурация должна выглядеть следующим образом:
Теперь можно сохранить файл server.conf. Настройка сервера OpenVPN завершена. Далее нужно выполнить его запуск с помощью команды openvpn, указав соответствующий конфигурационный файл:
Настройка клиентов OpenVPN
Теперь необходимо настроить клиентские машины. Также нужно воспользоваться файлами шаблонами, но они доступны без распаковки:
Для клиента может быть задано несколько конфигурационных файлов для подключения к разным серверам OpenVPN. Ключевыми параметрами для клиентской конфигурации являются remote, ca, cert, а также key:
Здесь remote задаёт IP-адрес сервера OpenVPN в Интернет, а также порт подключения, который должен совпадать с тем, что указан в серверной конфигурации. Параметр ca – это серверный сертификат, а cert – созданный на его основе ключ John.csr, а теперь подписанный сертификат John.crt. Параметр key – это закрытый ключ клиента. Следует отметить, что именно при помощи параметров cert и key обеспечивается подключение клиентов к сети VPN.
Готовая рабочая клиентская конфигурация будет следующей:
Теперь можно запускать OpenVPN на клиентском компьютере:
После этого, если всё настроено правильно, клиенты подключатся к VPN. Но на этом ещё не всё. Необходимо настроить перенаправление для туннеля VPN, чтобы пользователи могли направлять и получать через него трафик. Для начала необходимо разрешить серверу пропускать пакеты:
Затем разрешить всем подключаться к серверу OpenVPN:
Ну а также разрешить клиентам доступ в интернет через туннель:
Предыдущие три правила iptables стоит применять, когда в сети действует запрещающая политика. Также нужно следить за тем, чтобы брандмауэр не блокировал подключения по протоколу UDP к OpenVPN-серверу.
Заключение
В заключение необходимо отметить, что настройка сети VPN – довольно трудоёмкое и ответственное занятие. Особое внимание здесь нужно уделять организации ЦС, распространению ключей и сертификатов, а также форвардингу пакетов. Поэтому для таких задач очень важно иметь хорошую квалификацию по администрированию сетей. Также стоит учитывать, что была рассмотрена настройка OpenVPN для систем Ubuntu, однако принципиальной разницы для других дистрибутивов нет.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
Установка OpenVPN в несколько кликов
Привет, Geektimes!
Не так давно мне пришла в голову мысль, что подключение к Linux-серверу по SSH, установка пакетов, запуск скриптов — все это однотипная рутина, для которой не нужно участие человека, ее может сделать робот. Конечно, я пользуюсь Ansible, но он ведь тоже «не для всех».
В результате была написана программа «для всех» в которой просто есть одна кнопка «сделать хорошо». Программа с открытым исходным кодом и доступна для изучения и скачивания на GitHub.
Но одной программы для того, чтобы нести личный OpenVPN в массы, не достаточно. Поэтому была написана эта статья, в которой просто и по шагам расписано все, от создания аккаунта в облачном сервисе, до подключения с мобильного телефона.
Всего нужно выполнить 4 простых шага:
- Создать сервер (обычно достаточно просто нажать кнопку «Создать»)
- Установить и запустить приложение SSHeller
- Нажать кнопку Install и дождаться завершения установки
- Скачать ovpn файл и подключиться к VPN с его помощью
Создание сервера
Подойдет практически любой виртуальный (VPS, VDS) или физический сервер (у виртуального должен быть tun интерфейс). Для примера, ниже приведена инструкция по использованию DigitalOcean, как наиболее стабильного, простого и удобного в использовании облачного провайдера.
Подготовка
Для активации аккаунта необходимо одно из двух:
- аккаунт PayPal
- кредитная карта (именно кредитная, по которой можно уйти в минус, зарплатная/дебетовая не подойдет)
Если будете использовать PayPal — нужно будет внести $5. С кредитной карты-же заблокируют $1 и вернут.
Регистрация на DigitalOcean
Лучше всего регистрироваться по реферальной ссылке — тогда будет автоматически применён промокод на $10. А можно зарегистрироваться заполнив форму на главной странице и позже ввести любой промокод — он легко ищется через google. Их много разных и все по $10.
Перейдя по ссылке, достаточно ввести e-mail и придумать пароль.
После нажатия на кнопку, придет письмо с ссылкой для подтверждения регистрации — по ней нужно будет перейти.
Далее нужно ввести данные кредитной карты, либо PayPal. Это обязательное требование для подтверждения аккаунта. PayPal есть практически у каждого.
После нажатия на кнопку подтверждения, запустится стандартный процесс оплаты. Но есть важная особенность, которая позволит немного сэкономить: ваш банк конвертирует рубли в доллары по более выгодному курсу, нежели PayPal
Нужно нажать View conversion options и выбрать вариант Convert with card issuer
После окончания оплаты, вы попадете на главную страницу Dashboard . Можно перейти в Settings -> Billing чтобы посмотреть баланс.
Здесь Your credit $15 — внесенный аванс. А Usage $0.00 — сумма, которую нужно оплатить. Оплата обычно производится по факту — сколько потратили за месяц, столько вас и попросят оплатить(после исчерпания аванса). В самом низу можно посмотреть, какие были начисления.
Запуск сервера
Сверху-справа нажимаем Create -> Droplets
Откроется страница создания сервера. Нужно задать 3 основных параметра.
Операционная система: Fedora 27 . Это самая маленькая, быстрая и стабильная из доступных. Хотя Debian 9 — тоже хороший выбор. Более того, поддерживаются все доступные ОС, кроме FreeBSD и Debian 7 .
Размер: будет достаточно самого маленького за $5.
Регион — нужно выбрать тот, который территориально к вам ближе. Для Европейской части России — это Amsterdam .
Этого достаточно. В самом низу можно изменить имя, но можно оставить по умолчанию и нажать большую зеленую кнопку Create . Виртуальная машина начнет создаваться, и вскоре вам придет e-mail с ее адресом и паролем.
Установка SSHeller
Для установки достаточно перейти на страницу релизов, скачать соответствующий файл и запустить его.
- Для Windows: SSHeller.Setup.X.X.X.exe
- Для macOS: SSHeller-X.X.X.dmg
- Для Linux: SSHeller-X.X.X-x86_64.AppImage — после загрузки сделать исполняемым и запустить
Теперь SSHeller можно запустить из списка приложений.
Установка сервера OpenVPN
Письмо от DigitalOcean уже должно было прийти. Из него нам нужны 4 параметра.
Запускаем SSheller и жмем Add
Копируем параметры из письма:
- Droplet Name -> Name
- IP Address -> Host
- Username -> User
- Password -> Password
Нажатием Save возвращаемся к списку серверов.
В списке выбираем созданный сервер и нажимаем Connect . Первое подключение займет немного больше времени, так как DigitalOcean создает виртуальные машины с истекшим паролем, и приложению будет необходимо его обновить. После подключения отобразится состояние сервера (Dashboard). Слева сверху нужно открыть меню и выбрать OpenVPN .
На экране OpenVPN, достаточно нажать зеленую кнопку Install и подождать.
Сколько нужно ждать — невозможно предсказать. Иногда это может быть 3 минуты, а иногда — доходить до получаса. Зависит от сервера, на котором запускается ваша виртуальная машина. Чем меньше у сервера заполнен пул энтропии — тем дольше ждать. Если простыми словами: компьютер очень медленно создает новые случайные числа, но делает это постоянно и копит их. А для создания ключей шифрования нужно очень много случайных чисел. Если их кто-то уже использовал — придется подождать.
По окончанию будет выведен отчет. Если интересно, его можно посмотреть.
Сразу будет создан профиль по умолчанию и соответствующий ему файл настроек — client.ovpn . Можно скачать его, а можно создать еще один, или несколько, введя имя нового профиля и нажав кнопку Add .
Для загрузки достаточно кликнуть на соответствующий файл профиля.
Подключение
Windows
Если в папке config будет несколько файлов, то появится подменю для каждого файла.
macOS
Linux
Android
Как можно сэкономить
В DigitalOcean почасовая оплата
Т.е. можно платить только за то время, которым реально пользуешься. И здесь есть два важных замечания:
- Доступный трафик пропорционален времени работы сервера. Если сервер работал только 1/10 месяца (3 дня), то будет доступно только 1/10 трафика (100Гб). За превышение придется доплачивать (1 цент за каждый Гб)
- Чтобы деньги перестали списываться за сервер, его нужно не просто остановить, а полностью уничтожить, нажав на меню возле сервера и далее Destroy , а на появившейся странице сервера еще раз нажать Destroy . В следующий раз нужно будет заново повторять всю настройку, создавать новые ovpn файлы и отправлять их на устройства.
Делитесь с родными и друзьями
Чисто технически, вы можете создать множество профилей, как для разных устройств, так и для разных людей. Вдвоем цена для каждого уже будет $2.5, впятером — $1.
Важно, что по каждому профилю может быть только одно одновременное подключение. Так что, как минимум, нужно создавать отдельные профили для разных устройств.
1 мая 2018 начали появляться комментарии, что некоторые российские провайдеры блокируют Digital Ocean. Есть отличная альтернатива — Linode (сравнение).
- Регистрируемся на главной странице.
- После ввода e-mail, логина и пароля (нужно придумать), придет письмо со ссылкой для подтверждения, переходим по ней
- Откроется расширенная форма регистрации, нужно ввести фамилию, имя, адрес, промо код и данные карты
- промокод на $10 или $20 легко ищется в google, 01.05.2018 работал PodcastInIt2018 на $20
- карта подойдет любая, нет особых требований как у DigitalOcean
- в самом низу выбираем первоначальное пополнение, минимум $5
- После оправки формы, сразу попадаем на страницу создания сервера, в самом низу выбираем Linode 1024 (стоит те же $5 в месяц), ниже выбираем локацию, для Европейской части России ближе всего Frankfurt, DE
- После создания сервера, выбираем его из списка и нажимаем Deploy an Image
- выбираем дистрибутив, например Fedora 27 или Debian 9
- придумываем, запоминаем и вводим пароль сервера
- жмем Deploy
- Нажимаем кнопку Boot чтобы запустить сервер
- Переключаемся на вкладку Remote Access копируем самый первый Public IP, например 172.104.130.238
- Запускаем SSHeller, нажимаем Add
- придумываем и вводим Name
- в Host вставляем скопированный IP
- в User вводим root
- в Password вводим пароль, придуманный на шаге 5
- Сервер грузится не мгновенно, если быстро ввели параметры доступа к серверу, то придется подождать секунд 30
Источник