Содержание:
- Теория
- Установка OpenVPN
- Запуск сервера OpenVPN
- Настройка сервера OpenVPN
- Встраивание сертификатов в файл .ovpn
- Заключение
Virtual Private Network (VPN) дословно переводится как «виртуальная частная сеть». VPN создаёт надёжное шифрованное соединение между устройствами — VPN-туннель. Благодаря такому соединению, при подключении к незащищённой сети (например, WiFi в кафетерии), трафик пройдёт через VPN-сервер, что защитит его от постороннего вмешательства.
Бесплатные VPN и прокси отличаются нестабильностью из-за множества активных пользователей. Такие сервисы могут беспричинно прекратить работу в любой момент. Платные же инструменты могут исчезнуть в ближайшем будущем, в связи с законом о запрете анонимайзеров и VPN.
В сложившейся ситуации лучшим решением будет настроить собственную виртуальную частную сеть. В этой статье расскажем как установить собственную виртуальную частную сеть на примере VPN-клиента OpenVPN и Ubuntu 18.04. Установка OpenVPN на CentOS, Debian и другие популярные Linux дистрибутивы происходит по похожей схеме.
Теория
Что такое VPN
VPN-соединение создаётся за счёт связки клиент-серверной архитектуры. Клиенты подключаются к серверу VPN, объединяются в виртуальную сеть, безопасно обмениваются данными. Для подключения к Интернету клиент обращается к серверу VPN, а тот, в свою очередь, получает данные из глобальной сети и передаёт их обратно клиенту.
Другими словами, VPN создаёт безопасный коридор между вашими устройствами и сетью. Этот коридор незаметен, а данные, находящиеся в нём, невозможно перехватить. Все соединения идут не напрямую, а через сервер, который может находиться в любой точке мира.
OpenVPN
Один из способов создания виртуальной частной сети – использование бесплатной программы OpenVPN. Утилиту или её исходный код можно скачать на официальном сайте. OpenVPN работает при помощи сертификатов и асимметричного шифрования. То есть передаваемые данные шифруются одним ключом, а расшифровываются другим.
Пара ключей шифрования
- Публичный ключ – сертификат, который может быть в свободном доступе, производит шифрование данных (email сообщения, проверка ЭЦП).
- Приватный ключ – хранящийся в ограниченном доступе, только у заинтересованных лиц, расшифровывает данные, зашифрованные публичным ключом.
Для того чтобы такая пара ключей работала, они должны быть подписаны центром авторизации (certification authority, CA). При этом CA имеет свой сертификат и приватный ключ, которые нужны для идентификации созданной пары ключей.
Что нужно для работы OpenVPN
Для настройки VPN необходим виртуальный частный сервер (virtual private server, VPS/VDS). В качестве ОС будет использоваться Ubuntu — один из самых популярных и стабильных серверных дистрибутивов на базе Linux.
VPS можно арендовать у подходящего хостинг-провайдера. При выборе виртуального сервера важно, чтобы он подходил под следующие условия:
- Оперативная память (RAM) — не менее 512 МБ.
- Скорость сетевого интерфейса — 100 мб/сек или выше.
- Физический сервер должен находиться максимально близко к будущему пользователю. Это обеспечит минимальную задержку (пинг) и позволит соответствовать местным законам.
Такие факторы, как объём постоянной памяти и тип накопителя, практически не имеют значения.
Установка OpenVPN
Подготовка
Установка OpenVPN на Ubuntu 18.04 начинается с установки пакетов OpenVPN и Easy-rsa из репозитория. Утилита Easy-rsa необходима для управления ключами и сертификатами.
Перед инсталляцией необходимо обновить список пакетов:
Теперь нужно выполнить установку OpenVPN и Easy–rsa:
Также в процессе работы пригодится пакет NetTOOLS, включающий в себя все необходимые сетевые инструменты. Установка выполняется командой:
Настройка центра сертификации
Настройка сервера OpenVPN на Ubuntu начинается с установки центра сертификации и создания корневого сертификата:
При выполнении последней команды программа попросит пользователя придумать пароль. Созданный код доступа будет использоваться в последующих действиях для подписи сертификатов и ключей.
В результате создаются файлы:
- /etc/openvpn/easy-rsa/pki/ca.crt – сертификат CA. Он необходим клиентам и серверу для проверки подписи CA.
- /etc/openvpn/easy-rsa/pki/private/ca.key – приватный ключ CA.
Для удобства нужно создать каталог, в котором будут храниться все необходимые сертификаты и ключи OpenVPN:
Теперь необходимо скопировать корневой сертификат OpenVPN в созданную папку:
Ключи OpenVPN для сервера
Генерация ключей для сервера OpenVPN выполняется следующей командой:
Далее созданный сертификат подписывается ключом CA:
Появится предупреждение с запросом подтвердить подпись. Нужно написать «yes» и ввести пароль центра сертификации.
Созданные файлы копируются в каталог для сертификатов:
Теперь нужно создать файл параметров Diffie–Hellman:
Последним создаётся ключ HMAC (hash-based message authentication code):
Теперь в папке, созданной для хранения сертификатов, должно быть 5 файлов. Проверить их наличие можно командой:
Создание ключей клиентов OpenVPN
Сгенерировать ключи и выполнить их подпись можно следующей командой:
На вопрос о намерении подписать нужно ответить «yes» и ввести пароль CA.
Запуск сервера OpenVPN
Создание конфигурационного файла OpenVPN
Для настройки OpenVPN нужно создать файл конфигурации клиента:
Далее в него копируется следующий конфиг OpenVPN сервера:
Теперь файл необходимо сохранить и закрыть. Для этого нужно воспользоваться сочетанием клавиш «Ctrl+X», затем «Y» и подтвердить операцию нажатием «Enter».
Тестирование сервера OpenVPN
Создание сервера OpenVPN завершено. Перед тем как подключиться к нему, остаётся только проверить созданный конфигурационный файл на наличие ошибок. Для этого нужно произвести тестовый запуск:
Об успешном старте сигнализирует сообщение «Initialization Sequence Completed».
Если всё в порядке, то можно запускать службу OpenVPN сервера для постоянной работы. Также нужно добавить программу в автозагрузку, чтобы развёртывание OpenVPN осуществлялось при каждом запуске системы. Все это делается двумя командами:
Команда systemctl использует формат вида «openvpn–server@<configuration>.service». Где «<configuration>» – конфигурация из папки «/etc/openvpn/» без расширения .conf.
Получить информацию о работе службы можно с помощью команды:
Включение маршрутизации трафика на OpenVPN сервере
При подключении к серверу доступа к глобальной сети не будет, поскольку маршрутизация трафика не выполняется. Чтобы её добавить, нужно выполнить следующие действия.
Для начала создаётся файл «vpn_route.sh» а каталоге «/root/bin/».
Если папка отсутствует, её необходимо создать:
Далее, в открывшийся файл, нужно внести конфигурацию:
После сохранения нужно сделать файл исполняемым:
Далее проводится пробный запуск скрипта для выявления ошибок:
Если всё в порядке, то остаётся добавить добавить созданный скрипт в автозагрузку. Для этого нужно создать службу systemd:
В открывшийся файл вносятся следующие данные:
Теперь нужно добавить созданную службу в автозагрузку:
Настройка клиента OpenVPN сервера
Перенос ключей и сертификатов
На данном этапе настройки конфигурации OpenVPN необходимо разместить ранее созданные файлы на клиентском компьютере.
Если клиент OpenVPN на Windows, создается папка по пути «C:\Program Files\OpenVPN\certs\». В нее перемещаются следующие элементы:
- Файлы ca.crt и ta.key из папки /etc/openvpn/certs.
- Файл client1.crt из папки /etc/openvpn/easy-rsa/pki/issued.
- Файл client1.key из папки /etc/openvpn/easy-rsa/pki/private/.
Кстати. Выполнить перенос данных можно с помощью FTP-клиента WinSCP.
Если клиент работает на Ubuntu, файлы переносятся следующим образом:
- С сервера из папки /etc/openvpn/certs файлы ca.crt и ta.key, копируются в папку /etc/openvpn/certs.
- С сервера из папки /etc/openvpn/easy-rsa/pki/issued/ файл client1.crt, копируются в папку /etc/openvpn/certs.
- С сервера из папки /etc/openvpn/easy-rsa/pki/private/ файл client1.key, копируется в папку /etc/openvpn/certs.
Отправить файлы на устройство под управлением Linux можно с помощью FTP-клиента FileZilla.
Настройка OpenVPN на Windows
Клиент для Windows можно скачать с официального сайта.
Ранее в папку «C:\Program Files\OpenVPN\certs\» были перемещены сертификаты и ключи для подключения к OpenVPN серверу. Теперь необходимо добавить конфигурацию для работы программы. Для этого нужно создать в папке «C:\Program Files\OpenVPN\config\» файл «client.ovpn» и добавить в него следующие строки:
После сохранения остаётся выбрать в программе профиль «client» и нажать «Подключиться» для установки соединения с сервером.
Настройка клиента на Ubuntu
Клиент OpenVPN поставляется совместно с серверной частью, поэтому при установке указывается тот же пакет, что и в начале статьи – «openvpn»:
Ранее ключи уже были сгенерированы (ca.crt, client1.crt, client1.key, ta.key) и перемещены в папку «/etc/openvpn/certs/». Проверить их наличие можно следующей командой:
Если все 5 файлов присутствуют, то можно переходить к созданию конфигурационного файла OpenVPN client:
В открывшийся файл настроек необходимо внести следующую конфигурацию:
Перед тем как запустить OpenVPN, нужно заменить некоторые значения на собственные. Далее файл сохраняется и закрывается.
Выполнить тестовый запуск клиента с указанными параметрами можно следующей командой:
Об успешном подключении просигнализирует сообщение: «Initialization Sequence Completed».
Теперь можно запустить службу OpenVPN для работы в скрытом режиме:
Проверка статуса службы:
Добавление службу в автозагрузку:
Остановка службы VPN:
Удаление из автозагрузки:
Встраивание сертификатов в файл .ovpn
Содержимое сертификатов и ключей можно указать в конфигурационном файле .ovpn. Это позволяет использовать только один документ для переноса всех аутентификационных данных, что существенно ускоряет процесс подготовки клиентской части.
Данные сертификатов заносятся в парные теги, которые имеют такое же наименование, как и стандартные опции (ca, cert, dh, tls–auth, key и т. д.). Далее это будет показано на примере ранее созданного конфигурационного файла client.conf.
Для начала нужно удалить из файла прописанные сертификаты и ключи:
Так как «tls–auth» – дополнительная опция, то её необходимо добавить отдельной строкой, введя:
Далее нужно создать парные теги, как ниже, и перенести данные о ключах:
Вместо многоточия указывается содержание публичного или приватного ключа между заголовками «BEGIN» и «END».
После сохранения настроек файл можно передать клиентам OpenVPN.
Заключение
Своя собственная VPN сеть позволяет обезопасить передаваемые личные данные в огромном потоке информации, а также даст доступ практически ко всем ресурсам Всемирной паутины.
Настроить OpenVPN на Ubuntu для создания своей собственной сети достаточно легко. Нужно лишь внимательно следует следовать приведённой инструкции и правильно выбрать поставщика хостинг-услуг.