OpenVPN на Ubuntu 16.04: установка

Обсудить
OpenVPN на Ubuntu 16.04

Что такое OpenVPN

OpenVPN – это технология, использующая принцип VPN для создания зашифрованных каналов между компьютерами. А технология VPN – или Virtual Private Network (виртуальная приватная сеть) – это, грубо говоря, защищенный канал, позволяющий паре устройств соединиться в рамках интернета. Ключевое слово – защищенный. VPN обладает и возможностями анонимайзера, когда IP-адрес компьютера изменяется для того, чтобы его было невозможно отследить. Отсюда пошел миф о том, что VPN и OpenVPN используют в основном злоумышленники – это не так. В первую очередь VPN призван защитить вас, ваши данные и ваш компьютер в целом: при использовании VPN данные шифруются по особому алгоритму, и взломать его крайне проблематично.

В отличие от анонимайзера или использования proxy, VPN позволяет использовать закрытую от внешнего доступа связь логической сети, которая идет поверх публичной при использовании интернета. То есть сетевое соединение составляют два компьютера (которые еще называют «точка-точка»). Благодаря использованию такой зашифрованной платформы и достигается конфиденциальность и целостность всех данных.

OpenVPN – это свободная реализация технологии VPN. При этом OpenVPN является свободным программным обеспечением, распространяемым под лицензией GNU GPL.

Итак, еще раз о плюсах такой системы:

  • ее легко и быстро может настроить даже не очень опытный пользователь;
  • экономия трафика;
  • безопасность и защищенность.

Использование OpenVPN на примере из жизни: допустим, вы хотите подключиться со смартфона или планшета к публичной (и неизвестно, насколько защищенной) сети Wi-Fi где-нибудь в отеле или кафе; технология VPN в сочетании с использованием HTTPS позволяет обеспечить полную защищенность и приватность всем данным, которые вы будете передавать (логины, пароли и другие данные).
В этой статье я расскажу о том, как установить сервер OpenVPN.

Требования

Вам понадобится сервер с установленной операционной системой Ubuntu 16.04, а также пользователь с sudo правами (не суперпользователь). Авторизуйтесь под этим пользователем для того, чтобы выполнить написанные ниже действия.

1. Установка OpenVPN

Начинаем с самого первого – с установки OpenVPN на сервер. Так как OpenVPN есть в стандартных репозиториях Ubuntu, для установки можно использовать утилиту apt. Необходимо еще также установить пакет easy-rsa; он нужен для настройки внутреннего центра сертификации (CA или certificate authority). Центр сертификации нужен для подтверждения подлинности ключей шифрования. Он и будет использоваться в создаваемой VPN сети.

Обновите список доступных пакетов, а затем установите нужные:

$ sudo apt-get update
$ sudo apt-get install openvpn easy-rsa

Следующая задача – настроить то, что мы только что установили.

2. Настройка центра сертификации

OpenVPN – это TLS/SSL VPN. То есть для шифрования трафика между клиентами и сервером будут использоваться сертификаты. Для того, чтобы работали только проверенные сертификаты, необходимо установить собственный центр сертификации (или CA).

Сначала используйте команду make-cadir для того, чтобы скопировать шаблонную директорию easy-rsa в ту директорию, которая является домашней:

$ make-cadir ~/openvpn-ca

Теперь зайдите в эту директорию для того, чтобы приступить к настройке центра сертификации:

$ cd ~/openvpn-ca

Теперь нужно открыть для редактирования файл vars в этой директории. В нем вы сможете настроить переменные, которые будет использовать центр сертификации. Открыть файл можно в любом текстовом редакторе:

$ nano vars

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

Ближе к концу файла вы найдете примерно вот такую часть, которая отвечает за создаваемые сертификаты:

export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"
export KEY_OU="MyOrganizationalUnit"

Все, что идет в кавычках, нужно отредактировать и поменять; главное – не оставляйте там пустое место!

  • export KEY_COUNTRY="RU" – двухбуквенный код страны
  • export KEY_PROVINCE="Moscow" – провинция; так как в России провинций нет, можно написать область
  • export KEY_CITY="Moscow" - город
  • export KEY_ORG="GoodFirm" – название компании
  • export KEY_EMAIL="hello@example.com" – электронный адрес
  • export KEY_OU="IT" – подразделение компании, отдел

Ниже также можно установить имя ключа. Можно и просто назвать server:

export KEY_NAME="server"

После этих изменений сохраните и закройте файл.

3. Создание центра сертификации

Для создания центра сертификации можно использовать переменные, которые были установлены ранее, и утилиты easy-rsa.

Теперь нужно убедиться, что вы находитесь в нужной директории (то есть директории CA – центра сертификации):

$ cd ~/openvpn-ca

А затем использовать следующую команду:

$ source vars

На экране должен отобразиться следующий вывод:

Output
NOTE: If you run ./clean-all, I will be doing a rm -rf on /home/sammy/openvpn-ca/keys

Теперь нужно удалить все ненужные данные для того, чтобы почистить рабочую среду:

$ ./clean-all

Переходим к построению корня центра сертификации:

$ ./build-ca

Запустится процесс создания в том числе ключа и сертификата корня центра сертификации. Ранее необходимые переменные уже были заданы в файле vars, поэтому они будут вставлены автоматически. Во время возникающих вопросов нажимайте Enter для подтверждения:

Output
Generating a 2048 bit RSA private key
..........................................................................................+++
...............................+++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [RU]:
State or Province Name (full name) [Moscow region]:
Locality Name (eg, city) [Moscow]:
Organization Name (eg, company) [GoodFirm]:
Organizational Unit Name (eg, section) [IT]:
Common Name (eg, your name or your server's hostname) [GoodFirm CA]:
Name [server]:
Email Address [hello@example.com]:

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

4. Создание сертификата сервера, ключа и файлов шифрования

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

Начните с генерирования OpenVPN сертификата сервера и пары ключей. Для этого используйте команду:

$ ./build-key-server server

Примечание. Если имя сервера отличается от написанного в этой статье (server), то вам нужно будет изменить некоторые команды, чтобы в них использовалось то имя, которое вы указали ранее. К примеру, необходимо будет изменить файл /etc/openvpn/server.conf для того, чтобы в нем содержались указания на правильные файлы .crt и .key.

Как и до этого, вывод после введения команды будет содержать данные, которые были установлены до этого, поэтому можно просто нажимать Enter для подтверждения корректности данных. Однако не задавайте пароль вызова (challenge password) для этой установки. В конце вам нужно два раза ввести y (yes – да) на два вопроса для подписи и создания сертификата:

Output
. . .

Certificate is to be certified until May 1 17:51:16 2026 GMT (3650 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

Теперь нужно заняться созданием нескольких других вещей, в частности, нужно сгенерировать ключи протокола Диффи — Хеллмана:

$ ./build-dh

Для выполнения этой команды может потребоваться время.

После этого нужно создать подпись HMAC для того, чтобы усилить способности сервера к проверке TLS:

$ openvpn --genkey --secret keys/ta.key

5. Создание сертификата клиента и пары ключей

Наконец, вам необходимо сгенерировать сертификат и пару ключей для клиента. Несмотря на то, что создать ключ можно и на машине клиента (а затем в целях безопасности подписать его в центре сертификации), в этой статье я расскажу о том, как сгенерировать подписанный ключ на сервере.
В данном случае будет сгенерирована одна пара ключ-сертификат для одного клиента, поэтому если у вас не один, а несколько клиентов, вам нужно повторить написанное для всего количества клиентов. Единственное различие будет состоять в том, что значение скрипта должно быть уникальным для каждого клиента.

Для удобства (чтобы вы могли использовать эту инструкцию и возвращаться к ней потом) для файла vars будет еще раз выполнена команда source. А client1 будет является значением для первого сертификата и пары ключей.

$ cd ~/openvpn-ca
$ source vars

Если вы хотите создать файлы без пароля и облегчить автоматические соединения, пользуйтесь командой built-key:

$ ./build-key client1

Если вы, наоборот, хотите использовать защиту паролем, то пользуйтесь командой build-key-pass:

$ ./build-key-pass client1

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

На этом установка закончена. В следующей статье я расскажу о том, как правильно настроить OpenVPN.

Свой VDS сервер

Комментарии