Настройка openvpn server ubuntu


Настройка сервера OpenVPN в Ubuntu 18.04

Предыдущая версия данного обучающего руководства была написана Джастином Эллингвудом

Введение

Хотите организовать безопасный и защищенный доступ к интернету на смартфоне или ноутбуке при подключении к ненадежной сети, например к сети WiFi в гостинице или кафе? Виртуальная частная сеть (VPN) позволит вам конфиденциально и безопасно работать в незащищенных сетях, как если бы вы находились в частной сети. Трафик поступает с сервера VPN и продолжает движение в пункт назначения.

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

OpenVPN — полнофункциональное решение SSL VPN с открытым исходным кодом, поддерживающее широкий ассортимент конфигураций. В этом обучающем модуле вы настроите сервер OpenVPN на сервере Ubuntu 18.04, а затем настроите доступ к нему из Windows, macOS, iOS и/или Android. Приведенные в этом обучающем модуле шаги по установке и настройке максимально упрощены для каждого из вариантов.

Примечание. Если вы планируете настроить сервер OpenVPN на DigitalOcean Droplet, то мы, как и многие поставщики хостинга, будем взимать плату за превышение лимита пропускной способности. По этой причине необходимо следить за объемом трафика, который обрабатывает ваш сервер.

Дополнительную информацию можно найти на этой странице.

Предварительные требования

Чтобы пройти этот обучающий модуль вам потребуется доступ к серверу Ubuntu 18.04, где будет размещаться служба OpenVPN. Перед началом прохождения обучающего модуля вам нужно будет настроить пользователя без привилегий root с привилегиями sudo. Вы можете воспользоваться нашим руководством Начальная настройка сервера Ubuntu 18.04, чтобы создать пользователя с соответствующими разрешениями. Настоящий обучающий модуль предусматривает использование брандмауэра, описание настройки которого приведено в доступном по ссылке обучающем модуле.

Также вам потребуется отдельный компьютер для выполнения функций центра сертификации (CA). Хоте в качестве центра сертификации технически возможно использовать сервер OpenVPN на локальном компьютере, это делать не рекомендуется, поскольку при этом в вашей сети VPN могут возникнуть некоторые уязвимости системы безопасности. Согласно официальной документации OpenVPN, вы должны разместить CA на отдельном компьютер, который будет отвечать за импорт и подписание запросов сертификатов. По этой причине в данном обучающем модуле предполагается, что ваш CA располагается на отдельном сервере Ubuntu 18.04, где также имеются пользователь без привилегий root с привилегиями sudo и базовый брандмауэр.

Обратите внимание, что если вы отключите аутентификацию с помощью пароля при настройке этих серверов, вы можете столкнуться с трудностями при передаче файлов между ними, как предусматривается последующими разделами этого обучающего модуля. Чтобы устранить эту проблему, вам нужно будет заново включить аутентификацию с помощью пароля на каждом сервере. Также вы можете сгенерировать пару ключей SSH для каждого сервера и добавить публичный ключ SSH сервера OpenVPN в файл authorized_keys на компьютере CA, и наоборот. Дополнительные инструкции по этим решениям можно найти в обучающем модуле Настройка ключей SSH в Ubuntu 18.04.

Убедившись в выполнении предварительных требований, вы можете перейти к шагу 1 настоящего обучающего модуля.

Шаг 1 — Установка OpenVPN и EasyRSA

Для начала выполните обновление индекса пакетов вашего сервера VPN и установите OpenVPN. OpenVPN имеется в хранилищах Ubuntu по умолчанию, и поэтому вы можете использовать для установки apt:

  • sudo apt update
  • sudo apt install openvpn

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

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

Чтобы начать построение CA и инфраструктуры PKI, используйте wget для загрузки последней версии EasyRSA на систему CA и на сервер OpenVPN. Чтобы получить последнюю версию, откройте страницу Релизы на официальном сервере EasyRSA на проекте GitHub, скопируйте ссылку для загрузки файла с расширением .tgz и вставьте ее в следующую команду:

  • wget -P ~/ https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.4/EasyRSA-3.0.4.tgz

Затем извлеките tarball:

  • cd ~
  • tar xvf EasyRSA-3.0.4.tgz

Вы успешно установили все требуемое программное обеспечение на свой сервер и на систему CA. Далее необходимо настроить переменные для EasyRSA и каталог CA, откуда будут генерироваться ключи и сертификаты, необходимые вашему серверу и клиентам для доступа к VPN.

Шаг 2 — Настройка переменных EasyRSA и построение CA

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

Откройте на компьютере CA каталог EasyRSA:

В этом каталоге есть файл с именем vars.example. Создайте копию этого файла и присвойте ей имя vars без расширения:

Откройте новый файл в предпочитаемом текстовом редакторе:

Найдите настройки параметров по умолчанию для новых сертификатов. Он будет выглядеть примерно так:

~/EasyRSA-3.0.4/vars

. . . #set_var EASYRSA_REQ_COUNTRY "US" #set_var EASYRSA_REQ_PROVINCE "California" #set_var EASYRSA_REQ_CITY "San Francisco" #set_var EASYRSA_REQ_ORG "Copyleft Certificate Co" #set_var EASYRSA_REQ_EMAIL "[email protected]" #set_var EASYRSA_REQ_OU "My Organizational Unit" . . . 

Уберите значки комментария из этих строк и замените выделенные значения предпочитаемыми, но не оставляйте их пустыми:

~/EasyRSA-3.0.4/vars

. . . set_var EASYRSA_REQ_COUNTRY "US" set_var EASYRSA_REQ_PROVINCE "NewYork" set_var EASYRSA_REQ_CITY "New York City" set_var EASYRSA_REQ_ORG "DigitalOcean" set_var EASYRSA_REQ_EMAIL "[email protected]" set_var EASYRSA_REQ_OU "Community" . . . 

После завершения редактирования сохраните и закройте файл.

В каталоге EasyRSA имеется скрипт easyrsa, который вызывается для выполнения разнообразных задач, связанных с построением и управлением CA. Запустите этот скрипт с опцией init-pki, чтобы запустить инфраструктуру открытых ключей на сервере CA:

Output

. . . init-pki complete; you may now create a CA or requests. Your newly created PKI dir is: /home/sammy/EasyRSA-3.0.4/pki

Затем снова запустите скрипт easyrsa с опцией build-ca. В результате будет создан центр сертификации и два важных файла, ca.crt и ca.key, представляющие открытую и закрытую части сертификата SSL.

  • ca.crt — файл открытой части сертификата CA, который используется сервером и клиентом OpenVPN, чтобы информировать друг друга о том, что они входят в единую сеть доверия и что между ними отсутствует потенциальный злоумышленник в качестве посредника. В связи с этим, копия файла ca.crt потребуется для вашего сервера и для всех ваших клиентов.
  • ca.key — закрытый ключ CA, используемый для подписания ключей и сертификатов серверов и клиентов. Если злоумышленник получит доступ к CA и файлу ca.key, он сможет подписывать запросы сертификатов и получать доступ к вашей VPN, что нарушит ее безопасность. Поэтому файл ca.key должен храниться только на компьютере CA, и для дополнительной безопасности компьютер CA следует выключать, когда он не используется для подписывания запросов сертификатов.

Если вы не хотите вводить пароль при каждом взаимодействии с CA, вы можете запустить команду build-ca с опцией nopass:

  • ./easyrsa build-ca nopass

После выполнения команды вам будет предложено подтвердить обычное имя CA:

Output

. . . Common Name (eg: your user, host, or server name) [Easy-RSA CA]:

Обычное имя — это имя, которое будет использоваться для этой системы в контексте центра сертификации. Вы можете выбрать любое имя CA, но в данном случае проще всего нажать ENTER, чтобы принять имя по умолчанию.

Теперь ваш центр сертификации установлен и готов подписывать запросы сертификатов.

Шаг 3 — Создание сертификата сервера, ключа и файлов шифрования

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

Для начала откройте каталог EasyRSA на сервере OpenVPN:

Запустите на сервере скрипт easyrsa с опцией init-pki. Хотя вы уже запускали эту команду в системе с CA, ее необходимо запустить здесь, потому что ваш сервер и центр сертификации используют разные каталоги PKI:

Вызовите скрипт easyrsa еще раз и используйте опцию gen-req с обычным именем этого компьютера. Вы можете использовать любое имя, но лучше всего выбрать запоминающийся вариант. В этом обучающем модуле для сервера OpenVPN мы будем использовать обычное имя «сервер». Обязательно добавьте опцию nopass. Без этого файл запроса будет защищен паролем, что впоследствии может привести к проблемам с разрешениями:

Примечание. Если вы выберете любое другое имя, кроме «server», вы должны будете следовать некоторым из приведенных ниже инструкций с изменениями. Например, при копировании сгенерированных файлов в каталог /etc/openvpn вам нужно будет указать правильные имена. Позднее вам нужно будет изменить файл etc/openvpn/server.conf, чтобы он указывал на соответствующие файлы .crt и .key.

  • ./easyrsa gen-req server nopass

В результате будет создан закрытый ключ для сервера и файл запроса сертификата с именем server.req. Скопируйте ключ сервера в каталог /etc/openvpn/:

  • sudo cp ~/EasyRSA-3.0.4/pki/private/server.key /etc/openvpn/

Используя безопасный метод (например, SCP как в примере ниже), переместите файл server.req на компьютер CA:

Откройте на компьютере CA каталог EasyRSA:

Снова запустите скрипт easyrsa и импортируйте файл server.req, добавив в путь к файлу обычное имя:

  • ./easyrsa import-req /tmp/server.req server

Затем подпишите запрос, запустив скрипт easyrsa с опцией sign-req и указанием типа запроса и обычного имени. Запрос может относиться к типу клиента или сервера, и для запроса сертификата сервера OpenVPN следует использовать запрос типа сервера:

  • ./easyrsa sign-req server server

В результатах вам будет предложено убедиться, что запрос поступил из надежного источника. Для подтверждения введите yes и нажмите ENTER:

You are about to sign the following certificate. Please check over the details shown below for accuracy. Note that this request has not been cryptographically verified. Please be sure it came from a trusted source or that you have verified the request checksum with the sender. Request subject, to be signed as a server certificate for 3650 days: subject= commonName = server Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes 

Если вы зашифровали ключ CA, вам будет предложено ввести пароль.

Затем переместите подписанный сертификат на сервер VPN, используя защищенный метод:

Прежде чем выполнять выход из системы на компьютере CA, переместите файл ca.crt на ваш сервер:

Затем снова выполните вход в систему на сервере OpenVPN и скопируйте файлы server.crt и ca.crt в каталог /etc/openvpn/:

  • sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/

После этого перейдите в каталог EasyRSA:

Создайте надежный ключ Диффи-Хеллмана, который будет использоваться при обмене ключами:

Для этого может потребоваться несколько минут. После завершения сгенерируйте подпись HMAC для укрепления возможностей сервера по проверке целостности TLS:

  • openvpn --genkey --secret ta.key

Когда команда будет выполнена, скопируйте два новых файла в каталог /etc/openvpn/:

  • sudo cp ~/EasyRSA-3.0.4/ta.key /etc/openvpn/
  • sudo cp ~/EasyRSA-3.0.4/pki/dh.pem /etc/openvpn/

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

Шаг 4 — Создание сертификата клиента и пары ключей

Хотя вы можете сгенерировать закрытый ключ и запрос сертификата на клиентской системе и отправить их в CA для подписания, в этом обучающем модуле мы рассмотрим процесс генерирования запроса сертификата на сервере. Преимущество этого способа заключается в том, что мы можем создать скрипт, который будет автоматически генерировать файлы конфигурации клиентов, содержащие все необходимые ключи и сертификаты. Благодаря этому вам не нужно будет передавать ключи, сертификаты и файлы конфигурации на клиентские системы, и процесс подключения к VPN ускорится.

В этом обучающем модуле мы создадим одну пару из ключа и сертификата для клиентской системы. Если у вас несколько клиентских систем, вы можете повторить этот процесс для каждой такой системы. Обратите внимание, что для каждого клиента в скрипте нужно указать уникальное имя. В этом обучающем модуле мы будем использовать первую пару сертификат/ключ под именем client1.

Вначале создайте в домашнем каталоге структуру каталогов, где будут храниться файлы сертификатов и ключей клиентской системы:

  • mkdir -p ~/client-configs/keys

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

  • chmod -R 700 ~/client-configs

Вернитесь в каталог EasyRSA и запустите скрипт easyrsa с опциями gen-req и nopass, указав обычное имя клиента:

  • cd ~/EasyRSA-3.0.4/
  • ./easyrsa gen-req client1 nopass

Нажмите ENTER, чтобы подтвердить обычное имя. Скопируйте файл client1.key в ранее созданный каталог /client-configs/keys/:

  • cp pki/private/client1.key ~/client-configs/keys/

Затем переместите файл client1.req на компьютер CA, используя безопасный метод:

Войдите в систему на компьютере CA, откройте каталог EasyRSA и импортируйте запрос сертификата:

  • ssh [email protected]_CA_ip
  • cd EasyRSA-3.0.4/
  • ./easyrsa import-req /tmp/client1.req client1

Затем подпишите запрос, как сделали это для сервера на предыдущем шаге. Однако в этот раз обязательно укажите тип запроса client:

  • ./easyrsa sign-req client client1

В диалоге введите yes, чтобы подтвердить, что вы планируете подписать запрос сертификата, и что он поступил из доверенного источника:

Output

Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes

Если вы зашифровали свой ключ CA вам будет предложено ввести пароль.

В результате будет создан файл клиентского сертификата с именем client1.crt. Переместите этот файл обратно на сервер.

Подключитесь к серверу OpenVPN через SSH и скопируйте клиентский сертификат в каталог /client-configs/keys/:

  • cp /tmp/client1.crt ~/client-configs/keys/

Затем скопируйте файлы ca.crt и ta.key в каталог /client-configs/keys/:

  • cp ~/EasyRSA-3.0.4/ta.key ~/client-configs/keys/
  • sudo cp /etc/openvpn/ca.crt ~/client-configs/keys/

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

Шаг 5 — Настройка службы OpenVPN

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

Прежде всего скопируйте файл с образцом конфигурации OpenVPN в каталог configuration и извлеките его, чтобы использовать в качестве основы:

  • sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
  • sudo gzip -d /etc/openvpn/server.conf.gz

Откройте файл конфигурации сервера в предпочитаемом текстовом редакторе:

  • sudo nano /etc/openvpn/server.conf

Найдите раздел HMAC, выполнив поиск директивы tls-auth. Комментарии из этой строки должны быть уже удалены, но если строка еще закомментирована, уберите символ «;» в начале строки:

/etc/openvpn/server.conf

tls-auth ta.key 0 # This file is secret 

Затем найдите раздел криптографических шифров, выполнив поиск строк комментариев с текстом cipher. Шифр AES-256-CBC обеспечивает хороший уровень шифрования и хорошо поддерживается. Комментарии из этой строки должны быть уже удалены, но если строка еще закомментирована, уберите символ «;» в начале строки:

/etc/openvpn/server.conf

cipher AES-256-CBC 

Добавьте под этой строкой директиву auth, чтобы выбрать алгоритм обработки сообщений HMAC. Для этого хорошо подойдет SHA256:

/etc/openvpn/server.conf

auth SHA256 

Затем найдите строку с директивой dh, которая определяет параметры алгоритма Диффи-Хеллмана. В связи с недавними изменениями EasyRSA имя файла ключа Диффи-Хеллмана может отличаться от указанного в файле образца конфигурации сервера. Если потребуется, измените указанное здесь имя файла, удалив цифры 2048 для соответствия ключу, сгенерированному на предыдущем шаге:

/etc/openvpn/server.conf

dh dh.pem 

Наконец, найдите настройки user и group и удалите «;» из начала каждой строки:

/etc/openvpn/server.conf

user nobody group nogroup 

Внесенные в файл образца server.conf изменения необходимы для работы OpenVPN. Описанные ниже изменения не обязательны, однако они также необходимы для многих распространенных вариантов использования.

(Необязательно) Изменение DNS для перенаправления всего трафика через сеть VPN

Вышеуказанные настройки создадут соединение VPN между двумя компьютерными системами, но не заставят никакие соединения использовать туннель. Если вы хотите использовать VPN для перенаправления всего вашего трафика, вам нужно будет передать настройки DNS на клиентские компьютеры.

В файле server.conf имеется несколько директив, которые нужно изменить для активации этой функции. Найдите раздел redirect-gateway и удалите точку с запятой «;» в начале строки redirect-gateway, чтобы убрать режим комментария:

/etc/openvpn/server.conf

push "redirect-gateway def1 bypass-dhcp" 

Под этой строкой найдите раздел dhcp-option. Снова удалите символ «;» в начале каждой из строк, чтобы убрать режим комментария:

/etc/openvpn/server.conf

push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 208.67.220.220" 

Это поможет клиентам изменить настройки DNS, чтобы туннель VPN использовался как шлюз по умолчанию.

(Необязательно) Изменение порта и протокола

По умолчанию сервер OpenVPN использует для подключения клиентов порт 1194 и протокол UDP. Если вам потребуется использовать другой порт из-за ограничений сети клиента, вы можете изменить номер порта. Если вы не храните веб-контент на сервере OpenVPN, вам подойдет порт 443, поскольку его обычно не запрещают правила брандмауэра.

/etc/openvpn/server.conf

# Optional! port 443 

Довольно часто этот порт также ограничивает протокол. Если это так, измените значение proto с UDP на TCP:

/etc/openvpn/server.conf

# Optional! proto tcp 

Если вы действительно смените протокол на TCP, вам нужно будет изменить значение директивы explicit-exit-notify с 1 на 0, поскольку эта директива используется только протоколом UDP. В противном случае при запуске службы OpenVPN возможны ошибки протокола TCP :

/etc/openvpn/server.conf

# Optional! explicit-exit-notify 0 

Если вам не нужно использовать другие порт и протокол, лучше всего оставить настройки по умолчанию.

(Необязательно) Указание на учетные данные, отличающиеся от используемых по умолчанию

Если вы выбрали другое имя при использовании команды ./build-key-server, измените строки cert и key так, чтобы они указывали на соответствующие файлы .crt и .key. Если вы использовали имя по умолчанию «server», ничего изменять не нужно:

/etc/openvpn/server.conf

cert server.crt key server.key 

После завершения редактирования сохраните и закройте файл.

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

Шаг 6 — Настройка конфигурации сети сервера

Чтобы OpenVPN мог правильно перенаправлять трафик через сеть VPN, необходимо изменить некоторые параметры конфигурации сети сервера. Прежде всего нужно изменить параметр IP forwarding, который определяет необходимость перенаправления IP-трафика. Это необходимо для реализации функций VPN, обеспечиваемых вашим сервером.

Для изменения настройки переадресации IP по умолчанию на вашем сервере следует отредактировать файл /etc/sysctl.conf:

  • sudo nano /etc/sysctl.conf

Найдите в файле строку комментария с параметром net.ipv4.ip_forward. Удалите символ «#» из начала строки, чтобы убрать режим комментария для этой настройки:

/etc/sysctl.conf

net.ipv4.ip_forward=1 

Сохраните файл и закройте его после завершения.

Чтобы прочитать файл и изменить значения для текущей сессии, введите:

Output

net.ipv4.ip_forward = 1

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

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

Публичный интерфейс компьютера показан в результатах выполнения этой команды после слова «dev». Например, в этом результате показан интерфейс с именем wlp11s0, который выделен ниже:

Output

default via 203.0.113.1 dev wlp11s0 proto static

Когда у вас будет интерфейс, связанный с маршрутом по умолчанию, откройте файл /etc/ufw/before.rules, чтобы добавить соответствующую конфигурацию:

  • sudo nano /etc/ufw/before.rules

Правила UFW обычно добавляются с помощью команды ufw. Правила, перечисленные в файле before.rules, считываются и активируются до загрузки обычных правил UFW. Добавьте в верхнюю часть файла выделенные ниже строки. После этого будет задана политика по умолчанию для цепочки POSTROUTING в таблице nat, и любой трафик из VPN будет маскироваться. Обязательно замените wlp11s0 в строке -A POSTROUTING на интерфейс, определенный с помощью следующей команды:

/etc/ufw/before.rules

# # rules.before # # Rules that should be run before the ufw command line added rules. Custom # rules should be added to one of these chains: # ufw-before-input # ufw-before-output # ufw-before-forward # # START OPENVPN RULES # NAT table rules *nat :POSTROUTING ACCEPT [0:0] # Allow traffic from OpenVPN client to wlp11s0 (change to the interface you discovered!) -A POSTROUTING -s 10.8.0.0/8 -o wlp11s0 -j MASQUERADE COMMIT # END OPENVPN RULES # Don't delete these required lines, otherwise there will be errors *filter . . . 

Сохраните файл и закройте его после завершения.

Затем вам нужно будет указать UFW разрешать перенаправление пакетов по умолчанию. Для этого откройте файл /etc/default/ufw:

  • sudo nano /etc/default/ufw

Найдите в файле директиву DEFAULT_FORWARD_POLICY и измените значение с DROP на ACCEPT:

/etc/default/ufw

DEFAULT_FORWARD_POLICY="ACCEPT" 

Сохраните файл и закройте его после завершения.

Затем измените настройки брандмауэра, чтобы разрешить трафик OpenVPN. Если вы не изменили порт и протокол в файле /etc/openvpn/server.conf, вам нужно будет открыть трафик UDP на порту 1194. Если вы изменили порт или протокол, замените выбранные здесь значения.

Если вы забыли добавить порт SSH при выполнении обязательного обучающего модуля, добавьте его сейчас:

  • sudo ufw allow 1194/udp
  • sudo ufw allow OpenSSH

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

  • sudo ufw disable
  • sudo ufw enable

Теперь ваш сервер настроен для правильной обработки трафика OpenVPN.

Шаг 7 — Запуск и активация службы OpenVPN

Теперь вы готовы запустить службу OpenVPN на своем сервере. Для этого нужно использовать утилиту systemd systemctl.

Запустите сервер OpenVPN, указав имя файла конфигурации в качестве переменной экземпляра после имени файла systemd. Файл конфигурации вашего сервера имеет имя /etc/openvpn/server.conf, поэтому при его вызове в конец файла нужно добавить @server:

Еще раз убедитесь, что служба успешно запущена, введя следующую команду:

Если все прошло хорошо, результат будет выглядеть примерно следующим образом:

Output

[email protected] - OpenVPN connection to server Loaded: loaded (/lib/systemd/system/[email protected]; disabled; vendor preset: enabled) Active: active (running) since Tue 2016-05-03 15:30:05 EDT; 47s ago Docs: man:openvpn(8) https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Process: 5852 ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/%i.conf --writepid /run/openvpn/%i.pid (code=exited, sta Main PID: 5856 (openvpn) Tasks: 1 (limit: 512) CGroup: /system.slice/system-openvpn.slice/[email protected] └─5856 /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/server.conf --writepid /run/openvpn/server.pid

Также вы можете проверить доступность интерфейса OpenVPN tun0 с помощью следующей команды:

Будет выведен настроенный интерфейс:

Output

4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 100 link/none inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0 valid_lft forever preferred_lft forever

После запуска службы активируйте ее, чтобы она автоматически запускалась при загрузке:

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

Шаг 8 — Создание инфраструктуры конфигурации клиентских систем

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

Для начала создайте новый каталог для хранения файлов конфигурации клиентов в ранее созданном каталоге client-configs:

  • mkdir -p ~/client-configs/files

Затем скопируйте файл с образцом конфигурации клиента в каталог client-configs, чтобы использовать его как базовую конфигурацию:

  • cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf

Откройте новый файл в текстовом редакторе:

  • nano ~/client-configs/base.conf

Найдите в файле директиву remote. Она указывает клиенту адрес сервера OpenVPN, т. е. публичный IP-адрес вашего сервера OpenVPN. Если вы решили изменить порт, который будет прослушивать сервер OpenVPN, вам нужно будет заменить 1194 на выбранный порт:

~/client-configs/base.conf

. . . # The hostname/IP and port of the server. # You can have multiple remote entries # to load balance between the servers. remote your_server_ip 1194 . . . 

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

~/client-configs/base.conf

proto udp 

Уберите режим комментариев для директив user и group, удалив символ «;» из начала каждой строки:

~/client-configs/base.conf

# Downgrade privileges after initialization (non-Windows only) user nobody group nogroup 

Найдите директивы, задающие ca, cert и key. Поставьте знак комментария перед строками этих директив, поскольку вы вскоре добавите сертификаты и ключи в сам файл:

~/client-configs/base.conf

# SSL/TLS parms. # See the server config file for more # description. It's best to use # a separate .crt/.key file pair # for each client. A single ca # file can be used for all clients. #ca ca.crt #cert client.crt #key client.key 

Также добавьте знак комментария в начале строки директивы tls-auth, поскольку вы добавите ключ ta.key непосредственно из файла конфигурации клиента:

~/client-configs/base.conf

# If a tls-auth key is used on the server # then every client must also have the key. #tls-auth ta.key 1 

Создайте зеркальное отражение настроек cipher и auth, заданных в файле /etc/openvpn/server.conf:

~/client-configs/base.conf

cipher AES-256-CBC auth SHA256 

Затем добавьте в файл директиву key-direction. Вы должны задать значение «1», чтобы VPN правильно работала на клиентском компьютере:

~/client-configs/base.conf

key-direction 1 

В заключение, добавьте несколько строк комментариев. Хотя вы можете включить эти директивы в каждый файл конфигурации клиента, их нужно включать только для клиентов Linux с файлом /etc/openvpn/update-resolv-conf. Этот скрипт использует утилиту resolvconf для обновления данных DNS клиентов Linux.

~/client-configs/base.conf

# script-security 2 # up /etc/openvpn/update-resolv-conf # down /etc/openvpn/update-resolv-conf 

Если ваш клиент работает под управлением Linux, и на нем есть файл /etc/openvpn/update-resolv-conf, удалите знак комментария в начале этих строк файла конфигурации клиента, когда он будет сгенерирован.

Сохраните файл и закройте его после завершения.

Затем создайте простой скрипт, который скомпилирует базовую конфигурацию с соответствующим сертификатом, ключом и файлами шифрования, и поместите сгенерированную конфигурацию в каталог ~/client-configs/files. Откройте новый файл с именем make_config.sh в каталоге ~/client-configs:

  • nano ~/client-configs/make_config.sh

Добавьте в файл следующее:

~/client-configs/make_config.sh

#!/bin/bash # First argument: Client identifier KEY_DIR=~/client-configs/keys OUTPUT_DIR=~/client-configs/files BASE_CONFIG=~/client-configs/base.conf cat ${BASE_CONFIG} \ <(echo -e '<ca>') \ ${KEY_DIR}/ca.crt \ <(echo -e '</ca>\n<cert>') \ ${KEY_DIR}/${1}.crt \ <(echo -e '</cert>\n<key>') \ ${KEY_DIR}/${1}.key \ <(echo -e '</key>\n<tls-auth>') \ ${KEY_DIR}/ta.key \ <(echo -e '</tls-auth>') \ > ${OUTPUT_DIR}/${1}.ovpn 

Сохраните файл и закройте его после завершения.

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

  • chmod 700 ~/client-configs/make_config.sh

Этот скрипт создает копию созданного вами файла base.conf, собирает все созданные вами для клиента файлы сертификатов и ключей, извлекает их содержимое, добавляет их в копию базового файла конфигурации и экспортирует все это в новый файл конфигурации клиента. Это означает, что вся необходимая информация хранится в одном месте, и вам не нужно по отдельности управлять файлами конфигурации клиента, сертификатами и ключами. Если в будущем вам потребуется добавить клиент, вы можете просто запустить этот скрипт, чтобы быстро создать файл конфигурации. Вся важная информация хранится в одном удобном для доступа месте.

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

Шаг 9 — Создание конфигураций клиентов

Если вы следовали указаниям руководства, на шаге 4 вы создали клиентский сертификат и ключ с именами client1.crt и client1.key соответственно. Вы можете сгенерировать файл конфигурации для этих учетных данных, перейдя в каталог ~/client-configs и запустив скрипт, созданный в конце предыдущего шага:

  • cd ~/client-configs
  • sudo ./make_config.sh client1

При этом файл client1.ovpn будет создан в каталоге ~/client-configs/files:

  • ls ~/client-configs/files

Output

client1.ovpn

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

Хотя конкретные приложения для передачи зависят от операционной системы устройства и ваших предпочтений, один из наиболее надежных и безопасных способов — использовать SFTP (протокол передачи файлов SSH) или SCP (защищенное копирование) на стороне сервера. При этом файлы аутентификации VPN вашего клиента будут передаваться через шифрованное соединение.

Вот пример команды SFTP с использованием образца client1.ovpn, который можно запустить с локального компьютера (macOS или Linux). Он помещает файл .ovpn в домашний каталог:

Вот несколько инструментов и обучающих модулей для безопасной передачи файлов с сервера на локальный компьютер:

Шаг 10 — Установка конфигурации клиентов

В этом разделе рассказывается о том, как установить клиентский профиль VPN в Windows, macOS, Linux, iOS и Android. Эти инструкции не зависят друг от друга, так что вы можете сразу перейти к той, которая относится к вашему устройству.

Подключение OpenVPN будет иметь имя, совпадающее с именем файла .ovpn. В этом обучающем модуле это означает, что соединение будет иметь имя client1.ovpn, что соответствует первому сгенерированному клиентскому файлу.

Windows

Установка

Загрузите клиентское приложение OpenVPN для Windows со страницы загрузки OpenVPN. Выберите подходящую версию программы установки для вашей версии Windows.

Примечание. Для установки OpenVPN требуются привилегии администратора.

После установки OpenVPN, скопируйте файл .ovpn в:

C:\Program Files\OpenVPN\config 

При запуске OpenVPN профиль будет автоматически обнаружен и сделан доступным.

Вы должны запускать OpenVPN от имени администратора каждый раз, даже если используете учетную запись администратора. Чтобы вам не нужно было при каждом запуске VPN нажимать правую кнопку мыши и выбриать Запуск от имени администратора, такой запуск следует настроить в учетной записи администратора. Это также означает, что обычным пользователям нужно будет ввести пароль администратора, чтобы использовать OpenVPN. Обычные пользователи не смогут правильно подключиться к серверу, если у приложения OpenVPN на клиентской системе нет прав администратора, поэтому необходим повышенный уровень привилегий.

Чтобы настроить приложение OpenVPN для запуска от имени администратора при каждом запуске, нажмите правой кнопкой мыши на его ярлык и выберите пункт Свойства. Внизу вкладки Совместимость нажмите кнопку Изменить параметры для всех пользователей. В новом окне установите отметку Запускать эту программу от имени администратора.

Подключение

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

После запуска OpenVPN нажмите правой кнопкой на значок OpenVPN в области задач, чтобы создать соединение. Откроется контекстное меню. Выберите client1 в верхней части меню (это ваш профиль client1.ovpn) и нажмите Подключиться.

Откроется окно состояния, где будут выведены данные журнала при установке соединения, и после подключения клиента будет выведено сообщение.

Отключение от VPN выполняется аналогично: перейдите в область задач, нажмите на иконку приложения OpenVPN правой кнопкой мыши, выберите профиль клиента и нажмите Отключиться.

macOS

Установка

Tunnelblick — бесплатный клиент OpenVPN с открытым исходным кодом для macOS. Вы можете загрузить последний образ этого клиентского приложения со страницы загрузки Tunnelblick. Дважды щелкните загруженный файл .dmg и следуйте указаниям по установке.

В конце процесса установки Tunnelblick спросит, есть ли у вас файлы конфигурации. Укажите ответ У меня есть файлы конфигурации и дайте Tunnelblick завершить работу. Откройте окно Finder и дважды нажмите client1.ovpn. Tunnelblick установит клиентский профиль. Для этого требуются привилегии администратора.

Подключение

Запустите Tunnelblick, дважды щелкнув значок Tunnelblick в папке Приложения. После запуска Tunnelblick в панели меню в правом верхнем углу экрана появится значок Tunnelblick для управления соединениями. Нажмите на значок, а затем нажмите на пункт меню Подключить client1, чтобы создать соединение VPN.

Linux

Установка

Если вы используете Linux, вы можете различные инструменты в зависимости от вашего дистрибутива. Диспетчер окон или среда рабочего стола также могут содержать утилиты для подключения.

Однако проще всего будет использовать для этой цели программное обеспечение OpenVPN.

В Ubuntu или Debian вы можете установить его так же, как и на сервере, введя следующую команду:

  • sudo apt update
  • sudo apt install openvpn

В CentOS вы можете активировать репозитории EPEL и выполнить установку, введя следующую команду:

  • sudo yum install epel-release
  • sudo yum install openvpn
Настройка

Проверьте, включен ли в ваш дистрибутив скрипт /etc/openvpn/update-resolv-conf:

Output

update-resolv-conf

Затем отредактируйте перемещенный файл конфигурации клиента OpenVPN:

Если вы нашли файл update-resolv-conf, уберите значок комментария из начала трех строк, добавленных для изменения настроек DNS:

client1.ovpn

script-security 2 up /etc/openvpn/update-resolv-conf down /etc/openvpn/update-resolv-conf 

Если вы используете CentOS, измените директиву group с nogroup на nobody для соответствия доступным группам дистрибутива:

client1.ovpn

group nobody 

Сохраните и закройте файл.

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

  • sudo openvpn --config client1.ovpn

Эта команда должна установить подключение к вашей VPN.

iOS

Установка

Найдите в магазине приложений iTunes App Store приложение OpenVPN Connect, официальный клиент OpenVPN для iOS, и установите его. Чтобы переместить конфигурацию клиента iOS на устройство, подключите его к компьютеру напрямую.

Здесь описан процесс завершения передачи с помощью iTunes. Откройте iTunes на компьютере и нажмите iPhone > приложения. Прокрутите страницу до раздела Общий доступ к файлам и нажмите на приложение OpenVPN. Пустое окно справа OpenVPN Documents предназначено для общего доступа к файлам. Перетащите файл .ovpn в окно OpenVPN Documents.

Запустите приложение OpenVPN на iPhone. Вы получите уведомление, что новый профиль готов к импортированию. Нажмите зеленый значок плюс, чтобы импортировать его.

Подключение

Приложение OpenVPN готово к использованию нового профиля. Установите соединение, передвинув кнопку Подключиться в положение Вкл. Для отключения передвиньте эту же кнопку в положение Выкл.

Примечание. Переключатель VPN в разделе Настройки нельзя использовать для подключения к VPN. Если вы попробуете сделать это, вы получите уведомление о том, что для подключения нужно использовать приложение OpenVPN.

Android

Установка

Откройте магазин приложений Google Play Store. Найдите приложение Android OpenVPN Connect, официальное клиентское приложение OpenVPN для Android, и установите его.

Вы можете переместить профиль .ovpn, подключив устройство Android к вашему компьютеру через интерфейс USB и скопировав файл. Если у вас в компьютере есть разъем для SD-карт, мы можете извлечь SD-карту из устройства, скопировать на нее профиль и вставить карту обратно в устройство Android.

Запустите приложение OpenVPN и нажмите на меню, чтобы импортировать профиль.

Затем перейдите в местоположение сохраненного профиля (на снимке экрана используется расположение /sdcard/Download/) и выберите файл. Приложение покажет, что профиль импортирован.

Подключение

Чтобы подключиться, просто нажмите кнопку Подключиться. Вам нужно будет указать, что вы доверяете приложению OpenVPN. Нажмите OK, чтобы установить соединение. Чтобы отключиться от VPN, вернитесь в приложение OpenVPN и выберите пункт Отключиться.

Шаг 11 — Тестирование соединения VPN (необязательно)

Примечание. Этот метод тестирования соединения VPN будет работать, только если вы настроите перенаправление всего трафика через VPN на шаге 5.

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

Сайт покажет IP-адрес, назначенный вашим интернет-провайдером и видный остальному миру. Чтобы проверить настройки DNS через этот же сайт, нажмите Расширенный тест, и вы увидите, какие серверы DNS вы используете.

Теперь подключите клиент OpenVPN к VPN вашего дроплета и обновите браузер. Вы увидите совершенно другой IP-адрес (адрес вашего сервера VPN), и именно этот адрес будет виден остальному миру. Итак, в приложении DNSLeakTest функция Расширенный тест проверит ваши настройки DNS и подтвердит, что вы используете параметры DNS, заданные вашей VPN.

Шаг 12 — Отзыв сертификатов клиента

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

Для этого перейдите в каталог EasyRSA на компьютере CA:

Затем запустите скрипт easyrsa с опцией revoke, а затем укажите имя клиента, у которого хотите отозвать сертификат:

Система предложит вам подтвердить отзыв сертификата. Введите yes:

Output

Please confirm you wish to revoke the certificate with the following subject: subject= commonName = client2 Type the word 'yes' to continue, or any other input to abort. Continue with revocation: yes

После подтверждения действия CA полностью отзовет сертификат клиента. Однако в текущий момент ваш сервер OpenVPN не может проверить, отозваны ли сертификаты каких-либо клиентов, и все клиенты будут иметь доступ к сети VPN. Чтобы устранить эту проблему, нужно создать на компьютере CA список отзыва сертификатов (CRL):

Эта команда генерирует файл crl.pem. Выполните защищенное перемещение этого файла на ваш сервер OpenVPN:

На сервере OpenVPN скопируйте этот файл в каталог /etc/openvpn/:

  • sudo cp /tmp/crl.pem /etc/openvpn

Затем откройте файл конфигурации сервера OpenVPN:

  • sudo nano /etc/openvpn/server.conf

Добавьте в конце файла опцию crl-verify, чтобы сервер OpenVPN проверял созданный нами список отзыва сертификатов при каждой попытке подключения:

/etc/openvpn/server.conf

crl-verify crl.pem 

Сохраните и закройте файл.

Перезапустите OpenVPN, чтобы завершить отзыв сертификата:

Клиент больше не сможет подключаться к серверу, используя старые учетные данные.

Чтобы запретить доступ другим клиентам, повторите эту процедуру:

  1. Для отзыва сертификата используется команда ./easyrsa revoke client_name.
  2. Создайте новый список CRL
  3. Переместите новый файл crl.pem на сервер OpenVPN и скопируйте его в каталог /etc/openvpn, чтобы перезаписать старый список.
  4. Перезапустите службу OpenVPN.

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

Заключение

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

Для настройки других клиентских систем вам нужно будет повторить шаги 4 и 9-11 для каждого дополнительного устройства. Чтобы запретить доступ клиентским системам, следуйте указаниям в шаге 12.

Установка и настройка сервера OpenVPN в Ubuntu 20.04

Введение

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

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

OpenVPN — это полнофункциональное решение VPN с открытым исходным кодом, которое использует протокол TLS и позволяет использовать широкий круг конфигураций. В этом обучающем руководстве мы установим OpenVPN на сервере Ubuntu 20.04 и настроим его для доступа с клиентского компьютера.

Примечание. Если вы планируете настроить сервер OpenVPN на DigitalOcean Droplet, то мы, как и многие поставщики хостинга, будем взимать плату за превышение лимита пропускной способности. По этой причине необходимо следить за объемом трафика, который обрабатывает ваш сервер.

Дополнительную информацию можно найти на этой странице.

Предварительные требования

Для данного обучающего руководства вам потребуется следующее:

Примечание. Хотя технически возможно использовать ваш сервер OpenVPN или ваш локальный компьютер в качестве центра сертификации, делать это не рекомендуется, поскольку это открывает ваш VPN для ряда уязвимостей. Согласно официальной документации OpenVPN, вы должны разместить ЦС на отдельном компьютере, который будет отвечать за импорт и подписание запросов сертификатов. По этой причине в данном обучающем модуле предполагается, что ваш ЦС располагается на отдельном сервере Ubuntu 20.04, где также имеются пользователь без привилегий root с привилегиями sudo и базовый брандмауэр.

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

После выполнения всех предварительных требований вы можете начать установку и настройку сервера OpenVPN в Ubuntu 20.04.

Примечание. Обратите внимание, что если вы отключите аутентификацию с помощью пароля при настройке этих серверов, то можете столкнуться с трудностями при передаче файлов между ними, как предусматривается последующими разделами этого обучающего руководства. Чтобы устранить эту проблему, вам нужно будет заново включить аутентификацию с помощью пароля на каждом сервере. Также вы можете сгенерировать пару ключей SSH для каждого сервера и добавить публичный ключ SSH сервера OpenVPN в файл authorized_keys на компьютере ЦС, и наоборот. Дополнительные инструкции по этим решениям можно найти в обучающем модуле Настройка ключей SSH в Ubuntu 20.04.

Шаг 1 — Установка OpenVPN и Easy-RSA

Первый шаг этого руководства подразумевает установку OpenVPN и Easy-RSA. Easy-RSA — это инструмент управления инфраструктурой открытых ключей (PKI), который вы будете использовать на сервере OpenVPN для генерации запроса сертификата, который вы затем будете проверять и подписывать на сервере ЦС.

Для начала обновите указатель пакетов сервера OpenVPN и установите OpenVPN и Easy-RSA. Оба пакета доступны в репозиториях Ubuntu по умолчанию, и поэтому вы можете использовать apt для установки:

  • sudo apt update
  • sudo apt install openvpn easy-rsa

Далее вам потребуется создать новую директорию на сервере OpenVPN от имени вашего пользователя non-root user с названием ~/easy-rsa:

Теперь вам нужно создать символьную ссылку из скрипта easyrsa, установленного пакетом в директории ~/easy-rsa, которую вы только что создали:

  • ln -s /usr/share/easy-rsa/* ~/easy-rsa/

Примечание. Хотя другие руководства могут предписывать скопировать файлы пакета easy-rsa в директорию PKI, в этом обучающем руководстве мы используем подход на основе символьных ссылок. Таким образом, любые изменения пакета easy-rsa будут автоматически отражаться в ваших скриптах PKI.

В заключение убедитесь, что владельцем директории является ваш пользователь non-root user с привилегиями sudo, и ограничьте доступ с помощью команды chmod:

  • sudo chown sammy ~/easy-rsa
  • chmod 700 ~/easy-rsa

После установки этих программ и их перемещения в нужные локации в вашей системе следующим шагом будет создание инфраструктуры открытых ключей (PKI) на сервере OpenVPN, чтобы вы могли запрашивать и управлять сертификатами TLS для клиентов и других серверов, которые будут подключаться к вашему VPN.

Шаг 2 — Создание PKI для OpenVPN

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

Для создания директории PKI на сервере OpenVPN вам нужно указать в файле vars ряд значений по умолчанию. Используйте команду cd для перехода в каталог easy-rsa, а затем создайте и отредактируйте файл vars с помощью nano или другого предпочитаемого текстового редактора:

После открытия файла вставьте следующие две строки:

~/easy-rsa/vars

set_var EASYRSA_ALGO "ec" set_var EASYRSA_DIGEST "sha512" 

Эти две строки потребуются вам в файле vars на сервере OpenVPN, поскольку он не будет использоваться в качестве ЦС. Они будут гарантировать, что ваши закрытые ключи и запросы сертификата будут настроены для использования современной криптографии на эллиптических кривых (Elliptic Curve Cryptography, ECC) при генерации ключей и защищенных подписей для ваших клиентов и сервера OpenVPN.

Под настройкой использования ECC для ваших серверов OpenVPN и ЦС подразумевается, что, когда клиент и сервер будут пытаться установить общий симметричный ключ, они будут использовать алгоритмы эллиптической кривой для обмена. Использование ECC для обмена ключами значительно быстрее, чем использование простого алгоритма Диффи — Хеллмана с классическим алгоритмом RSA, поскольку числа намного меньше, а вычисления выполняются быстрее.

Справка: когда клиенты подключаются к OpenVPN, они используют асимметричное шифрование (также известное как открытый/закрытый ключ) для выполнения TLS-рукопожатия. Однако при передаче шифрованного VPN-трафика сервер и клиенты используют симметричное шифрование, которое также известно как шифрование общедоступного ключа.

Симметричное шифрование требует гораздо меньшего количества вычислений по сравнению с асимметричным: используемые числа гораздо меньше, и современные процессоры имеют инструкции для выполнения оптимизированного симметричного шифрования. Для переключения с асимметричного на симметричное шифрование сервер OpenVPN и клиент будут использовать алгоритм Диффи — Хеллмана на эллиптических кривых для согласования общего секретного ключа в максимально короткие сроки.

После добавления в файл vars данных вы можете перейти к созданию директории PKI. Для этого воспользуйтесь скриптом easyrsa с опцией init-pki. Хотя вы уже использовали эту команду на сервере ЦС в соответствии с предварительными требованиями, необходимо запустить ее здесь, поскольку сервер OpenVPN и сервер ЦС имеют разные директории PKI.

Обратите внимание, что на сервере OpenVPN не нужно создавать центр сертификации. Ваш сервер ЦС отвечает за валидацию и подпись сертификатов. PKI на вашем сервере VPN используется только в качестве удобного и централизованного места хранения запросов сертификата и публичных сертификатов.

После инициализации PKI на сервере OpenVPN вы можете перейти к следующему шагу и создать запрос сертификата и закрытого ключа сервера OpenVPN.

Шаг 3 — Создание запроса сертификата и закрытого ключа сервера OpenVPN

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

Для начала перейдите в директорию ~/easy-rsa на сервере OpenVPN, используя вашего пользователя non-root user:

Теперь вы можете вызвать easyrsa с опцией gen-req, за которой необходимо указать стандартное имя для компьютера. Вы можете использовать любое стандартное имя, но лучше всего выбрать запоминающийся вариант. В этом обучающем руководстве для сервера OpenVPN будет использоваться стандартное имя server. Обязательно добавьте опцию nopass. Без этого файл запроса будет защищен паролем, что впоследствии может привести к проблемам с разрешениями.

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

  • ./easyrsa gen-req server nopass

Output

Common Name (eg: your user, host, or server name) [server]: Keypair and certificate request completed. Your files are: req: /home/sammy/easy-rsa/pki/reqs/server.req key: /home/sammy/easy-rsa/pki/private/server.key

В результате будет создан закрытый ключ для сервера и файл запроса сертификата с именем server.req. Скопируйте ключ сервера в директорию /etc/openvpn/server:

  • sudo cp /home/sammy/easy-rsa/pki/private/server.key /etc/openvpn/server/

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

Шаг 4 — Подпись запроса сертификата сервера OpenVPN

На предыдущем шаге вы создали запрос на подпись сертификата (CSR) и закрытый ключ для сервера OpenVPN. Теперь сервер ЦС должен узнать о сертификате server и выполнить его валидацию. После подтверждения сертификата сервером ЦС и его отправки назад на сервер OpenVPN клиенты, которые доверяют вашему ЦС, также смогут доверять серверу OpenVPN.

На сервере OpenVPN от имени вашего пользователя non-root user воспользуйтесь запросом на передачу или другим методом передачи для копирования запроса сертификата server.req на сервер ЦС для подписи:

Если вы выполнили предварительное требование обучающего модуля «Установка и настройка Центра сертификации (ЦС) в Ubuntu 20.04», следующим шагом будет войти на сервер ЦС как пользователь без привилегий root, которого вы создали для управления ЦС. Вы использовали команду cd для перехода в каталог ~/easy-rsa, где вы создали и импортируйте запрос сертификата с помощью скрипта easyrsa:

  • cd ~/easy-rsa
  • ./easyrsa import-req /tmp/server.req server

Output

. . . The request has been successfully imported with a short name of: server You may now use this name to perform signing operations on this request.

Далее подпишите запрос, запустив скрипт easyrsa с опцией sign-req и указанием типа запроса и стандартного имени. В качестве типа запроса может использоваться client или server. Поскольку мы работаем с запросом сертификата сервера OpenVPN, необходимо использовать тип запроса server:

  • ./easyrsa sign-req server server

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

Output

You are about to sign the following certificate. Please check over the details shown below for accuracy. Note that this request has not been cryptographically verified. Please be sure it came from a trusted source or that you have verified the request checksum with the sender. Request subject, to be signed as a server certificate for 3650 days: subject= commonName = server Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes . . . Certificate created at: /home/sammy/easy-rsa/pki/issued/server.crt

Обратите внимание, что если вы зашифровали закрытый ключ ЦС, вам будет предложено ввести пароль в данный момент.

В результате выполнения этих шагов вы успешно подписали запрос сертификата сервера OpenVPN с помощью закрытого ключа сервера ЦС. Полученный файл server.crt​​​ содержит открытый ключ шифрования сервера OpenVPN, а также новую подпись от сервера ЦС. Смысл подписи состоит в том, чтобы сообщить всем, кто доверяет серверу ЦС, что они также могут доверять серверу OpenVPN при подключении к нему.

Для завершения настройки сертификатов скопируйте файлы server.crt и ca.crt с сервера ЦС на сервер OpenVPN:

Теперь вернитесь на ваш сервер OpenVPN, скопируйте файлы из /tmp в /etc/openvpn/server:

  • sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/server

Теперь ваш сервер OpenVPN почти готов к принятию подключений. На следующем шаге вы выполните ряд дополнительных шагов для повышения безопасности сервера.

Шаг 5 — Настройка криптографических материалов OpenVPN

В качестве дополнительного уровня безопасности мы добавим дополнительный общий секретный ключ, который будет использовать сервер и все клиенты, с помощью директивы OpenVPN tls-crypt. Эта опция используется, чтобы «затемнить» сертификат TLS, используемый, когда сервер и клиент первоначально подключаются друг к другу. Также она используется сервером OpenVPN для выполнения быстрых проверок входящих пакетов: если пакет подписан с помощью предварительно предоставленного ключа, сервер обрабатывает его, если подпись отсутствует, сервер понимает, что пакет получен из непроверенного источника, и может отклонить его, не выполняя дополнительную работу по расшифровке.

Эта опция поможет убедиться, что ваш сервер OpenVPN может справляться с неудостоверенным трафиком, сканированием портов и DoS-атаками, которые могут связывать ресурсы сервера. Она также затрудняет выявление сетевого трафика OpenVPN.

Для получения предварительно предоставленного ключа tls-crypt​​​ запустите следующую команду на сервере OpenVPN в директории ~/easy-rsa:

  • cd ~/easy-rsa
  • openvpn --genkey --secret ta.key

В результате вы получите файл с именем ta.key. Скопируйте его в директорию /etc/openvpn/server/:

  • sudo cp ta.key /etc/openvpn/server

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

Шаг 6 — Создание сертификата клиента и пары ключей

Хотя вы можете сгенерировать закрытый ключ и запрос сертификата на клиентской системе и отправить их в ЦС для подписания, в этом обучающем руководстве мы рассмотрим процесс генерирования запроса сертификата на сервере OpenVPN. Преимущество этого подхода заключается в том, что мы можем создать скрипт, который будет автоматически генерировать файлы конфигурации клиентов, содержащие все необходимые ключи и сертификаты. Благодаря этому вам не нужно будет передавать ключи, сертификаты и файлы конфигурации на клиентские системы, и процесс подключения к VPN ускорится.

В этом обучающем руководстве мы создадим одну пару из ключа и сертификата для клиентской системы. Если у вас несколько клиентских систем, вы можете повторить этот процесс для каждой такой системы. Обратите внимание, что для каждого клиента в скрипте нужно указать уникальное имя. В этом обучающем руководстве мы будем использовать первую пару сертификат/ключ под именем client1.

Вначале создайте в домашней директории структуру директорий, где будут храниться файлы сертификатов и ключей клиентской системы:

  • mkdir -p ~/client-configs/keys

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

  • chmod -R 700 ~/client-configs

Вернитесь в директорию EasyRSA и запустите скрипт easyrsa с опциями gen-req и nopass, указав обычное имя клиента:

  • cd ~/easy-rsa
  • ./easyrsa gen-req client1 nopass

Нажмите ENTER, чтобы подтвердить обычное имя. Скопируйте файл client1.key в ранее созданную директорию ~/client-configs/keys/​​​:

  • cp pki/private/client1.key ~/client-configs/keys/

Затем передайте файл client1.req на сервер ЦС, используя безопасный метод:

Теперь выполните вход на ваш сервер ЦС. Затем перейдите в директорию EasyRSA и импортируйте запрос сертификата:

  • cd ~/easy-rsa
  • ./easyrsa import-req /tmp/client1.req client1

Затем подпишите запрос, как вы делали это для сервера на предыдущем шаге. Однако в этот раз обязательно укажите тип запроса client:

  • ./easyrsa sign-req client client1

При запросе введите yes, чтобы подтвердить, что вы планируете подписать запрос сертификата и что он поступил из доверенного источника:

Output

Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes

Если вы зашифровали свой ключ ЦС, вам будет предложено ввести пароль.

В результате будет создан файл клиентского сертификата с именем client1.crt. Переместите этот файл обратно на сервер.

Вернитесь на ваш сервер OpenVPN, скопируйте клиентский сертификат в директорию ~/client-configs/keys/​​:

  • cp /tmp/client1.crt ~/client-configs/keys/

Затем скопируйте файлы ca.crt и ta.key в директорию ~/client-configs/keys/ и предоставьте соответствующие разрешения для вашего пользователя sudo:

  • cp ~/easy-rsa/ta.key ~/client-configs/keys/
  • sudo cp /etc/openvpn/server/ca.crt ~/client-configs/keys/
  • sudo chown sammy.sammy ~/client-configs/keys/*

В результате вы сгенерировали ключи и сертификаты для сервера и клиента и сохранили их в соответствующих директориях на вашем сервере OpenVPN. С этими файлами еще предстоит выполнить несколько действий, но к ним мы вернемся позднее. Теперь вы можете перейти к настройке OpenVPN.

Шаг 7 — Настройка OpenVPN

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

Вначале скопируйте файл server.conf в качестве отправной точки для вашего собственного файла конфигурации:

  • sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/server/
  • sudo gunzip /etc/openvpn/server/server.conf.gz

Откройте новый файл для редактирования в текстовом редакторе по вашему выбору. В нашем случае мы будем использовать nano:

  • sudo nano /etc/openvpn/server/server.conf

Нам нужно изменить несколько строк в этом файле. Сначала необходимо найти раздел HMAC в конфигурации, выполнив поиск директивы tls-auth. Эта строка должна быть разкомментирована. Закомментируйте ее, добавив ; в начало строки. Затем добавьте после нее новую строку, содержащую только значение tls-crypt ta.key​​​:

/etc/openvpn/server/server.conf

;tls-auth ta.key 0 # This file is secret tls-crypt ta.key 

Затем найдите раздел криптографических шифров, выполнив поиск строк с текстом cipher. По умолчанию установлено значение AES-256-CBC, однако шифр AES-256-GCM обеспечивает более высокий уровень шифрования, производительности и лучше поддерживается современными клиентами OpenVPN. Мы закомментируем значение по умолчанию, добавив ; в начало этой строки, а затем добавим другую строку после нее, содержащую обновленное значение AES-256-GCM:

/etc/openvpn/server/server.conf

;cipher AES-256-CBC cipher AES-256-GCM 

Сразу после этой строки добавьте директиву auth для выбора алгоритма выборки сообщений HMAC. Для этого хорошо подойдет SHA256:

/etc/openvpn/server/server.conf

auth SHA256 

Затем найдите строку с директивой dh, которая определяет параметры алгоритма Диффи — Хеллмана. Поскольку мы настроили все сертификаты для использования криптографии на эллиптических кривых, нет необходимости в использовании файла прототипа Диффи — Хеллмана. Закомментируйте существующую строку dh dh3048.pem​​​ или dh dh.pem. Имя файла для ключа Диффи — Хеллмана может отличаться от того, что перечислено в примере файла конфигурации сервера. Затем добавьте строку после нее с содержанием dh none:

/etc/openvpn/server/server.conf

;dh dh3048.pem dh none 

Далее нам нужно запустить OpenVPN без привилегий, с которыми он запущен, поэтому нам нужно указать на необходимость запуска с пользователем nobody и группой nogroup. Чтобы активировать эту возможность, найдите и разкомментируйте строки user nobody и group nogroup, удалив ; в начале каждой строки:

/etc/openvpn/server/server.conf

user nobody group nogroup 

(Необязательно) Изменение DNS для перенаправления всего трафика через сеть VPN

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

Для начала найдите и разкомментируйте строку push "redirect-gateway def1 bypass-dhcp". Она будет сообщать вашему клиенту о необходимости перенаправлять весь трафик через ваш сервер OpenVPN. Обратите внимание, что при активации этой функции могут возникать проблемы с подключением к другим сетевым службам, например SSH:

/etc/openvpn/server/server.conf

push "redirect-gateway def1 bypass-dhcp" 

Под этой строкой найдите раздел dhcp-option. Удалите ; в начале обеих строк, чтобы разкомментировать эти строки:

/etc/openvpn/server/server.conf

push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 208.67.220.220" 

Эти строки будут сообщать вашему клиенту о необходимости использования бесплатных интерпретаторов OpenDNS на перечисленных IP-адресах. Если вы предпочитаете использовать другие интерпретаторы DNS, вставьте их на место выделенных IP-адресов.

Это поможет клиентам изменить настройки DNS, чтобы туннель VPN использовался как шлюз по умолчанию.

(Необязательно) Изменение порта и протокола

По умолчанию сервер OpenVPN использует для подключения клиентов порт 1194 и протокол UDP. Если вам потребуется использовать другой порт из-за ограничений сети клиента, вы можете изменить номер порта. Если вы не храните веб-контент на сервере OpenVPN, вам подойдет порт 443, поскольку его обычно не запрещают правила брандмауэра.

Чтобы заставить OpenVPN прослушивать порт 443, откройте файл server.conf и найдите строку, которая выглядит следующим образом:

/etc/openvpn/server/server.conf

port 1194 

Измените ее, указав порт 443:

/etc/openvpn/server/server.conf

# Optional! port 443 

Довольно часто этот порт также ограничивает протокол. В этом случае найдите строку proto под строкой port и измените протокол с udp на tcp:

/etc/openvpn/server/server.conf

# Optional! proto tcp 

Если вы действительно смените протокол на TCP, вам нужно будет изменить значение директивы explicit-exit-notify с 1 на 0, поскольку эта директива используется только протоколом UDP. В противном случае при запуске службы OpenVPN возможны ошибки протокола TCP.

Найдите строку explicit-exit-notify в конце файла и измените значение на 0:

/etc/openvpn/server/server.conf

# Optional! explicit-exit-notify 0 

Если вам не нужно использовать другие порт и протокол, лучше всего оставить эти настройки без изменений.

(Необязательно) Указание на учетные данные, отличающиеся от используемых по умолчанию

Если вы выбрали другое имя при вводе команды ./easyrsa gen-req server ранее, измените строки cert и key​​​ в файле конфигурации server.conf​​, чтобы они указывали на соответствующие файлы .crt и .key. Если вы использовали имя по умолчанию server, можно считать, что все уже настроено корректно:

/etc/openvpn/server/server.conf

cert server.crt key server.key 

После завершения редактирования сохраните и закройте файл.

Вы успешно завершили настройку общих параметров OpenVPN. На следующем шаге мы настроим сетевые параметры сервера.

Шаг 8 — Настройка конфигурации сети сервера OpenVPN

Чтобы OpenVPN мог правильно перенаправлять трафик через сеть VPN, необходимо изменить некоторые параметры конфигурации сети сервера. Прежде всего нужно изменить параметр IP forwarding, который определяет необходимость перенаправления IP-трафика. Это необходимо для реализации функций VPN, обеспечиваемых вашим сервером.

Чтобы изменить используемые по умолчанию настройки IP-передачи сервера OpenVPN, откройте файл /etc/sysctl.conf с помощью nano или предпочитаемого редактора:

  • sudo nano /etc/sysctl.conf

Добавьте следующую строку в конец файла:

/etc/sysctl.conf

net.ipv4.ip_forward = 1 

Сохраните файл и закройте его после завершения.

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

Output

net.ipv4.ip_forward = 1

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

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

Шаг 9 — Настройка брандмауэра

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

Если вы выполнили предварительные требования, указанные в начале этого обучающего модуля, у вас на сервере должен быть установлен и запущен ufw. Чтобы разрешить OpenVPN через брандмауэр, вам нужно будет включить маскировку. Маскировка — это концепция таблиц iptables, на основе которой выполняется автоматическая трансляция сетевых адресов (NAT) для правильной маршрутизации клиентских соединений.

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

Строка после слова «dev» в этой команде — это ваш публичный интерфейс. Например, в этом результате показан интерфейс с именем eth0, который выделен ниже:

Output

default via 159.65.160.1 dev eth0 proto static

Когда у вас будет интерфейс, связанный с маршрутом по умолчанию, откройте файл /etc/ufw/before.rules, чтобы добавить соответствующую конфигурацию:

  • sudo nano /etc/ufw/before.rules

Правила UFW обычно добавляются с помощью команды ufw. Правила, перечисленные в файле before.rules, считываются и активируются до загрузки обычных правил UFW. Добавьте в верхнюю часть файла выделенные ниже строки. После этого будет задана политика по умолчанию для цепочки POSTROUTING в таблице nat, и любой трафик из VPN будет маскироваться. Обязательно замените eth0 в строке -A POSTROUTING на интерфейс, определенный с помощью следующей команды:

/etc/ufw/before.rules

# # rules.before # # Rules that should be run before the ufw command line added rules. Custom # rules should be added to one of these chains: # ufw-before-input # ufw-before-output # ufw-before-forward # # START OPENVPN RULES # NAT table rules *nat :POSTROUTING ACCEPT [0:0] # Allow traffic from OpenVPN client to eth0 (change to the interface you discovered!) -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE COMMIT # END OPENVPN RULES # Don't delete these required lines, otherwise there will be errors *filter . . . 

Сохраните файл и закройте его после завершения.

Затем вам нужно будет указать UFW разрешать перенаправление пакетов по умолчанию. Для этого откройте файл /etc/default/ufw:

  • sudo nano /etc/default/ufw

Найдите в файле директиву DEFAULT_FORWARD_POLICY и измените значение с DROP на ACCEPT:

/etc/default/ufw

DEFAULT_FORWARD_POLICY="ACCEPT" 

Сохраните файл и закройте его после завершения.

Затем измените настройки брандмауэра, чтобы разрешить трафик OpenVPN. Если вы не изменили порт и протокол в файле /etc/openvpn/server.conf, вам нужно будет открыть трафик UDP на порту 1194. Если вы изменили порт или протокол, замените выбранные здесь значения.

Если вы забыли добавить порт SSH при выполнении обязательного обучающего модуля, добавьте его сейчас:

  • sudo ufw allow 1194/udp
  • sudo ufw allow OpenSSH

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

  • sudo ufw disable
  • sudo ufw enable

Теперь ваш сервер настроен для правильной обработки трафика OpenVPN. После создания правил брандмауэра мы можем запустить службу OpenVPN на сервере.

Шаг 10 — Запуск OpenVPN

OpenVPN работает как служба systemd, поэтому мы можем использовать systemctl для управления. Мы настроим для OpenVPN запуск при загрузке, чтобы вы могли подключаться к вашей VPN в любое время, пока ваш сервер работает. Для этого активируйте службу OpenVPN, добавив ее в systemctl:

Затем запустите службу OpenVPN:

Еще раз проверьте, что служба OpenVPN активна, воспользовавшись следующей командой. Вы должны увидеть в выводе active (running):

Output

[email protected] - OpenVPN service for server Loaded: loaded (/lib/systemd/system/[email protected]; enabled; vendor preset: enabled) Active: active (running) since Wed 2020-04-29 15:39:59 UTC; 6s ago Docs: man:openvpn(8) https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Main PID: 16872 (openvpn) Status: "Initialization Sequence Completed" Tasks: 1 (limit: 1137) Memory: 1.0M CGroup: /system.slice/system-openvpn\x2dserver.slice/[email protected] └─16872 /usr/sbin/openvpn --status /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --c> . . . . . . Apr 29 15:39:59 ubuntu-20 openvpn[16872]: Initialization Sequence Completed

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

Шаг 11 — Создание инфраструктуры конфигурации клиентских систем

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

Для начала создайте новую директорию для хранения файлов конфигурации клиентов в ранее созданной директории client-configs:

  • mkdir -p ~/client-configs/files

Затем скопируйте файл с образцом конфигурации клиента в директорию client-configs, чтобы использовать ее как базовую конфигурацию:

  • cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf

Откройте новый файл в nano или предпочитаемом текстовом редакторе:

  • nano ~/client-configs/base.conf

Найдите в файле директиву remote. Она указывает клиенту адрес сервера OpenVPN, т. е. публичный IP-адрес вашего сервера OpenVPN. Если вы решили изменить порт, который будет прослушивать сервер OpenVPN, вам нужно будет заменить 1194 на выбранный порт:

~/client-configs/base.conf

. . . # The hostname/IP and port of the server. # You can have multiple remote entries # to load balance between the servers. remote your_server_ip 1194 . . . 

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

~/client-configs/base.conf

proto udp 

Разкомментируйте директивы user и group, удалив символ ; в начале каждой строки:

~/client-configs/base.conf

# Downgrade privileges after initialization (non-Windows only) user nobody group nogroup 

Найдите директивы, задающие ca, cert и key. Поставьте знак комментария перед строками этих директив, поскольку вы вскоре добавите сертификаты и ключи в сам файл:

~/client-configs/base.conf

# SSL/TLS parms. # See the server config file for more # description. It's best to use # a separate .crt/.key file pair # for each client. A single ca # file can be used for all clients. ;ca ca.crt ;cert client.crt ;key client.key 

Затем закомментируйте директиву tls-auth, поскольку вы добавите ta.key прямо в файл конфигурации клиента (а сервер настроен на использование tls-crypt):

~/client-configs/base.conf

# If a tls-auth key is used on the server # then every client must also have the key. ;tls-auth ta.key 1 

Создайте зеркало настроек cipher и auth, заданных в файле /etc/openvpn/server/server.conf​​​:

~/client-configs/base.conf

cipher AES-256-GCM auth SHA256 

Затем добавьте в файл директиву key-direction. Вы должны задать значение «1», чтобы VPN правильно работала на клиентском компьютере:

~/client-configs/base.conf

key-direction 1 

В заключение добавьте несколько закомментированных строк для обработки различных методов, которые клиенты VPN на базе Linux будут использовать для разрешения DNS. Также мы добавим два похожих, но отдельных набора закомментированных строк. Первый набор предназначен для клиентов, которые не используют systemd-resolved для управления DNS. Эти клиенты используют утилиту resolvconf для обновления информации DNS для клиентов Linux.

~/client-configs/base.conf

; script-security 2 ; up /etc/openvpn/update-resolv-conf ; down /etc/openvpn/update-resolv-conf 

Теперь добавьте другой набор строк для клиентов, которые используют systemd-resolved для разрешения DNS:

~/client-configs/base.conf

; script-security 2 ; up /etc/openvpn/update-systemd-resolved ; down /etc/openvpn/update-systemd-resolved ; down-pre ; dhcp-option DOMAIN-ROUTE . 

Сохраните файл и закройте его после завершения.

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

Далее создайте простой скрипт, который скомпилирует базовую конфигурацию с соответствующим сертификатом, ключом и файлами шифрования, и поместите сгенерированную конфигурацию в директорию ~/client-configs/files. Откройте новый файл с именем make_config.sh в директории ~/client-configs:

  • nano ~/client-configs/make_config.sh

Добавьте в файл следующее:

~/client-configs/make_config.sh

#!/bin/bash # First argument: Client identifier KEY_DIR=~/client-configs/keys OUTPUT_DIR=~/client-configs/files BASE_CONFIG=~/client-configs/base.conf cat ${BASE_CONFIG} \ <(echo -e '<ca>') \ ${KEY_DIR}/ca.crt \ <(echo -e '</ca>\n<cert>') \ ${KEY_DIR}/${1}.crt \ <(echo -e '</cert>\n<key>') \ ${KEY_DIR}/${1}.key \ <(echo -e '</key>\n<tls-crypt>') \ ${KEY_DIR}/ta.key \ <(echo -e '</tls-crypt>') \ > ${OUTPUT_DIR}/${1}.ovpn 

Сохраните файл и закройте его после завершения.

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

  • chmod 700 ~/client-configs/make_config.sh

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

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

Шаг 12 — Создание конфигураций клиентов

Если вы следовали указаниям руководства, на шаге 6 вы создали клиентский сертификат и ключ с именами client1.crt и client1.key соответственно. Вы можете сгенерировать файл конфигурации для этих учетных данных, перейдя в директорию ~/client-configs и запустив скрипт, созданный в конце предыдущего шага:

  • cd ~/client-configs
  • ./make_config.sh client1

При этом файл client1.ovpn будет создан в директории ~/client-configs/files:

  • ls ~/client-configs/files

Output

client1.ovpn

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

Хотя конкретные приложения для передачи зависят от операционной системы устройства и ваших предпочтений, один из наиболее надежных и безопасных способов — использовать SFTP (протокол передачи файлов SSH) или SCP (защищенное копирование) на стороне сервера. При этом файлы аутентификации VPN вашего клиента будут передаваться через шифрованное соединение.

Здесь представлен пример команды SFTP, которую можно запустить с локального компьютера (под управлением macOS или Linux). Она будет копировать файл client1.ovpn, который мы создали на последнем шаге, в вашу домашнюю директорию:

Ниже представлено несколько инструментов и обучающих руководств для безопасной передачи файлов с сервера OpenVPN на локальный компьютер:

Шаг 13 — Установка клиентской конфигурации

В этом разделе рассказывается о том, как установить клиентский профиль VPN в Windows, macOS, Linux, iOS и Android. Эти инструкции не зависят друг от друга, так что вы можете сразу перейти к той, которая относится к вашему устройству.

Подключение OpenVPN будет иметь имя, совпадающее с именем файла .ovpn. В этом обучающем руководстве это означает, что соединение будет иметь имя client1.ovpn, что соответствует первому сгенерированному клиентскому файлу.

Windows

Установка

Загрузите клиентское приложение OpenVPN для Windows со страницы загрузки OpenVPN. Выберите подходящую версию программы установки для вашей версии Windows.

Примечание. Для установки OpenVPN требуются права администратора.

После установки OpenVPN, скопируйте файл .ovpn в:

C:\Program Files\OpenVPN\config 

При запуске OpenVPN профиль будет автоматически обнаружен и сделан доступным.

Вы должны запускать OpenVPN от имени администратора каждый раз, даже если используете учетную запись администратора. Чтобы вам не нужно было при каждом запуске VPN нажимать правую кнопку мыши и выбирать Запуск от имени администратора, такой запуск следует настроить в учетной записи администратора. Это также означает, что обычным пользователям нужно будет ввести пароль администратора, чтобы использовать OpenVPN. Обычные пользователи не смогут правильно подключиться к серверу, если у приложения OpenVPN на клиентской системе нет прав администратора, поэтому необходим повышенный уровень привилегий.

Чтобы настроить приложение OpenVPN для запуска от имени администратора при каждом запуске, нажмите правой кнопкой мыши на его ярлык и выберите пункт Свойства. Внизу вкладки Совместимость нажмите кнопку Изменить параметры для всех пользователей. В новом окне установите отметку Запускать эту программу от имени администратора.

Подключение

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

После запуска OpenVPN нажмите правой кнопкой на значок OpenVPN в области задач, чтобы создать соединение. Откроется контекстное меню. Выберите client1 в верхней части меню (это ваш профиль client1.ovpn) и нажмите Подключиться.

Откроется окно состояния, где будут выведены данные журнала при установке соединения, и после подключения клиента будет выведено сообщение.

Отключение от VPN выполняется аналогично: перейдите в область задач, нажмите значок приложения OpenVPN правой кнопкой мыши, выберите профиль клиента и нажмите Отключиться.

macOS

Установка

Tunnelblick — бесплатный клиент OpenVPN с открытым исходным кодом для macOS. Вы можете загрузить последний образ этого клиентского приложения со страницы загрузки Tunnelblick. Дважды нажмите загруженный файл .dmg и следуйте указаниям по установке.

В конце процесса установки Tunnelblick спросит, есть ли у вас файлы конфигурации. Укажите ответ У меня есть файлы конфигурации и дайте Tunnelblick завершить работу. Откройте окно Finder и дважды нажмите client1.ovpn. Tunnelblick установит клиентский профиль. Для этого требуются привилегии администратора.

Подключение

Запустите Tunnelblick, дважды щелкнув значок Tunnelblick в папке Приложения. После запуска Tunnelblick в панели меню в правом верхнем углу экрана появится значок Tunnelblick для управления соединениями. Нажмите на значок, а затем нажмите на пункт меню Подключить client1, чтобы создать соединение VPN.

Linux

Установка

Если вы используете Linux, существуют различные инструменты в зависимости от вашего дистрибутива. Диспетчер окон или среда рабочего стола также могут содержать утилиты для подключения.

Однако проще всего будет использовать для этой цели программное обеспечение OpenVPN.

В Ubuntu или Debian вы можете установить его так же, как и на сервере, введя следующую команду:

  • sudo apt update
  • sudo apt install openvpn

В CentOS вы можете активировать репозитории EPEL и выполнить установку, введя следующую команду:

  • sudo dnf install epel-release
  • sudo dnf install openvpn
Настройка клиентов, использующих systemd-resolved

Вначале определите, использует ли ваша система systemd-resolved для разрешения DNS, проверив файл /etc/resolv.conf:

Output

# This file is managed by man:systemd-resolved(8). Do not edit. . . . nameserver 127.0.0.53 options edns0

Если ваша система настроена для использования systemd-resolved для разрешения DNS , IP-адрес после опции nameserver будет иметь значение 127.0.0.53. Также в файле должны быть комментарии, в частности информация о том, как systemd-resolved управляет файлом. Если у вас отображается не 127.0.0.53, а другой IP-адрес, то есть вероятность, что ваша система не использует systemd-resolved. В этом случае вы можете перейти к следующему разделу, предназначенному для настройки клиентов Linux, использующих скрипт update-resolv-conf.

Для поддержки этих клиентов нужно предварительно установить пакет openvpn-systemd-resolved. Он содержит скрипты, принудительно запускающие использование systemd-resolved для разрешения DNS сервером VPN.

  • sudo apt install openvpn-systemd-resolved

После установки пакета настройте клиент для его использования и отправки всех запросов DNS через интерфейс VPN. Откройте файл VPN клиента:

Разкомментируйте следующие строки, добавленные вами ранее:

client1.ovpn

script-security 2 up /etc/openvpn/update-systemd-resolved down /etc/openvpn/update-systemd-resolved down-pre dhcp-option DOMAIN-ROUTE . 
Настройка клиентов, использующих update-resolv-conf

Если ваша система не использует systemd-resolved для управления DNS, проверьте наличие в вашем дистрибутиве скрипта /etc/openvpn/update-resolv-conf:

Output

update-resolv-conf

Если в вашем клиенте имеется файл update-resolv-conf, измените ранее переданный файл конфигурации клиента OpenVPN:

Разкомментируйте три добавленные вами строки для изменения настроек DNS:

client1.ovpn

script-security 2 up /etc/openvpn/update-resolv-conf down /etc/openvpn/update-resolv-conf 

Если вы используете CentOS, измените директиву group с nogroup на nobody для соответствия доступным группам дистрибутива:

client1.ovpn

group nobody 

Сохраните и закройте файл.

Подключение

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

  • sudo openvpn --config client1.ovpn

Эта команда должна установить подключение к вашей VPN.

Примечание. Если ваш клиент использует systemd-resolved для управления DNS, проверьте правильность применения настроек, запустив команду systemd-resolve --status:

  • systemd-resolve --status tun0

Результат будет выглядеть следующим образом:

Output

Link 22 (tun0) . . . DNS Servers: 208.67.222.222 208.67.220.220 DNS Domain: ~.

Если вы видите IP-адреса серверов DNS, настроенные вами на сервере OpenVPN, и настройку ~. для DNS Domain в выводе, это означает, что вы правильно настроили клиент для управления DNS на сервере VPN. Также вы можете проверить отправку запросов DNS через VPN используя сайт DNS leak test.com или другой подобный сайт.

iOS

Установка

Найдите в магазине приложений iTunes App Store приложение OpenVPN Connect, официальный клиент OpenVPN для iOS, и установите его. Чтобы переместить конфигурацию клиента iOS на устройство, подключите его к компьютеру напрямую.

Здесь описан процесс завершения передачи с помощью iTunes. Откройте iTunes на компьютере и нажмите iPhone > приложения. Прокрутите страницу до раздела Общий доступ к файлам и нажмите на приложение OpenVPN. Пустое окно справа OpenVPN Documents предназначено для общего доступа к файлам. Перетащите файл .ovpn в окно OpenVPN Documents.

Запустите приложение OpenVPN на iPhone. Вы получите уведомление, что новый профиль готов к импорту. Нажмите зеленый значок плюс, чтобы импортировать его.

Подключение

Приложение OpenVPN готово к использованию нового профиля. Установите соединение, передвинув кнопку Подключиться в положение Вкл. Для отключения передвиньте эту же кнопку в положение Выкл.

Примечание. Переключатель VPN в разделе Настройки нельзя использовать для подключения к VPN. Если вы попробуете сделать это, вы получите уведомление о том, что для подключения нужно использовать приложение OpenVPN.

Android

Установка

Откройте магазин приложений Google Play Store. Найдите приложение Android OpenVPN Connect, официальное клиентское приложение OpenVPN для Android, и установите его.

Вы можете переместить профиль .ovpn, подключив устройство Android к вашему компьютеру через интерфейс USB и скопировав файл. Если у вас в компьютере есть разъем для SD-карт, вы можете извлечь SD-карту из устройства, скопировать на нее профиль и вставить карту обратно в устройство Android.

Запустите приложение OpenVPN и нажмите меню FILE, чтобы импортировать профиль.

Затем перейдите в местоположение сохраненного профиля (на снимке экрана используется расположение /storage/emulated/0/openvpn) и выберите файл .ovpn​​​. Нажмите кнопку IMPORT, чтобы завершить импорт этого профиля.

Подключение После добавления профиля вы увидите следующий экран:

Для подключения нажмите кнопку-переключатель рядом с профилем, который вы хотите использовать. Вы увидите статистические данные вашего подключения в режиме реального времени и трафик, проходящий через ваш сервер OpenVPN:

Для отключения просто нажмите кнопку-переключатель слева еще раз. Вам будет предложено подтвердить, что вы хотите отключиться от VPN.

Шаг 14 — Тестирование соединения VPN (необязательно)

Примечание. Этот метод тестирования подключения VPN будет работать только в случае, если вы выбрали перенаправление всего трафика через VPN на шаге 7 при редактировании файла server.conf​​ для OpenVPN.

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

Сайт покажет IP-адрес, назначенный вашим интернет-провайдером и видный остальному миру. Чтобы проверить настройки DNS через этот же сайт, нажмите Расширенный тест, и вы увидите, какие серверы DNS вы используете.

Теперь подключите клиент OpenVPN к VPN вашего дроплета и обновите браузер. Вы увидите совершенно другой IP-адрес (адрес вашего сервера VPN), и именно этот адрес будет виден остальному миру. Итак, в приложении DNSLeakTest функция Расширенный тест проверит ваши настройки DNS и подтвердит, что вы используете параметры DNS, заданные вашей VPN.

Шаг 15 — Отзыв сертификатов клиента

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

Для этго используйте пример из предварительного обучающего модуля «Установка и настройка центра сертификации в 20.04» из раздела «Отзыв сертификата».

После отзыва сертификата для клиента с помощью этих инструкций вам нужно будет скопировать созданный файл crl.pem на ваш сервер OpenVPN в директорию /etc/openvpn/server:

  • sudo cp /tmp/crl.pem /etc/openvpn/server/

Затем откройте файл конфигурации сервера OpenVPN:

  • sudo nano /etc/openvpn/server/server.conf

Добавьте в конце файла опцию crl-verify, чтобы сервер OpenVPN проверял созданный нами список отзыва сертификатов при каждой попытке подключения:

/etc/openvpn/server/server.conf

crl-verify crl.pem 

Сохраните и закройте файл.

Перезапустите OpenVPN, чтобы завершить отзыв сертификата:

Клиент больше не сможет подключаться к серверу, используя старые учетные данные.

Чтобы запретить доступ другим клиентам, повторите эту процедуру:

  1. Для отзыва сертификата используется команда ./easyrsa revoke client_name.
  2. Создайте новый список CRL.
  3. Переместите новый файл crl.pem на сервер OpenVPN и скопируйте его в директорию /etc/openvpn/server/, чтобы перезаписать старый список.
  4. Перезапустите службу OpenVPN.

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

Заключение

Теперь у вас должна быть полностью готовая к использованию виртуальная частная сеть, запущенная на вашем сервере OpenVPN. Вы можете просматривать веб-ресурсы и загружать контент, не беспокоясь о том, что злоумышленники смогут отслеживать вашу активность.

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

Для настройки большего числа клиентов вам нужно выполнить шаги 6 и 11–13 для каждого дополнительного устройства. Чтобы запретить доступ клиентским системам, следуйте указаниям в шаге 15.

Как настроить OpenVPN Server на Ubuntu 20.04

Когда, защищая свою сеть от несанкционированного доступа, вы подключаете сетевой экран, очень часто приходится решать задачи по обеспечению доступа в вашу защищённую сеть извне, например, с вашего домашнего компьютера или с рабочих станций, находящихся в удалённых сетях. Для реализации такого доступа без необходимости изменения конфигурации брандмауэра и без потерь в обеспечении защищённости ваших ресурсов существует технология Virtual Private Network (VPN). При этом бесплатной реализацией VPN является сервис с открытым кодом OpenVPN. Далее о том, как настроить OpenVPN Server на Ubuntu 20.04.

Чтобы это сделать, вы должны иметь два сервера установленной ОС Ubuntu 20.04. Помимо сервера с установленным и настроенным ПО OpenVPN (Сервер VPN), вам понадобится ещё один сервер, на котором будет развёрнут Центр Сертификации (в данном руководстве это будет Сервер ЦС).

Несмотря на то, что и ПО OpenVPN, и ЦС можно установить на один сервер, или даже вынести ЦС на клиентский компьютер, с которого предполагается осуществлять подключение к вашей закрытой сети, официальная документация рекомендует разместить ЦА на отдельном ресурсе из-за угрозы предоставления злоумышленнику доступа к секретному ключу вашего ЦС. Если это произойдёт, он сможет подписывать добытым ключом новые сертификаты, и, таким образом, получит доступ к вашему Серверу VPN. Также, для упрощения настройки VPN, рекомендуется включить аутентификацию пользователей с использованием пароля на каждом из серверов, в случае, если она у вас отключена. Всё дело в том, что при настройке ваших VPS, вы можете столкнуться со сложностями при транспортировке файлов с одного сервера на другой.

Центр сертификации

Установку узла VPN следует начать с настройки Сервера ЦС, который будет использоваться исключительно для создания и подписания, а также, для отзыва и выгрузки запросов на сертификаты.

Для начала на Сервере ЦС запустите установку утилиты easy-rsa:

$ sudo apt update $ sudo apt install easy-rsa

После чего, необходимо создать каталог ~/easy-rsa:

$ mkdir ~/easy-rsa

Создать ссылку:

$ ln -s /usr/share/easy-rsa/* ~/easy-rsa/

И установить соответствующие права:

$ chmod 700 /home/Your-user/easy-rsa

После чего, запустите на исполнение скрипт easyrsa:

$ cd ~/easy-rsa $ ./easyrsa init-pki

Таким образом, вы создали директорию “инфраструктуры открытых ключей” (Public Key Infrastructure или сокращённо PKI).

Теперь всё готово для создания Центра Сертификации, а значит, пора переходить к созданию секретного ключа и сертификата. Для этого создайте файл vars. Он должен располагаться в директории ~/easy-rsa. Если вы используете редактор nano, наберите:

$ sudo nano ~/easy-rsa/vars

Скопируйте в этот файл следующий текст:

set_var EASYRSA_REQ_COUNTRY    "RUS" set_var EASYRSA_REQ_PROVINCE   "Moscow" set_var EASYRSA_REQ_CITY       "Moscow City" set_var EASYRSA_REQ_ORG        "Our Company Name" set_var EASYRSA_REQ_EMAIL      "[email protected]" set_var EASYRSA_REQ_OU         "LLC" set_var EASYRSA_ALGO           "ec" set_var EASYRSA_DIGEST         "sha512"

В этих строках необходимо отредактировать значения, которые относятся к вашей закрытой сети, при этом, не оставляйте пустых значений. Перед выходом из файла его нужно сохранить (для этого в nano нажмите Ctrl+X, затем Y и Enter).

Далее, запустите скрипт easyrsa в командной строке:

$ ./easyrsa build-ca

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

Также система предложит вам ввести Common Name, которое представляет собой обозначение вашего ЦС. Вы можете ввести любую символьную строку или принять дефолтное имя нажав Enter.

Файл ca.crt – это открытый ключ ЦС. Он будет использоваться клиентами и серверами для проверки при авторизации.

Теперь ваш центр сертификации подготовлен к работе.

OpenVPN и Easy-RSA

На Сервере VPN необходимо запустить установку пакета OpenVPN и утилиты Easy-RSA:

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

Далее, необходимо создать каталог ~/easy-rsa:

$ mkdir ~/easy-rsa

Создайте ссылку:

$ ln -s /usr/share/easy-rsa/* ~/easy-rsa/

И установите соответствующего владельца на эту папку с соответствующими правами:

$ sudo chown Your-user ~/easy-rsa $ chmod 700 ~/easy-rsa

PKI для OpenVPN

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

Сначала создайте файл vars в директории ~/easy-rsa, например, с помощью редактора nano:

$ sudo nano ~/easy-rsa/vars

Скопируйте в него следующее:

set_var EASYRSA_ALGO "ec" set_var EASYRSA_DIGEST "sha512"

Сохраните файл и закройте его (в nano для этого нажмите Ctrl+X, затем Y и Enter).

Теперь необходимо создать каталог PKI. Сделайте это при помощи скрипта easyrsa:

$ ./easyrsa init-pki

Сертификат и закрытый ключ OpenVPN

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

На этом шаге вы создадите секретный ключ, а также, запрос подписи сертификата. Сначала вам необходимо перейти в директорию ~/easy-rsa. Это нужно сделать на Сервере VPN.

$ cd ~/easy-rsa

Далее запустите easyrsa, где server – CN вашего Сервера VPN (вместо server вы можете использовать любую последовательность символов):

$ ./easyrsa gen-req server nopass

Таким образом, вы создали файл запроса сертификата server.req и секретный ключ.

Этот файл нужно скопировать в /etc/openvpn/server:

$ sudo cp /home/Your-user/easy-rsa/pki/private/server.key /etc/openvpn/server/

Подписание запроса сертификата

На этом этапе необходимо выполнить подписание сертификата server. Сначала скопируйте файл server.req на сервер ЦС для подписания:

$ scp /home/Your-user/easy-rsa/pki/reqs/server.req Your-user@X.X.X.X:/tmp

Здесь, Your-user – имя вашей учётной записи, server – CN вашего Сервера VPN, X.X.X.X – IP-адрес Сервера ЦС.

Далее, подключитесь к вашему Серверу ЦС, переключитесь в папку ~/easy-rsa и запустите импорт запроса server.req при помощи easyrsa:

$ cd ~/easy-rsa $ ./easyrsa import-req /tmp/server.req server

Теперь необходимо запустить подписание запроса при помощи скрипта easyrsa используя опцию sign-req и такой тип запроса как server:

$ ./easyrsa sign-req server server

Для подтверждения надёжности источника запроса наберите Yes, после чего нажмите Enter.

И наконец, файл server.crt, в котором находится открытый ключ шифрования, и файл ca.crt, содержащий собственный доверенный сертификат, скопируйте на Сервер VPN:

$ scp pki/issued/server.crt Your-user@X.X.X.X:/tmp $ scp pki/ca.crt [email protected]:/tmp

В данном случае, Your-user – имя вашей учётной записи, server – CN вашего Сервера VPN, X.X.X.X – IP-адрес Сервера VPN.

После чего на Сервере VPN эти файлы скопируйте из /tmp в /etc/openvpn/server:

$ sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/server

Криптография OpenVPN

Чтобы повысить уровень безопасности следует добавить дополнительный секретный ключ для использования сервером и клиентами при помощи OpenVPN tls-crypt. Для создания публичного tls-crypt ключа запустите:

$ cd ~/easy-rsa $ openvpn --genkey --secret ta.key

Файл ta.key нужно будет скопировать в директорию /etc/openvpn/server/:

$ sudo cp ta.key /etc/openvpn/server

Теперь вы готовы создавать сертификаты клиентов вашего VPN и ключи для подключения к OpenVPN.

Генерация сертификатов и ключей

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

$ mkdir -p ~/clients/keys $ chmod -R 700 ~/clients

После чего запустите скрипт easyrsa используя опции gen-req и nopass, а также, с использованием CN клиента:

$ cd ~/easy-rsa $ ./easyrsa gen-req client-1 nopass

И скопируйте client-1.key в ~/clients/keys/:

$ cp pki/private/client-1.key ~/clients/keys/

После чего файл client-1.req скопируйте на Сервер ЦС:

$ scp pki/reqs/client-1.req [email protected]:/tmp

А на сервере ЦС запустите импорт запроса client-1.req:

$ cd ~/easy-rs $ ./easyrsa import-req /tmp/client-1.req client-1

Теперь этот запрос необходимо подписать, используя тип запроса client:

$ ./easyrsa sign-req client client-1

Таким образом, вы сгенерировали сертификат клиента client-1.crt. Его необходимо передать на Сервер VPN:

$ scp pki/issued/client-1.crt [email protected]:/tmp

И на Сервере VPN нужно скопировать его в папку ~/clients/keys/:

$ cp /tmp/client-1.crt ~/clients/keys/

Далее, ca.crt и ta.key скопируйте в каталог ~/clients/keys/ с соответствующими правами:

$ cp ~/easy-rsa/ta.key ~/clients/keys/ $ sudo cp /etc/openvpn/server/ca.crt ~/clients/keys/ $ sudo chown Your-user.Your-user ~/clients/keys/*

Настройка OpenVPN

На данном шаге произведите некоторые настройки конфигурации Сервера VPN:

  • Скопируйте server.conf в директорию OpenVPN:
$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/server/ $ sudo gunzip /etc/openvpn/server/server.conf.gz
  • Откройте этот файл для редактирования, например, с помощью nano:
$ sudo nano /etc/openvpn/server/server.conf
  • В разделе HMAC закомментируйте строку tls-auth и после неё вставьте строку tls-crypt ta.key​​​:
  • Найдите в том же файле строку cipher AES-256-CBC, закомментируйте её и добавьте строки cipher AES-256-GCM и auth SHA256:
  • Теперь найдите текст либо dh dh3048.pem,​​​ либо dh dh.pem и закомментируйте его, так как в вашем случае нет необходимости использовать файл Диффи-Хеллмана. После закомментированной строки вставьте строку dh none:
  • И для того, чтобы OpenVPN запускался без привилегий, снимите комментарий перед user nobody и group nogroup:

Сохраните изменения в файле, закройте его.

Конфигурация сети на Сервере VPN

Теперь необходимо внести изменения в конфигурацию сети на Сервере VPN для обеспечения правильной маршрутизации трафика. А именно, откройте конфигурационный файл /etc/sysctl.conf:

$ sudo nano /etc/sysctl.conf

После чего добавьте строку:

net.ipv4.ip_forward = 1

Перед закрытием файла сохраните внесённые изменения.

Для применения новой настройки наберите:

$ sudo sysctl -p

Изменение конфигурации сетевого экрана

Далее, вам следует произвести настройки, касающиеся ранее установленного и сконфигурированного интерфейса брандмауэра UFW на Сервере VPN. А именно, нужно разрешить работу OpenVPN через брандмауэр путём включения типа трансляции адресов, который называется маскарадинг. Такая технология позволяет транслировать пакеты клиентов, подставляя адреса отправителей в динамике.

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

$ ip route list default

Его можно увидеть после параметра dev:

Теперь откройте /etc/ufw/before.rules:

$ sudo nano /etc/ufw/before.rules

В начало файла скопируйте строки:

# START OPENVPN RULES # NAT table rules *nat :POSTROUTING ACCEPT [0:0] # Allow traffic from OpenVPN client to eth0 (change to the interface you discovered!) -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE COMMIT # END OPENVPN RULES

Сохраните внесённые изменения и закройте файл.

Откройте файл /etc/default/ufw:

$ sudo nano /etc/default/ufw

В строке DEFAULT_FORWARD_POLICY поменяйте значение DROP на значение ACCEPT:

Сохраните изменения в файле и закройте его.

Следующими командами откройте UDP-трафик на порту 1194 и добавьте в UFW протокол OpenSSH, если вы не сделали этого ранее:

$ sudo ufw allow 1194/udp $ sudo ufw allow OpenSSH

Перезапустите UFW:

$ sudo ufw disable $ sudo ufw enable

Запуск OpenVPN

При помощи systemctl произведите запуск службы OpenVPN c включением его в автозагрузку:

$ sudo systemctl -f enable [email protected] $ sudo systemctl start [email protected]

Проверьте корректность запуска службы:

$ sudo systemctl status [email protected]

Вывод команды должен выглядеть так:

Конфигурация клиентов

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

Это будет полезно с точки зрения автоматизации ваших действий при организации доступа для каждого из клиентов.

Создайте структуру директорий, где будут сохраняться файлы:

$ mkdir -p ~/clients/files

Скопируйте шаблон клиентской конфигурации в папку clients:

$ cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/clients/base.conf

Откройте base.conf:

$ sudo nano ~/clients/base.conf

В строке remote замените порт 1194 на нужный вам, если меняли номер порта, который прослушивает Сервер VPN:

remote X.X.X.X 1194

Должен быть правильно указан протокол:

proto udp

Снимите комментарий со строк:

user nobody group nogroup

Закомментируйте следующие строки:

;ca ca.crt ;cert client.crt ;key client.key

А строку относящуюся к tls-auth, наоборот, нужно раскомментировать:

tls-auth ta.key 1

Следующие строки должны совпадать с соответствующими строками, прописанными в файле /etc/openvpn/server.conf:

cipher AES-256-GCM
auth SHA256

Добавьте строку:

key-direction 1

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

; script-security 2
; up /etc/openvpn/update-resolv-conf
; down /etc/openvpn/update-resolv-conf

Плюс ко всему, добавьте строки настроек для клиентов, которые планируют использовать systemd-resolved:

; script-security 2
; up /etc/openvpn/update-systemd-resolved
; down /etc/openvpn/update-systemd-resolved
; down-pre
; dhcp-option DOMAIN-ROUTE

Сохраните изменения в файле, закройте его.

Теперь необходимо создать скрипт make_config.sh. Он создаст базовую клиентскую конфигурацию, которая будет сохранена в директории ~/clients/files:

$ sudo nano ~/clients/make_config.sh

Скрипт должен содержать:

#!/bin/bash
# First argument: Client identifier
KEY_DIR=~/clients/keys
OUTPUT_DIR=~/clients/files
BASE_CONFIG=~/clients/base.conf
cat ${BASE_CONFIG} \
<(echo -e '<ca>') \
${KEY_DIR}/ca.crt \
<(echo -e '</ca>\n<cert>') \
${KEY_DIR}/${1}.crt \
<(echo -e '</cert>\n<key>') \
${KEY_DIR}/${1}.key \
<(echo -e '</key>\n<tls-crypt>') \
${KEY_DIR}/ta.key \
<(echo -e '</tls-crypt>') \
> ${OUTPUT_DIR}/${1}.ovpn

Сохраните скрипт, закройте его и назначьте ему соответствующие права:

$ chmod 700 ~/clients/make_config.sh

Создание клиента

Итак, вы создали сертификат клиента client-1.crt и файл ключа client-1.key. Теперь можно создать клиентский файл конфигурации. Для это нужно запустить на исполнение скрипт ~/clients/make_config.sh:

$ cd ~/clients $ ./make_config.sh client-1

В результате скрипт создаст файл ~/clients/files/client-1.ovpn.

Такой файл необходимо передать клиенту для установки на устройство, которое он будет использовать для подключения к закрытой сети через Сервер VPN. При этом, на стороне клиента должно быть развёрнуто программное обеспечение OpenVPN, к которому нужно подключить полученнный из ЦС файл с расширением ovpn. Например, если рабочая станция клиента работает под управлением ОС Windows, достаточно с сайта OpenVPN скачать дистрибутив Windows-приложения, установить его и скопировать файл сертификата .ovpn в одну из папок, указанных приложением при первом запуске. Это позволит клиенту осуществлять извне работу с ресурсами, расположенными внутри вашей сети, без изменений в конфигурации сетевого экрана и не понижая при этом уровень защищённости сети.

Следует отметить, что в данном руководстве в качестве сервера ЦС использовалась виртуальная машина, на которой также, как и на сервере OpenVPN, развёрнута ОС Ubuntu 20.04. На самом деле, в качестве сервера ЦС вы можете использовать как и ваш VPS, на котором вы настроили серверный сегмент VPN (что не является хорошим вариантом с точки зрения соблюдения мер информационной безопасности), но и любой компьютер или сервер, находящийся за пределами вашей закрытой сети. Во втором варианте, вам нужно продумать организацию безопасного трансфера файлов ключей и сертификатов между рабочей станцией с настроенным ЦС и сервером VPN.

Инструкция по установке и настройке OpenVPN в Ubuntu

OpenVPN - открытая реализация одной из технологий VPN, предназначенная для организации защищенных виртуальных частных сетей между территориально удаленным локальными сетями, а также отдельными клиентами. Безопасность туннелей обеспечивается шифрованием с помощью OpenSSL.

Как работает OpenVPN?

По окончании настройки сервера и его запуске, он перейдет в режим готовности приема и перенаправления внешних защищенных SSL-соединений на виртуальный сетевой адаптер (tun/tap).

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

Что требуется от операционной системы?

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

1. У сервера есть хотя бы один “белый” статичный IP-адрес. Т.е. сервер должен быть доступен из сети Интернет. Если адрес динамический, но сервер все же остается быть доступным из глобальной сети - воспользуйтесь услугами DynDNS.

2. Разрешена загрузка и установка пакетов из официальных репозиториев. Для проверки выполните cat /etc/apt/sources.list. Строки с указаниями репозиториев должны быть раскомментированы (не должно быть символа “#” решетка в начале строки).

РепозиторииСкриншот 1. Репозитории

3. Должны быть верно указаны параметры сети - hostname, параметры DNS-серверов.

Для обеспечения должного уровня безопасности, рекомендуем ознакомиться с нашими рекомендациями.

Приступаем к установке.

Все действия по установке будем выполнять от пользователя root.

1. Обновляем информацию о репозиториях:

apt-get update

2. Устанавливаем текущие обновления системы и установленных программ:

apt-get upgrade

3. Устанавливаем OpenVPN:

apt-get install openvpn

Установка OpenVPNСкриншот 2. Установка OpenVPN

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

4. Аналогичным образом устанавливаем пакет easy-rsa:

apt-get install easy-rsa

Действия после установки.

Размещаем скрипты easy-rsa:

cd /etc/openvpn/ && make-cadir easy-rsa

Подготавливаем публичные ключи (PKI - Public Key Infrastructure):

1. Переходим в директорию /etc/openvpn/easy-rsa:

cd /etc/openvpn/easy-rsa

2. Создаем символьную ссылку на файл конфигурации openssl:

ln -s openssl-1.0.0.cnf openssl.cnf

3. Инициализируем скрипт vars:

source ./vars

Система сообщит: NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys

4. Выполняем

./clean-all

Подготавливаем публичные ключиСкриншот 3. Подготавливаем публичные ключи

5. Для создания центра сертификации выполняем скрипт:

./build-ca

В ходе своей работы, программа задаст несколько вопросов. Отвечать на них следует латиницей. Если вы не заполните какое-либо поле, программа подставит значения по умолчанию, обычно указанные в скобках.

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

Создаем ключ сервера.

Для создания ключа сервера выполним команду:

./build-key-server server

Создание ключа сервераСкриншот 5. Создание ключа сервера

Следует обратить внимание, что процесс похож на генерацию сертификата центра сертификации, однако, перед подписанием сертификата программа задаст 2 уточняющих вопроса. Если все указано верно, отвечаем “y”.

Генерация клиентских ключей.

Аналогично генерации серверных ключей создаются и клиентские:

./build-key client1

Следует обратить внимание, что созданный client1.key не имеет парольной или криптографической защиты. Это может привести к тому, что любой пользователь завладевший файлом может попробовать подключиться к серверу. Если такая угроза существует, лучше генерировать ключи другим скриптом:

./build-key-pass client2

Скрипт запросит пароль ную фразу в самом начале. Далее процесс ничем не отличается от генерации ключей сервера и простого клиента.

Создание ключа клиентаСкриншот 6. Создание ключа клиента

Следует помнить, что имена ключей должны быть уникальными. Один пользователь - один ключ с уникальным именем.

Бывает так, что в процессе работы сервера, по прошествии некоторого времени, необходимо создать еще один или несколько сертификатов. Для этого потребуется повторно инициализировать скрипт vars и только потом запустить процесс генерации ключа:

cd /etc/openvpn/easy-rsa

source ./vars

./build-key client3

Генерация ключа Диффи-Хеллмана

Благодаря протоколу Диффи-Хеллмана, две и более стороны могут получить один секретный ключ, который позволит выстроить защищенный канал связи. Генерируются ключи командой:

./build-dh

Результат будет примерно таким.

Генерация ключа Диффи-ХеллманаСкриншот 7. Генерация ключа Диффи-Хеллмана

По окончании работы программы, в директории /etc/openvpn/easy-rsa/keys/ появится файл dh3048.pem

Перемещение сертификатов и ключей

Сервер

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

1. Переходим в каталог с ключами:

cd /etc/openvpn/easy-rsa/keys

2. Копируем только необходимые серверу файлы:

cp ca.crt ca.key dh3048.pem server.crt server.key /etc/openvpn

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

Клиенты

Клиенту понадобится всего 3 файла ca.crt, client1.crt, client1.key. Каждому клиенту необходимо отдавать только его ключи. Данные файлы можно разместить в директории /etc/openvpn на машине клиента, если она под управлением Linux-подобной ОС.

В ОС Windows их следует разместить в пользовательский каталог.

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

Сервер

Большинство устанавливаемых программ в ОС Linux имеют так называемые sample-файлы. Эти файлы содержат примеры настройки и объяснения их. OpenVPN не стал исключением. Распакуем серверный конфигурационный файл в директорию /etc/openvpn:

gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf

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

Для начала, проверяем какие файлы оказались в директории /etc/openvpn:

ls /etc/openvpn

Содержимое директории openvpnСкриншот 8. Содержимое директории openvpn

Открываем файл конфигурации:

nano /etc/openvpn/server.conf

И проверяем соответствие файлов прописанных в конфигурации с файлами находящимися в каталоге. Интересны строки после “SSL/TLS root certificate (ca), certificate (cert), and private key (key).”

Файл конфигурации OpenVPNСкриншот 9. Файл конфигурации OpenVPN

Если имена отличаются от существующих, следует внести необходимые исправления. Выходим из редактора сочетанием клавиш Ctrl + X.

Запускаем сервер:

/etc/init.d/openvpn start

Проверим результат запуска:

/etc/init.d/openvpn status

Запуск службы OpenVPNСкриншот 10. Запуск службы OpenVPN

Настройки клиента.

Предполагается, что на стороне клиента уже установлен пакет OpenVPN.

1. Копируем файл клиентских настроек в домашний каталог пользователя:

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /root

2. Копируем сгенерированные ключи - client1.key, client1.crt, ca.crt:

cd /etc/openvpn/easy-rsa/keys

cp client1.key client1.crt ca.crt /root

3. Редактируем файл конфигурации клиента:

nano /root/client.conf

4. Находим закомментированные строки “# The hostname/IP and port of the server”. Для параметра remote меняем my-server-1 на IP-адрес сервера или его доменное имя.

Редактирование настроекСкриншот 11. Редактирование настроек

5. В том же файле, ниже, находим блок “#SSL/TLS parms.”. Редактируем имена ключей.

Редактирование SSL TLS parmsСкриншот 12. Редактирование SSL TLS parms

6. Выходим из редактирования сочетанием Ctrl + X. На вопрос о сохранении изменений отвечаем “Y”. Имя файла оставляем неизменным.

7. Переносим файлы client1.key, client1.crt, ca.crt и client.conf на компьютер клиента с которого будет происходить подключение к серверу OpenVPN.

Важно! Некоторые клиентские реализации OpenVPN работают только с файлами *.ovpn. В подобных случаях достаточно изменить расширение файл (переименовать) с client.conf на client.ovpn.

8. Подключаемся к серверу командой:

openvpn openvpn.conf

Следует обратить внимание, что проксирование до сих пор не настроено. При этом, когда клиентская машина подключена к OpenVPN-серверу, доступ в Интернет прекращается. Связано это с тем, что созданный адаптер TUN, а в месте с ним и сам сервер, являются шлюзом по умолчанию.

Настройка маршрутизации.

1. На сервере редактируем файл server.conf:

nano /etc/openvpn/server.conf

2. В файле находим следующую строку и удаляем перед ней символ “;”, таким образом раскомментируем ее:

push "redirect-gateway def1 bypass-dhcp"

3. Сохраняем и закрываем редактор.

4. Редактируем файл /etc/sysctl:

nano /etc/sysctl.conf

5. В конец файла добавляем следующую строку:

net.ipv4.ip_forward=1

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

6. Разрешаем форвардинг пакетов без перезагрузки сервера:

echo 1 > /proc/sys/net/ipv4/ip_forward

7. Настроим NAT в iptables. Поочередно вводим команды:

iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT

iptables -A FORWARD -j REJECT

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

iptables -A INPUT -i tun+ -j ACCEPT

iptables -A FORWARD -i tun+ -j ACCEPT

iptables -A INPUT -i tap+ -j ACCEPT

iptables -A FORWARD -i tap+ -j ACCEPT

Также их можно просто вписать в файл /etc/rc.local до строки “exit 0” или выполнить настройку firewall как это указано в нашей статье.

Настройка автозагрузки iptablesСкриншот 13. Настройка автозагрузки iptables

Сервер уже готов к использованию. Однако, задача проксировать весь трафик, а следовательно необходимо настроить форвардинг DNS-запросов. Настроим.

1. Устанавливаем dnsmasq

Если установка выполняется в ОС Ubuntu:

apt-get install dnsmasq

Несмотря на то, что в большинстве современных версий ОС Ubuntu dnsmasq уже предустановлен, в старых версиях необходимо выполнить так:

apt-get install dnsmasq && dpkg-reconfigure resolvconf

Возможно запустится диалоговое окно мастера установки. В нем будет 2 вопроса. В первом случае, на вопрос “prepare /etc/resolv.conf for dynamic updates” отвечаем “Yes”, а на следующий - “Append original file to dynamic file?” отвечаем “No”.

Для ОС Debian 7:

apt-get install dnsmasq resolvconf

2. Отредактируем файл настроек dnsmasq:

nano /etc/dnsmasq.conf

Добавим следующие параметры:

listen-address=10.8.0.1

bind-interfaces

Сохраняем файл и закрываем редактор.

3. Редактируем файл сетевых настроек:

nano /etc/network/interfaces

Требуется указать адрес DNS-серверов в соответствующих секциях настроек адаптера:

dns-nameservers 8.8.8.8 8.8.4.4

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

4. Учитывая особенность запуска и последующей работы dnsmasq - возможность аварийного завершения до инициализации виртуального tun-адаптера, добавим следующую строчку в файл rc.local, перед “exit 0”:

/etc/init.d/dnsmasq restart

Настройка перезапуска dnsmasqСкриншот 14. Настройка перезапуска dnsmasq

5. Теперь разрешим клиентам OpenVPN-сервера использовать DNS. С помощью редактора nano раскомментируем строку:

push "dhcp-option DNS 10.8.0.1"

Фиксируем изменения в файле.

6. Перезагружаем сервер:

reboot

Проверка работы

Выполняем повторное подключение к серверу. Пробуем открыть сайт для проверки IP-адреса. В результате должен быть IP-адрес сервера.

Средняя оценка: 4.7 Оценили: 6

191028 Санкт-Петербург Литейный пр., д. 26, Лит. А

+7 (812) 403-06-99 700 300 ООО «ИТГЛОБАЛКОМ ЛАБС»

191028 Санкт-Петербург Литейный пр., д. 26, Лит. А

+7 (812) 403-06-99 700 300 ООО «ИТГЛОБАЛКОМ ЛАБС» 700 300

OpenVPN-сервер c интернет-туннелированием на Ubuntu 12/Debian 7

OpenVPN - открытая реализация технологии виртуальных частных сетей (VPN - Virtual Private Network), предназначенной для создания защищенных виртуальных локальных сетей между группой территориально удаленных клиентов поверх публичного канала передачи данных (интернет). Этот инструмент отлично подходит для таких задач, как безопасное сетевое подключение извне к серверу без предоставления публичного интернет-доступа к нему. Безопасность соединения достигается за счет шифрования канала с помощью OpenSSL.

Содержание:

Как работает OpenVPN?

После завершения настройки OpenVPN сервер сможет принимать и перенаправлять внешние защищенные SSL сетевые подключения к созданному при запуске VPN-сервиса виртуальному сетевому удаптеру (tun/tap), не затрагивая правила обработки трафика других интерфейсов (внешний интернет-адаптер и др.) Благодаря этой технологии вы можете обеспечить себе доступ к удаленному серверу и находящейся в его локальной сети группе устройств даже в том случае, если основной интернет-адаптер этого сервера не принимает входящие подключения из публичных сетей и/или не осуществляет их маршрутизацию до необходимых машин, находящихся в его LAN-сети.

При необходимости вы также можете настроить маршрутизацию интернет-трафика OpenVPN-клиентов через VPN-сервер (необходимые для этого действия описаны в данной инструкции). При такой переадресации обрабатывающий VPN-подключения хост будет выполнять и функцию прокси-сервера (Proxy) - унифицировать правила сетевой активности пользователей и осуществлять туннелирование клиентского интернет-трафика от своего имени.

Требования к системе

Прежде чем приступить к установке OpenVPN, убедитесь что на вашем сервере корректно настроены необходимые базовые параметры, приведенные ниже. (если вы используете виртуальный сервер 1cloud.ru, эти три пункта уже выполнены и их можно пропустить):

  1. Сервер имеет хотя бы один статичный внешний IP-адрес (в качестве альтернативы вы можете воспользоваться DynamicDNS-сервисами, автоматически обновляющими информацию о текущем IP-адресе устройства, например, DynDNS)
  2. Разрешена загрузка пакетов ПО из официальных репозиториев. Чтобы проверить это, откройте на сервере файл /etc/apt/sources.list и убедитесь в том, что сетевые адреса вида "deb http://..." присутствуют и не закомментированы (отсутствует # в начале строки с url репозитория). Так, например, выглядит добавленное в sources.list американское зеркало репозиториев Ubuntu Precise: # See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
    # newer versions of the distribution.
    deb http://us.archive.ubuntu.com/ubuntu/ precise main restricted
    deb-src http://us.archive.ubuntu.com/ubuntu/ precise main restricted
  3. Верно указаны сетевые параметры:hostname, ip-адрес (адреса) вашего сервера и его параметры DNS (последний параметр потребуется для маршрутизации интернет-трафика клиентов). Найти перечисленные сетевые настройки можно в файле /etc/hosts.

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

Установка OpenVPN на сервер

Чтобы установить пакет openvpn на сервер, необходимо последовательно выполнить приведенные ниже команды:

  1. Обновить репозитории пакетов:
    apt-get update
  2. Загрузить доступные обновления для установленных программ:
    apt-get upgrade
  3. Установить пакет openvpn:
    apt-get install openvpn
  4. OpenVPN включает в себя набор средств шифрования easy-rsa. Для нормальной работы демона скрипты easy-rsa следует разместить в директории /etc/openvpn:
    cd /etc/openvpn/ && make-cadir easy-rsa

Подготовка публичных ключей (PKI - Public Key Infrastructure)

На данном этапе нужно сгенерировать и подписать пары пользовательских и серверных ключей. Для заверения созданных пар мы будем использовать центр сертификации (CA - Certificate Authority), находящийся на самом VPN -сервере. Итак, создадим CA:

  1. Перейти в папку /etc/openvpn/easy-rsa: cd /etc/openvpn/easy-rsa
  2. Создать символьную ссылку openssl-1.0.0.cnf -> openssl.cnf: ln -s openssl-1.0.0.cnf openssl.cnf
  3. Инициализировать скрипт vars: source ./vars
  4. В ответ вы получите следующее уведомление: NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys
  5. Запустить скрипт clean-all: ./clean-all
  6. Выполнить скрипт build-ca для создания центра сертификации. В ответ на появляющиеся запросы введите необходимую информацию (латинскими символами). Если вы не укажите собственные значения для каких-то из требуемых полей, будет использовано значение по-умолчанию [представленное в квадратных скобках]: ./build-ca
  7. Теперь можно перейти к генерации пары публичного сертификата/секретного ключа VPN-сервера.
Генерация ключа/сертификата сервера
  1. Сгенерируйте ключ: ./build-key-server server Заполните информацию по аналогии с build-ca. Поля "Company Name" и "Challenge Password" могут быть оставлены пустыми.
  2. После успешной генерации ключа появится запрос на его подписание центром сертификации. Введите yes для подтверждения.
Генерация клиентских ключей
  1. Создайте пару ключей для пользователя: ./build-key client1 Примечание: созданный файл ключа client1.key по умолчаню незашифрован. Это позволяет любому пользователю, имеющему доступ к этому файлу, подключиться к вашей виртуальной частной сети. Для устранения этой особенности вы можете использовать команду ./build-key-pass client1 вместо ./build-key client1 . В этом случае ключ будет зашифрован выбранным вами паролем.
  2. Повторите процедуру генерации для каждого из будущих клиентов VPN, заменив client1 на желаемое имя. Внимание: имена ключей должны быть уникальными.
    Вы можете сгенерировать клиентские ключи и позднее. Для этого потребуется повторно инициализировать скрипт vars (команда source ./vars), а затем запустить процедуру генерации необходимого ключа.
Установка параметров протокола Диффи-Хеллмана

Параметры протокола Диффи-Хеллмана определяют метод обмена данными между сервером и клиентами OpenVPN. Создав файл .pem, мы укажем параметры, в соответствии с которыми сервер будет инициировать защищенные соединения с пользователями.

Сгенерировать .pem файл следует с помощью команды: ./build-dh В ответ будет отображен набор случайных символов, говорящий о том, что идет процесс генерации. После завершения процедуры в директории etc/openvpn/easy-rsa/keys появится файл dh2024.pem.

Перемещение ключей и сертификатов

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

На сервере:

  1. Перейдите в директорию, в которой хранятся созданные ключи: cd /etc/openvpn/easy-rsa/keys
  2. Скопируйте сертификат и ключ центра сертификации (CA), файл параметров DH, ключ и сертификат vpn-сервера в каталог /etc/openvpn: cp ca.crt ca.key dh2024.pem server.crt server.key /etc/openvpn ВАЖНО: Перечисленные выше файлы - основа работоспособности и безопасности VPN. Их компрометация может иметь неблагоприятные последствия. Храните их в надежном хранилище и не передавайте эти файлы по небезопасным каналам.

 

На клиентском устройстве:

Скопируйте файлы ca.crt, client1.crt, client1.key в используемую приложением OpenVPN папку клиентского устройства (например, для Linux это /etc/openvpn)

 

Конфигурация сервера и клиента OpenVPN

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

Настройки сервера:
  1. В качестве отправной точки в настройке вы можете использовать образец файла конфигурации OpenVPN-сервера, содержащий список доступных параметров работы программы и подробные пояснения этих параметров. Скопируйте этот документ в директорию /etc/openvpn/ для его редактирования и последующего запуска сервера VPN: gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz >/etc/openvpn/server.conf
  2. Скопированный на предыдущем этапе файл server.conf является вполне работоспособной конфигурацией. Ее достаточно для нормальной работы сервера, если вам не требуется туннелирование всего клиентского интернет-трафика через VPN-сервер или другие специфические опции.
    Единственное, на что обязательно нужно обратить внимание - имена и пути файлов сертификата сервера (.crt) и его ключа (.key), а также сертификата CA (.crt).
    Имена ключей, находящихся в директории /etc/openvpn должны полностью совпадать с именами ключей в конфиге server.conf. Проверить это можно с помощью следующих команд:
    • Узнаем имена файлов ключей (два файла .crt и один .key) в папке /etc/openvpn с помощью команды: ls /etc/openvpn
    • Проверяем, соответствуют ли отобразившимся выше названиям файлов имена ключей в файле /etc/openvpn/server.conf (после блока # SSL/TLS root certificate (ca), certificate (cert), and private key (key)): nano /etc/server.conf В случае, если имена отличаются, внесите соответствующие корректировки в файл конфига (не в имена файлов в папке openvpn) и сохраните его (CTRL+X).
    • Перезапускаем OpenVPN для применения изменений: /etc/init.d/openvpn restart
Настройки клиента:
  1. Копируем образец файла конфигурации клиента в любую удобную директорию (в нашем случае домашнюю директорию пользователя (home), от имени которого выполняем команды: gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/client.conf.gz >/home/1cloud
  2. Переходим в папку keys и копируем необходимые файлы ключей (в нашем случае: client1.key, client1.crt, ca.crt) в эту же директорию (/home/1cloud): cd /etc/openvpn/easy-rsa/keys> cp client1.key client1.crt ca.crt /home/1cloud
  3. Открываем конфиг клиента: nano /home/1cloud/client.conf
  4. Находим блок # The hostname/IP and port of the server и вместо example.com указываем IP адрес OpenVPN-сервера: # The hostname/IP and port of the server.
    # You can have multiple remote entries
    # to load balance between the servers.
    remote example.com 1194
  5. В этом же файле находим блок #SSL/TLS parms. и проверяем названия файлов ключей пользователя (аналогично тому, как делали это в конфиге сервера): # SSL/TLS parms.
    # See the server config file for more
    # description. Its best to use
    # a separate .crt/.key file pair
    # for each client. A single ca
    # file can be used for all clients.
    ca ca.crt
    cert client1.crt
    key client1.key
  6. Сохраняем файл конфигурации клиента (CTRL+X).
  7. Теперь необходимо перенести пользовательские файлы client.conf, client1.key, client1.crt, ca.crt на клиентское устройство, с которого вы будете подключаться к VPN-серверу. Сделать это можно через FTP, SCP или просто создав на пользовательском устройстве (через nano на Linux, через блокнот на Windows) файлы с идентичными именами и полностью скопировать в них содержимое исходных документов с удаленного сервера.
    Внимание! Некоторые клиентские приложения OpenVPN (например на Andoid и IOS) работают с расширением файла конфигурации .ovpn, а не .conf. Если вы столкнетесь с этой проблемой - просто переименуйте файл настроек клиента соответствующим образом.
    Размещаем перенесенные файлы в папке, с которой работает используемое вами приложение OpenVPN (см. документацию к программе).
  8. Подключаемся к серверу. После успешного подключения на клиентском устройстве активируется виртуальный сетевой адаптер. Проверить это на Linux можно с помощью команды ifconfig (должен отображаться адаптер TUN), на ОС с графическим интерсейсом проверить корректность подключения можно непосредственно в программе подключения к VPN.

Внимание! Так как мы еще не настроили туннелировние всего интернет-трафика через VPN-сервер, доступ в интернет на клиентском устройстве после подключения его к виртуальной частной сети перестанет функионировать. Инструкция по маршрутизации интернет-трафика пользователей через VPN сервер представлена ниже.Б.

Туннелирование всего трафика клиентов виртуальной частной сети через VPN-сервер

В данной конфигурации мы настроим маршрутизацию всего трафика пользователей VPN через OpenVPN-сервер с сохранением SSL-шифрования от клиента до сервера.

  1. На сервере откройте файл конфигурации OpenVPN server.conf: nano /etc/openvpn/server.conf
  2. Расскоментируйте представленную ниже строку конфига (удалите символ ; в начале строки): push "redirect-gateway def1 bypass-dhcp"
  3. Сохраните и закройте файл (CTRL+X)
  4. Откройте файл /etc/sysctl.conf:
    nano /etc/sysctl.conf
  5. Расскоментируйте или добавьте представленную ниже строку в открытом файле, чтобы убедиться, что переадресация IPv4-трафика разрешена: net.ipv4.ip_forward=1
  6. Сохраните и закройте файл (CTRL+X)
  7. Введите команду для применения изменений в текущей сессии: echo 1 > /proc/sys/net/ipv4/ip_forward
  8. Последовательно введите следующие команды (одна строка=одна команда), для настройки фаерволла iptables на форвардинг трафика через VPN:
    iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
    iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
    iptables -A FORWARD -j REJECT
    iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
    iptables -A INPUT -i tun+ -j ACCEPT
    iptables -A FORWARD -i tun+ -j ACCEPT
    iptables -A INPUT -i tap+ -j ACCEPT
    iptables -A FORWARD -i tap+ -j ACCEPT
  9. Добавьте такой же список правил iptables в файл /etc/rc.local , чтобы они применялись при каждом запуске системы: nano /etc/rc.local
    Содержание файла:
    #!/bin/sh -e
    #
    # [...]
    #
    iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
    iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
    iptables -A FORWARD -j REJECT
    iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
    iptables -A INPUT -i tun+ -j ACCEPT
    iptables -A FORWARD -i tun+ -j ACCEPT
    iptables -A INPUT -i tap+ -j ACCEPT
    iptables -A FORWARD -i tap+ -j ACCEPT
    exit 0

    Сохраните и закройте документ (CTRL+X)
  10. Приведенные выше параметры активируют переадресацию всего клиентского трафика, кроме DNS-запросов, через VPN-сервер. Для форваринга DNS-запросов вам необходимо установить пакет dnsmasq и внести изменения в файл /etc/openvpn/server.conf
  11. Установим dnsmasq:
    Если вы используете Ubuntu 12.04: apt-get install dnsmasq && dpkg-reconfigure resolvconf Появится мастер настройки. На первом пункте (prepare /etc/resolv.conf for dynamic updates) отвечаем yes, затем no (Append original file to dynamic file?)
    Если вы используете Debian 7: apt-get install dnsmasq resolvconf
  12. Теперь нужно отредактировать dnsmasq: nano /etc/dnsmasq.conf Убедитесь, что указанные ниже параметры раскомментированы или добавлены в файл: listen-address=10.8.0.1
    bind-interfaces
  13. Далее необходимо добавить в файл /etc/network/interfaces информацию об используемых dns-серверах. Возможно, в вашем случае эта информация уже присутствует (как например в случае с серверами, арендованными в 1cloud.ru), если же нет - добавьте ее следующим образом:
    Откройте файл конфигурации интерфейсов: nano /etc/network/interfaces Добавьте строку dns-nameservers с указанием адресов используемых вами DNS-серверов (например одного сервера вашего интернет провайдера и одного публичного сервера google: 8.8.8.8): # The primary network interface
    auto eth0
    iface eth0 inet dhcp
    dns-nameservers 77.88.8.8 8.8.8.8
  14. При стандартных настройках утилита dnsmasq запускается до старта виртуального tun адаптера OpenVPN. Это приводит к ошибкам и завершению dnsmasq. Для устранения этой проблемы, необходимо добавить в файл /etc/rc.local строку с командой, перезапускающей dnsmasq после инициализации OpenVPN. Разместить эту строку в файле следует после параметров iptables, указанных нами ранее: nano /etc/rc.local
    Содержимое файла:
    ...
    iptables -A FORWARD -i tun+ -j ACCEPT
    iptables -A INPUT -i tap+ -j ACCEPT
    iptables -A FORWARD -i tap+ -j ACCEPT
    /etc/init.d/dnsmasq restart
    exit 0
  15. Последнее, что необходимо сделать - расскоментировать строку, разрешающую клиентам OpenVPN использовать DNS серверы, в файле /etc/openvpn/server.conf:
    nano /etc/openvpn/server.conf Содержимое файла: ....
    push "dhcp-option DNS 10.8.0.1"
  16. Перезапускаем сервер для применения всех настроек и проверки их корректности: reboot

Проверка OpenVPN-соединения

На этом настройку OpenVPN сервера на Ubuntu/Debian сервере можно считать завершенной. Для проверки соединения и туннелирования трафика через VPN-сервер вы можете воспользоваться любым интернет-сервисом, отображающим ваш IP-адрес (например, этот) - при корректной настройке на странице будет отображен адрес VPN-сервера.

 

P. S. Другие инструкции:

Поделиться в соцсетях:

Спасибо за Вашу оценку! К сожалению, проголосовать не получилось. Попробуйте позже

ru

191014 Санкт-Петербург ул. Кирочная, 9

+7(812)313-88-33 235 70 1cloud ltd 2021-12-27 Настройка OpenVPN-сервера с туннелированием интернет-трафика на Ubuntu 12.04 / Debian 7

191014 Санкт-Петербург ул. Кирочная, 9

+7(812)313-88-33 235 70 1cloud ltd 2021-12-27 Настройка OpenVPN-сервера с туннелированием интернет-трафика на Ubuntu 12.04 / Debian 7 600 auto

Настройка OpenVPN сервера на Ubuntu 20.04

Установка

Устанавливаем OpenVPN:

apt update apt install openvpn easy-rsa

Сертификаты сервера

Создадим символьную ссылку на каталог со скриптами:

ln -s /usr/share/easy-rsa /etc/openvpn/easy-rsa

Меняем значения в /etc/openvpn/easy-rsa/vars. Данная информация будет указана в сертификатах и ключах:

nano /etc/openvpn/easy-rsa/vars 

Заполняем файл (здесь указываете свои значения):

export KEY_COUNTRY="US" export KEY_PROVINCE="CA" export KEY_CITY="SanFrancisco" export KEY_ORG="Fort-Funston" export KEY_EMAIL="[email protected]" export KEY_OU="MyOrganizationalUnit

Передаём значения переменных из vars в переменные оболочки:

cd /etc/openvpn/easy-rsa . ./vars

Создаём каталог PKI:

./easy-rsa init-pki

Создаем корневой сертификат:

./easy-rsa build-ca

Полученные файлы будут расположены в:

/etc/openvpn/easy-rsa/pki/ca.crt /etc/openvpn/easy-rsa/pki/private/ca.key

Формируем ключ Диффи-Хеллмана:

./easyrsa gen-dh

Полученный файл будет расположен в:

/etc/openvpn/easy-rsa/pki/dh.pem

Создаем запрос на сертификат для сервера и генерируем сам сертификат (вместо имени «vpn-server» можете указать своё имя сервера). Добавьте опцию nopass. Без этого файл запроса будет защищен паролем, что впоследствии может привести к проблемам с разрешениями:

./easyrsa gen-req vpn-server nopass ./easyrsa sign-req server vpn-server
После ввода команды подтверждаем правильность данных, введя yes и вводим пароль, который указывали при создании корневого сертификата.

Полученные файлы будут расположены в:

/etc/openvpn/easy-rsa/pki/issued/vpn-server.crt /etc/openvpn/easy-rsa/pki/private/vpn-server.key

Создадим ta ключ, чтобы использовать параметр tls-auth, добавив дополнительную проверку целостности.  Это обеспечит дополнительный уровень безопасности протокола SSL/TLS:

openvpn --genkey --secret pki/ta.key

Полученный файл будет расположен в:

/etc/openvpn/easy-rsa/pki/ta.key

Сертификаты клиента

Создаем запрос на сертификат и сам сертификат(вместо имени «vpn-client» можете указать своё имя клиента):

./easyrsa gen-req vpn-client nopass ./easyrsa sign-req client vpn-client
После ввода команды подтверждаем правильность данных, введя yes и вводим пароль, который указывали при создании корневого сертификата.

Полученные файлы будут расположены в:

/etc/openvpn/easy-rsa/pki/issued/vpn-client.crt /etc/openvpn/easy-rsa/pki/private/vpn-client.key

Создание конфигурационных файлов сервера и клиента

Создадим конфигурационный файл сервера:

nano /etc/openvpn/server.conf

и приведём его к виду:

port 1194 proto udp dev tun ca /etc/openvpn/easy-rsa/pki/ca.crt cert /etc/openvpn/easy-rsa/pki/issued/vpn-server.crt key /etc/openvpn/easy-rsa/pki/private/vpn-server.key dh /etc/openvpn/easy-rsa/pki/dh.pem server 10.8.0.0 255.255.255.0 push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" tls-auth /etc/openvpn/easy-rsa/pki/ta.key 0 cipher AES-256-CBC comp-lzo user nobody group nogroup persist-key persist-tun status /var/log/openvpn/openvpn-status.log log /var/log/openvpn/openvpn.log log-append /var/log/openvpn/openvpn.log verb 3 explicit-exit-notify 1 

Разрешаем обмен трафиком между сетевыми интерфейсам:

echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf && sysctl -p

Необходимо добавить в автозагрузку, например, с помощью пакета iptables-persistent, маскарадинг клиентов OpenVPN:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth2 -j MASQUERADE

Запускаем сервер:

systemctl daemon-reload service openvpn start service [email protected] start

Подключение

Копируем следующие файлы на устройство-клиент:

/etc/openvpn/easy-rsa/pki/ca.crt /etc/openvpn/easy-rsa/pki/issued/vpn-client.crt /etc/openvpn/easy-rsa/pki/private/vpn-client.key /etc/openvpn/easy-rsa/pki/ta.key

На устройстве, с которого вы будете подключаться по OpenVPN (клиент), необходимо создать конфигурационный файл клиента (client.ovpn) и привести его к виду (server_ip необходимо заменить на IP-адрес сервера):

remote server_ip 1194 client resolv-retry infinite nobind proto udp dev tun comp-lzo ca ca.crt cert vpn-client.crt key vpn-client.key tls-client tls-auth ta.key 1 keepalive 10 120 persist-key persist-tun verb 3 user nobody group nogroup

Устанавливаем на клиент ПО OpenVPN.

После установки запускаем программу от имени администратора, далее нажимаем правой кнопкой мыши на значок в системном трее в правом нижнем углу и выбираем «Настройки...». Переходим во вкладку «Расширенные» и указываем директорию для хранения конфигураций C:\Program Files\OpenVPN\config.

Файлы vpn-client.crt, vpn-client.key, ca.crt, ta.key, client.ovpn необходимо скопировать в директорию C:\Program Files\OpenVPN\config.

Затем в интерфейсе openvpn GUI необходимо нажать кнопку Connect.

Настройка OpenVPN сервера на Ubuntu 16.04

Установка OpenVPN

#Устанавливаем openvpn и скрипты для генерации ключей apt-get update && apt-get install openvpn easy-rsa

Затем необходимо привести файл /etc/openvpn/server.conf к следующему виду:

port 1194 proto udp dev tun ca ca.crt cert server.crt key server.key dh dh3048.pem push "redirect-gateway def1 bypass-dhcp" #default gateway через VPN push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" user nobody group nogroup server 10.8.0.0 255.255.255.0 keepalive 10 120 comp-lzo persist-key persist-tun cipher AES-256-CBC verb 3
#Разрешаем обмен трафиком между сетевыми интерфейсам echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf && sysctl -p
#SNAT для vpn клиентов #Необходимо добавить в автозагрузку, например, с помощью пакета iptables-persistent iptables -t nat -A POSTROUTING -s 10.8.0.0/8 -o eth2 -j MASQUERADE

Генерация серверных ключей и сертификатов

#Копируем скрипты для генерации ключей cp -r /usr/share/easy-rsa/ /etc/openvpn #Создаем директорию, в которой будут храниться ключи mkdir /etc/openvpn/easy-rsa/keys
#При необходимости меняем значения в /etc/openvpn/easy-rsa/vars #Данная информация будет указана в сертификатах и ключах export KEY_COUNTRY="US" export KEY_PROVINCE="CA" export KEY_CITY="SanFrancisco" export KEY_ORG="Fort-Funston" export KEY_EMAIL="[email protected]" export KEY_OU="MyOrganizationalUnit
#Генерируем параметры Диффи-Хеллмана openssl dhparam -out /etc/openvpn/dh3048.pem 2048
#Установка переменных окружения для PKI cd /etc/openvpn/easy-rsa && source ./vars ./clean-all #Генерация CA (при необходимости можно изменить реквизиты) ./build-ca
#Генерация серверного ключа и сертификата #При необходимости задаем реквизиты #Если задать пароль, то его необходимо будет вводить при каждом запуске openvpn-сервера #На вопросы о подписи сертификата необходимо ответить 'y' cd /etc/openvpn/easy-rsa && ./build-key-server server cp /etc/openvpn/easy-rsa/keys/{server.crt,server.key,ca.crt} /etc/openvpn
systemctl daemon-reload systemctl start openvpn.service

Генерация клиентских ключей и сертификатов

#Генерируем сертификаты и ключи для клиентов #При необходимости задаем реквизиты #Если задать пароль, то его необходимо будет вводить при каждом подключении к серверу #На вопросы о подписи сертификата необходимо ответить 'y' cd /etc/openvpn/easy-rsa && ./build-key client1
#Копируем следующие файлы на клиентскую машину /etc/openvpn/easy-rsa/keys/client1.crt /etc/openvpn/easy-rsa/keys/client1.key /etc/openvpn/ca.crt

Также необходимо создать клиентский конфигурационный файл (client1.ovpn):

server_ip необходимо заменить на IP-адрес сервера
client dev tun proto udp remote server_ip 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert client1.crt key client1.key remote-cert-tls server comp-lzo user nobody group nogroup cipher AES-256-CBC verb 3

Подключение

Файлы client1.crt, client1.key, ca.crt, client1.ovpn необходимо скопировать в директорию config:

Затем в интерфейсе openvpn GUI необходимо нажать кнопку Connect.

Установка

OpenVPN на Ubuntu 18.04 за 4 минуты 🕶

OpenVPN - это полнофункциональное решение с открытым исходным кодом для запуска частного сервера SSL VPN. Были использованы технологии OSI уровня 2 или 3 с использованием протоколов SSL / TLS. VPN позволяет безопасно подключаться к сети из небезопасных общественных мест / сетей, таких как Wi-Fi в ресторане или в аэропорту. В статье мы описали, как можно установить сервер OpenVPN на сервер с операционной системой Ubuntu 18.04.

Разница между VPS и VPN описана здесь 🙂

Обновление системы Ubuntu 18.04

 sudo apt update sudo apt обновление 

Установите внешний IP-адрес

Воспользуемся командой ip :

 ip а ip a счет eth0 

Есть также второй вариант узнать Ваш внешний IP-адрес:

 dig + short myip.opendns.com @ resolver1.opendns.com 

или:

 копать TXT + короткое о-о.myaddr.l.google.com @ ns1.google.com | awk -F '"' '{print $ 2}' 

Информация об общедоступном IP-адресе

Большинство VPS или облачных серверов могут иметь два адреса:

  • Статический общедоступный IP-адрес, который напрямую назначается вашему серверу и доступен для всех из Интернета. Например: VPS в Хостовите, Линоде, Арубе и других.
  • Сервер находится за NAT с общедоступным IP и имеет только частный статический IP. Это решение используется в AWS EC2 или Lightsail
  • .

Приведенный выше сценарий автоматически определит конфигурацию вашего устройства и отобразит правильный IP-адрес.

Установка OpenVPN с помощью скрипта

Мы будем использовать wget для загрузки файла:

 wget https://git.io/vpn -O openvpn-install.sh 

Ставим разрешения для файла openvpn-install.sh на всякий случай:

 chmod + x openvpn-install.sh 

Содержимое файла можно увидеть в любом редакторе:

 нано openvpn-install.sh 
Запускаем openvpn-install.sh для установки сервера OpenVPN

Теперь нам просто нужно запустить файл командой:

 судо./openvpn-install.sh 

В нашем случае мы получили следующие запросы, потому что у нашего сервера обычный публичный IP-адрес:

Чтобы в будущем не было проблем с DNS-сервером, мы рекомендуем всегда выбирать 1.1.1.1 или Google DNS, это одни из самых быстрых серверов, которые обновляются почти постоянно.

Как запустить / приостановить / сбросить сервер OpenVPN в Ubuntu 18.04 LTS?

 sudo systemctl stop openvpn @ server # <--- зависание сервера sudo systemctl start openvpn @ server # <--- запустить сервер OpenVPN sudo systemctl restart openvpn @ server # <--- перезапуск OpenVPN sudo systemctl status openvpn @ server # <--- отображает статус службы 
Приглашаем вас ознакомиться с нашим VPS SSD, потому что с кодом БЛОГ СКИДКИ вы получите 15% на любую серверную оплату за VPN!

Подключение к OpenVPN через клиент для iOS / Android / Linux / Windows

На VPS есть файл конфигурации с именем (в нашем случае): / root / client.овпн . Просто скопируйте этот файл на рабочий стол нашего компьютера с помощью FileZilla (sFTP) или любой другой программы FTP.

Затем запускаем любой клиент OpenVPN с файлом client.ovpn, загруженным с сервера :

  1. Клиент для iOS
  2. Клиент для Android
  3. Клиент для MacOS / OS X
  4. Клиент для Windows 8/10

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

Устанавливаем клиент openvpn на наш Linux-компьютер:

 sudo yum установить openvpn 

или

 sudo apt установить openvpn 

Копируем файл client.овпн :

 sudo cp client.ovpn /etc/openvpn/client.conf 

Проверяем подключение с терминала:

 sudo openvpn --client --config /etc/openvpn/klient.conf 

После запуска службы OpenVPN Linux автоматически подключится через скрипт:

 sudo systemctl start openvpn @ client # <--- запустить клиент OpenVPN 

Проверяем / тестируем соединение

Запускаем следующие команды после подключения к серверу OpenVPN из терминала Linux:

 пинг 10.1.0.1 # Ping IP-адрес сервера OpenVPN или IP-шлюза ip route # Проверить, правильно ли работает маршрутизация dig TXT + short o-o.myaddr.l.google.com @ ns1.google.com # Должен вернуть общедоступный IP-адрес нашего сервера OpenVPN 

FAQ или

исправления проблем

1. Проверить журналы сервера OpenVPN:

 journalctl --identifier ovpn-server 

2. Не блокирует ли межсетевой экран соединения или порты:

 кот /etc/rc.local 
 #! / Bin / sh -e iptables -t nat -A ПОСТАВКА -s 10.8.0.0 / 24! -d 10.8.0.0/24 -j SNAT --to 172.26.6.74 выход 0 

3. Сервер OpenVPN работает и требуемые порты открыты:

 netstat -tulpn | grep: 1194 ## 1194 - порт openVPN сервера ## ss -tulpn | grep: 1194 ## 1194 - порт openVPN сервера ## ps aux | grep openvpn ## сервер openvpn запущен? ## ps -C openvpn ## работает ли сервер openvpn? ## pidof openvpn ## найти PID процесса openvpn server ## 

Если услуга неактивна, просто запустите ее:

 sudo systemctl перезапустить openvpn @ server 

Проверить наличие ошибок в:

 sudo systemctl статус openvpn @ сервер 

4. Может ли клиент Linux подключиться к серверу с помощью OpenVPN. Проверяем, принимает ли трафик требуемый порт (UDP 1194) (мы меняем IP ниже на IP сервера):

  NC -vu 77.83.100.116 1194   Подключение к порту 77.83.100.116 1194 [udp / openvpn] выполнено!  

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

Приглашаем вас ознакомиться с нашим VPS SSD, потому что с кодом БЛОГ СКИДКИ вы получите 15% на любую серверную оплату за VPN! .

Как настроить сервер OpenVPN в Ubuntu 16.04


Хотите безопасно выходить в Интернет со своего смартфона или ноутбука при подключении к ненадежным сетям, например Wi-Fi в отеле или кафе? Виртуальная частная сеть (VPN) позволяет вам использовать ненадежные сети конфиденциально и безопасно, как если бы они находились в частной сети. Трафик покидает VPN сервера и продолжает свой путь к месту назначения.

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

OpenVPN - это полнофункциональное решение VPN с открытым исходным кодом Secure Socket Layer (SSL), которое поддерживает широкий спектр конфигураций. В этом руководстве мы настроим сервер OpenVPN на Droplet, а затем настроим его для доступа из Windows, OS X, iOS и Android. В этом руководстве шаги по установке и настройке будут максимально простыми для этих параметров.

Предполетная проверка

Когда вы будете готовы начать, войдите на свой сервер Ubuntu как пользователь sudo и выполните следующие шаги.

Шаг № 1: Установка OpenVPN

Сначала мы устанавливаем OpenVPN на наш сервер. OpenVPN доступен в репозиториях Ubuntu по умолчанию, поэтому мы можем использовать apt для установки. Мы также установим пакет easy-rsa , который поможет нам настроить CA (Центр сертификации) для использования нашей VPN.

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

sudo apt-get update

sudo apt-get install openvpn easy-rsa

Требуемое программное обеспечение уже доступно на сервере и готово к настройке.

Шаг № 2: Настройте каталог CA

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

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

make-cadir ~ / openvpn-ca

Перейдите во вновь созданный каталог, чтобы начать настройку CA:

компакт-диск ~ / openvpn-ca

Шаг № 3: Настройка переменных CA

Чтобы настроить наши переменные CA для использования, нам нужно отредактировать файл vars в каталоге.Откройте этот файл в текстовом редакторе:

нано-варс

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

В нижней части файла найдите настройки по умолчанию, которые определяют область новых сертификатов. Должно получиться примерно так:

~ / openvpn-ca / варс

. . . экспорт KEY_COUNTRY = "США" экспорт KEY_PROVINCE = "CA" экспорт KEY_CITY = "Сан-Франциско" экспорт KEY_ORG = "Форт-Фанстон" экспорт KEY_EMAIL = "меня @ myhost.mydomain " export KEY_OU = "MyOrganizationalUnit" . . . 

Измените значения, выделенные красным, как хотите, но не оставляйте их пустыми:

~ / openvpn-ca / варс

. . . экспорт KEY_COUNTRY = "США" экспорт KEY_PROVINCE = "NY" export KEY_CITY = "Нью-Йорк" экспорт KEY_ORG = "DigitalOcean" экспорт KEY_EMAIL = "[email protected]" экспорт KEY_OU = "Сообщество" . . . 

Пока мы здесь, мы также будем редактировать значение KEY_NAME в этом разделе, который заполняет поле темы.Чтобы сделать это легко, в этом руководстве мы будем называть его server :

~ / openvpn-ca / варс

 экспорт KEY_NAME = "сервер" 

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

Шаг № 4: Создание центра сертификации

Теперь мы можем использовать настроенные нами переменные и инструменты easy-rsa для создания нашего центра сертификации (CA).

Наши администраторы могут без проблем установить OpenVPN на наш VPS в Польше или за рубежом.

Убедитесь, что вы находитесь в каталоге CA, затем подключите vars файл, который был отредактирован:

компакт-диск ~ / openvpn-ca

исходные вары

Если он подключен правильно, вы должны увидеть следующий результат:

Выход

 ПРИМЕЧАНИЕ: Если вы запустите./ clean-all, я сделаю rm -rf для / home / sammy / openvpn-ca / keys 

Убедитесь, что вы работаете в чистой среде, набрав:

./clean-all

Теперь мы можем построить наш главный центр сертификации, набрав:

./build-ca

Это запустит процесс создания корневого ключа CA и сертификата. Поскольку мы заполнили файл vars , все значения должны быть заполнены автоматически. Просто нажмите ENTER через подсказки, чтобы подтвердить свой выбор:

Выход

 Создание 2048-битного закрытого ключа RSA ................................................... ....................................... +++ ............................... +++ запись нового закрытого ключа в 'ca.key' ----- Вас сейчас попросят ввести информацию, которая будет включена в ваш запрос на сертификат. То, что вы собираетесь ввести, называется отличительным именем или DN. Поля довольно много, но вы можете оставить поле пустым. Для некоторых полей будет значение по умолчанию, Если вы введете '.', поле останется пустым. ----- Название страны (двухбуквенный код) [США]: Название штата или провинции (полное название) [NY]: Название населенного пункта (например, город) [Нью-Йорк]: Название организации (например, компания) [DigitalOcean]: Название организационной единицы (например, раздел) [Сообщество]: Общее имя (например, ваше имя или имя хоста вашего сервера) [DigitalOcean CA]: Имя [сервер]: Адрес электронной почты [[email protected]]: 

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

Шаг № 5: Создайте сертификат сервера, ключи и шифрование файла

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

Начнем с создания сертификата сервера OpenVPN и пары ключей. Мы можем сделать это, набрав:

Примечание: , если вы выберете имя, отличное от server , вам нужно будет изменить некоторые инструкции, приведенные ниже.Например, при копировании сгенерированных файлов в каталог / etc / openvpn необходимо подставить соответствующие имена. Вы также должны изменить файл /etc/openvpn/server.conf , чтобы он указывал на правильные файлы .crt и .key .

./build-key-server сервер

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

Выход

.. . Сертификат необходимо заверить до 1 мая 17:51:16 2026 мск (3650 дней) Подпишите сертификат? [д / н]: д 1 из 1 запросов на сертификат подтвержден, совершить? [д / н] г Записать базу данных с 1 новой записью База данных обновлена ​​

Далее мы сгенерируем некоторые другие элементы. Мы можем сгенерировать надежные ключи Диффи-Хеллмана для использования во время обмена ключами, набрав:

./build-dh

Это может занять несколько минут.

Затем мы можем сгенерировать подпись HMAC для усиления проверки целостности сервера TLS:

openvpn --genkey --секретные ключи / ta.key

Шаг № 6: Создание сертификата клиента и пары ключей

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

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

Вы можете вернуться к этому шагу позже, мы повторно создадим исходный код файла vars . Мы будем использовать client1 в качестве значения для нашей первой пары ключ / сертификат для сегодняшнего урока:

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

компакт-диск ~ / openvpn-ca

исходные вары

./ build-key client1

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

компакт-диск ~ / openvpn-ca

исходные вары

./build-key-pass client1

Опять же, значение по умолчанию должно быть заполнено, чтобы вы могли просто нажать ENTER , чтобы продолжить. Оставьте поле пароля пустым и введите y , чтобы отобразился вопрос, подписывать и делать ли сертификат.

Шаг № 7: Настройте службу OpenVPN

Затем мы можем приступить к настройке службы OpenVPN, используя данные и файлы, которые мы создали.

Копирование файлов в каталог OpenVPN

Для начала нам нужно скопировать нужные нам файлы в директорию конфигурации / etc / openvpn .

Мы можем начать со всеми файлами, которые мы создали. Они были помещены в каталог ~ / openvpn-ca / keys . Нам нужно передать наш сертификат и ключ CA, наш сертификат и ключ сервера, подпись HMAC и файл Diffie-Hellman:

cd ~ / openvpn-ca / ключи

sudo cp ca.crt ca.key server.crt server.key ta.key dh3048.pem / etc / openvpn

Затем нам нужно скопировать и распаковать образец файла конфигурации OpenVPN в каталог конфигурации, чтобы мы могли использовать его в качестве основы для нашей конфигурации:

gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | Судо тройник /etc/openvpn/server.conf

Настройка конфигурации OpenVPN

Теперь, когда наши файлы на месте, мы можем изменить файл конфигурации сервера:

судо нано / etc / openvpn / server.конф

Базовая конфигурация

Сначала найдите раздел HMAC, ища директиву tls-auth . Исключить «; », чтобы раскомментировать строку tls-auth. Ниже добавьте key-direction параметр, установленный на " 0 ":

/etc/openvpn/server.conf

 tls-auth ta.key 0 # Этот файл секретный ключевое направление 0 

Затем найдите раздел криптографических шифров, просмотрев закомментированные строки шифра .Шифр AES-128-CBC предлагает хороший уровень шифрования и хорошо поддерживается. Исключить «; ”, чтобы раскомментировать строку , шифр AES-128-CBC :

/etc/openvpn/server.conf

 шифр AES-128-CBC 

Ниже добавьте строку auth для выбора сообщений мастерства алгоритма HMAC. Для этого SHA256 хороший выбор:

/etc/openvpn/server.conf

 аутентификация SHA256 

Наконец, найдите пользователя и группу настроек и удалите «; »в начале:

/ и т.д. / openvpn / server.conf

 пользователь никто группа nogroup 
(Необязательно) Включите изменения DNS для перенаправления всего трафика через VPN

Приведенные выше настройки создают соединение VPN между двумя компьютерами, но не соединение для использования туннеля. Если вы хотите использовать VPN для перенаправления всего вашего трафика, вам необходимо изменить настройки DNS на клиентских компьютерах.

Для этого раскомментируйте несколько директив, которые будут настраивать клиентские компьютеры на перенаправление всего интернет-трафика через VPN.Найдите раздел redirect-gateway и удалите точку с запятой «; »начало строки redirect-gateway , чтобы раскомментировать:

/etc/openvpn/server.conf

 push "redirect-gateway def1 bypass-dhcp" 

Чуть ниже найдите раздел dhcp-option . Снова удалите «; »перед строками, чтобы раскомментировать их:

/etc/openvpn/server.conf

 push "dhcp-option DNS 208.67.222.222" нажмите "dhcp-option DNS 208.67.220.220 "

Это должно помочь клиентам перенастроить настройки DNS для использования VPN-туннеля в качестве шлюза по умолчанию.

(необязательно) Установите порт и протокол

По умолчанию сервер OpenVPN использует порт 1194 и UDP для приема клиентских подключений. Если вы хотите использовать другой порт из-за ограниченного сетевого окружения, в котором могут находиться клиенты, вы можете изменить настройку порта. Если вы не управляете веб-контентом сервера OpenVPN, популярным выбором является порт 443, поскольку он обычно разрешен правилами брандмауэра.

/etc/openvpn/server.conf

 # Необязательно! порт 443 

Часто протокол может быть ограничен этим портом. Чтобы исправить это, необходимо изменить протокол протокола UDP с TCP:

.

/etc/openvpn/server.conf

 # Необязательно! протокол TCP 

Если нет необходимости использовать другой порт, лучше оставить эти две настройки по умолчанию.

(Необязательно) Выберите данные доступа, отличные от данных по умолчанию

Если вы выбрали другое имя для ./ build-key-server измените строки cert и key , чтобы они указывали на соответствующие файлы .crt и .key . Если используется сервер по умолчанию, он должен быть установлен правильно:

/etc/openvpn/server.conf

 сертификат server.crt ключ server.key 

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

Шаг № 8: Настройте конфигурацию сети

Затем нам нужно настроить некоторые аспекты сети серверов, чтобы OpenVPN мог правильно маршрутизировать трафик.

Разрешение переадресации IP

Во-первых, нам нужно разрешить серверу пересылать трафик. Это очень важно для той функциональности, которую мы хотим предоставить VPN-серверу.

Мы можем изменить этот параметр, изменив файл /etc/sysctl.conf :

Судо нано /etc/sysctl.conf

Внутри обратите внимание на строку, обозначающую net.ipv4.ip_forward . Удалите " # " из начала строки, чтобы раскомментировать этот параметр:

/ и т.д. / sysctl.conf

 net.ipv4.ip_forward = 1,

Сохраните и закройте файл, когда закончите.

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

sudo sysctl –p

Адаптация правил UFW к клиентским подключениям Masquerade

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

Прежде чем мы сможем открыть файл конфигурации брандмауэра для добавления маскарадов, нам нужно найти общедоступный веб-интерфейс нашего устройства. Для этого наберите:

IP-маршрут | grep по умолчанию

Ваш публичный интерфейс будет отображаться после « dev ».Например, этот вывод показывает интерфейс с именем wlp11s0 , который показан ниже:

Выход

 по умолчанию через 203.0.113.1 dev wlp11s0 proto static metric 600 

Откройте файл /etc/ufw/before.rules , чтобы добавить соответствующую конфигурацию:

судо нано /etc/ufw/before.rules

Если у вас есть интерфейс, связанный с маршрутом по умолчанию, откройте файл /etc/ufw/before.rules , чтобы добавить соответствующую конфигурацию:
sudo nano / etc / ufw / before.правила

Этот файл обрабатывает конфигурацию, которая должна быть введена в обычную загрузку политики UFW. Вверху файла добавьте строки, отмеченные ниже. Это установит политику по умолчанию для цепочки POSTROUTING в таблице nat и замаскирует любой исходящий трафик из VPN:

Примечание: Обязательно замените eth0 в строке -A POSTROUTING на интерфейс, указанный в приведенной выше команде.

/ etc / ufw / before.правила

 # # rules.before # # Правила, которые должны быть выполнены до того, как в командной строке ufw добавлены правила. Обычай В одну из этих цепочек нужно добавить # правила: # Ufw-before-input # Ufw-before-output # Ufw-before-forward # # START OPENVPN ПРАВИЛА # Правила таблицы NAT * нац : ПРИНЯТИЕ ПОСТРОУТИРОВКИ [0: 0] # Разрешить трафик от клиента OpenVPN на eth0 -A ПОСТРОУТИРОВАНИЕ -s 10.8.0.0/8 -o eth0 -j МАСКАРАД СОВЕРШИТЬ # КОНЕЦ ПРАВИЛА OPENVPN # Не удаляйте эти обязательные строки, иначе будут ошибки * фильтр .. . 

Сохраните и закройте файл, когда закончите.

Нам нужно включить UFW для пересылки пакетов по умолчанию. Для этого мы откроем файл / etc / default / ufw :

Судо нано / и т. Д. / По умолчанию / ufw

Найдите директиву DEFAULT_FORWARD_POLICY внутри. Мы изменим значения с DROP на ACCEPT :

.

/ и т. Д. / По умолчанию / ufw

 DEFAULT_FORWARD_POLICY = "ПРИНЯТЬ" 

Сохраните и закройте файл, когда закончите.

Открытие порта OpenVPN и включение изменений

Далее мы настроим брандмауэр, чтобы разрешить трафик в OpenVPN.

Если вы не меняли порт и протокол в файле /etc/openvpn/server.conf , вы должны открыть трафик UDP на порт 1194 . Если вы изменили порт и / или протокол, замените выбранные здесь значения.

Мы также добавим порт SSH, если вы забыли добавить

раньше

sudo ufw разрешить 1194 / udp

sudo ufw разрешить OpenSSH

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

sudo ufw отключить

sudo ufw включить

Наш сервер правильно настроен для обработки трафика OpenVPN .

Шаг № 9: Запустите и включите службу OpenVPN

Теперь мы готовы запустить службу OpenVPN на нашем сервере. Мы можем сделать это с помощью s ystemd .

Нам нужно запустить сервер OpenVPN, указав в нашей конфигурации имя файла в качестве переменной экземпляра после systemd в блоке имени файла. Наш файл конфигурации для нашего сервера называется / etc / openvpn / server .conf , поэтому мы добавим @server в конец имени нашего файла, когда мы его назовем:

sudo systemctl start openvpn @ сервер

Дважды проверьте, что служба запущена успешно, набрав:

sudo systemctl статус openvpn @ сервер

Если все прошло хорошо, ваш результат должен выглядеть примерно так:

 ● openvpn @ server.сервис - OpenVPN подключение к серверу Загружено: загружено (/lib/systemd/system/[email protected]; отключено; предустановка поставщика: включена) Активен: активен (работает) с Вт 2016-05-03 15:30:05 EDT; 47с назад Документы: man: openvpn (8) https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Процесс: 5852 ExecStart = / usr / sbin / openvpn --daemon ovpn-% i --status /run/openvpn/%i.status 10 --cd / etc / openvpn --script-security 2 --config / etc / openvpn /% i.conf --writepid /run/openvpn/%i.pid (code = exited, sta Основной PID: 5856 (openvpn) Задач: 1 (ограничение: 512) CGroup: /system.slice/system-openvpn.slice/[email protected] └─5856 / usr / sbin / openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd / etc / openvpn --script-security 2 --config / etc / openvpn / server. conf --writepid /run/openvpn/server.pid 3 мая 15:30:05 openvpn2 ovpn-server [5856]: / sbin / ip addr add dev tun0 local 10.8.0.1 peer 10.8.0.2 3 мая 15:30:05 openvpn2 ovpn-server [5856]: / sbin / ip route добавить 10.8.0.0/24 через 10.8.0.2 3 мая, 15:30:05 openvpn2 ovpn-server [5856]: GID установлен в nogroup 3 мая, 15:30:05 openvpn2 ovpn-server [5856]: UID не задан никому 3 мая 15:30:05 openvpn2 ovpn-server [5856]: UDPv4 ссылка локальная (привязанная): [undef] 3 мая 15:30:05 openvpn2 ovpn-server [5856]: удаленная ссылка UDPv4: [undef] 3 мая 15:30:05 openvpn2 ovpn-server [5856]: MULTI: вызов multi_init, r = 256 v = 256 3 мая 15:30:05 openvpn2 ovpn-server [5856]: IFCONFIG POOL: base = 10.8.0.4 размер = 62, ipv6 = 0 03 мая 15:30:05 openvpn2 ovpn-server [5856]: СПИСОК ПУЛА IFCONFIG 3 мая 15:30:05 openvpn2 ovpn-server [5856]: последовательность инициализации завершена 

Вы также можете проверить, доступен ли интерфейс OpenVPN tun0 , набрав:

ip адрес показать tun0

Вы должны увидеть настроенный интерфейс:

Выход

 4: tun0:  mtu 1500 qdisc noqueue state UNKNOWN group default qlen 100 ссылка / нет инет 10.8.0.1 одноранговый узел 10.8.0.2/32 глобальная область tun0 valid_lft навсегда предпочтительный_lft навсегда 

Если все прошло хорошо, включите службу, чтобы она запускалась автоматически при запуске системы:

sudo systemctl включить openvpn @ server

Шаг № 10: Создание конфигурации инфраструктуры клиента

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

Создать конфигурацию структуры каталогов клиента

Создадим структуру каталогов в домашнем каталоге для хранения файлов:

mkdir -p ~ / client-configs / files

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

chmod 700 ~ / client-configs / files

Создать базовую конфигурацию

Затем мы скопируем образец конфигурации клиента в наш каталог, чтобы использовать его в качестве базовой конфигурации:

cp / usr / share / doc / openvpn / examples / sample-config-files / client.conf ~ / client-configs / base.conf

Откройте этот новый файл в текстовом редакторе:

нано ~ / client-configs / base.conf

Нам нужно внести некоторые правки внутри.

Сначала найдите директиву remote . Это указывает клиенту на адрес нашего сервера OpenVPN. Это должен быть общедоступный IP-адрес сервера OpenVPN. Если вы изменили порт, используемый сервером OpenVPN, измените 1194 на выбранный вами порт:

~ / client-configs / base.conf

. . . # Имя хоста / IP и порт сервера. # У вас может быть несколько удаленных записей # для балансировки нагрузки между серверами. удаленный IP-адрес_сервера 1194 . . . 

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

~ / client-configs / base.conf

 протокол протокола udp 

Затем раскомментируйте директивы user и group , удалив "; ":

~ / client-configs / base.conf

 # Понижение привилегий после инициализации (только не для Windows) пользователь никто группа nogroup 

Найдите директивы ca , cert и key , которые следует закомментировать, поскольку мы будем добавлять сертификаты и ключи в файл:

~ / client-configs / base.conf

 # параметры SSL / TLS. # См. Файл конфигурации сервера для получения дополнительной информации # описание. Лучше использовать # отдельная пара файлов .crt / .key # для каждого клиента.Единый ca # файл можно использовать для всех клиентов. #ca ca.crt #cert client.crt #key client.key 

Настройки cipher и auth , которые мы устанавливаем в файле /etc/openvpn/server.conf :

~ / client-configs / base.conf

 шифр AES-128-CBC авторизация SHA256 

Наконец, добавьте директиву key-direction где-нибудь в файле. Для работы с сервером необходимо установить значение « 1 »:

.

~ / client-configs / base.conf

 ключ-направление 1 

Наконец, давайте добавим несколько закомментированных строк. Мы хотим поместить их в каждую конфигурацию, но должны разрешать их только для клиентов Linux, которые поставляются с / etc / openvpn / update-resolv-conf . Этот сценарий использует служебную программу resolvconf для обновления информации DNS для клиентов Linux.

~ / client-configs / base.conf

 # скрипт-безопасность 2 # вверх / etc / openvpn / update-resolv-conf # вниз / etc / openvpn / update-resolv-conf 

Если клиент работает в Linux и имеет файл / etc / openvpn / update-resolv-conf , раскомментируйте эти строки из сгенерированного файла конфигурации OpenVPN.

Сохраните файл, когда закончите.

Создать конфигурацию сценария для создания

Затем мы создадим простой сценарий для компиляции нашей базовой конфигурации с соответствующими файлами сертификата, ключа и шифрования. Он будет создан в каталоге ~ / client-configs / files .

Создайте и откройте файл с именем make_config.sh в каталоге ~ / client-configs :

нано ~ / client-configs / make_config.sh

Вставьте следующий скрипт внутрь:

~ / client-configs / make_config.sh

 #! / Bin / bash # Первый аргумент: идентификатор клиента KEY_DIR = ~ / openvpn-ca / ключи OUTPUT_DIR = ~ / клиентские конфигурации / файлы BASE_CONFIG = ~ / client-configs / base.conf кошка $ {BASE_CONFIG} \ <(echo -e '') \ $ {KEY_DIR} /ca.crt \ <(echo -e ' \ n ') \ $ {KEY_DIR} / $ {1} .crt \ <(echo -e ' \ n ') \ $ {KEY_DIR} / $ {1} .key \ <(echo -e ' \ n ') \ $ {KEY_DIR} / ta.ключ \ <(echo -e '') \ > $ {OUTPUT_DIR} / $ {1} .ovpn 

Сохраните и закройте файл, когда закончите.

Отметьте файл как исполняемый, набрав:

chmod 700 ~ / client-configs / make_config.sh

Шаг № 11: Создание конфигурации клиента

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

Если вы следовали руководству, были созданы сертификат клиента и ключ с именем client1.crt и client1.key соответственно, выполнив команду ./build-key client1 на шаге 6. Мы можем сгенерировать конфигурацию для этих учетных данных, перейдя в наш каталог ~ / client-configs и используя скрипт, который мы сделал:

cd ~ / client-config

./make_config.sh client1

Если все прошло хорошо, у нас должен быть файл client1.ovpn в нашем каталоге ~ / client-configs / files :

ls ~ / client-configs / files

Выход

 client1.овпн 

Передача конфигурации на клиентские устройства

Нам нужно переместить файл конфигурации клиента на соответствующее устройство. Например, это может быть локальный компьютер или портативное устройство.

Хотя приложения, используемые для этой передачи, зависят от вашей операционной системы и выбора устройства, а также от того, хотите ли вы использовать SFTP (протокол передачи файлов SSH) или SCP (безопасное копирование) на сервере. Это будет транспортировать файлы аутентификации VPN-клиента по зашифрованному соединению.

Вот пример команды SFTP, использующей наш client1.ovpn. Эту команду можно запустить с локального компьютера (OS X или Linux). Просто поместите файл .ovpn в свой домашний каталог:

локальный $ sftp sammy @ openvpn_server_ip: client-configs / files / client1.ovpn ~ /

Шаг № 12: Установите профиль клиента

Теперь мы обсудим, как установить клиентский профиль VPN в Windows, OS X, iOS и Android. Ни одна из этих инструкций для клиентов не зависит друг от друга, поэтому мы рекомендуем вам выбрать подходящее вам руководство.

Соединению OpenVPN будет присвоено имя в соответствии с именем файла .ovpn. В нашем примере это означает, что соединение будет называться client1.ovpn в соответствии с первым созданным нами клиентским файлом.

Окна

Установка

Клиентское приложение OpenVPN для Windows можно найти на странице загрузок OpenVPN. Выберите соответствующую версию установщика для вашей версии Windows.

Примечание: OpenVPN требует установки прав администратора.

После установки OpenVPN скопируйте файл .ovpn :

 C: \ Program Files \ OpenVPN \ config 

Когда вы запустите OpenVPN, вы автоматически увидите профиль, который делает его доступным.

OpenVPN должен запускаться от имени администратора каждый раз, когда он используется, даже с административными учетными записями. Чтобы не делать этого без надобности, каждый раз щелкайте правой кнопкой мыши команду «Запуск от имени администратора», используя VPN. Это можно запрограммировать, но это нужно делать из учетной записи администратора.Это также означает, что обычные пользователи должны будут ввести пароль администратора, чтобы использовать OpenVPN. С другой стороны, обычные пользователи не могут правильно подключиться к серверу, если приложение OpenVPN на клиенте не имеет прав администратора, поэтому повышенные привилегии не требуются.

Чтобы приложение OpenVPN всегда запускалось от имени администратора, щелкните его ярлык правой кнопкой мыши и перейдите к Свойства . Внизу вкладки Совместимость нажмите кнопку Изменить настройки для всех пользователей.В новом окне выберите Запустить эту программу от имени администратора .

Позвоните

Каждый раз, когда вы хотите запустить программу с графическим интерфейсом OpenVPN, Windows будет спрашивать вас, хотите ли вы разрешить программе вносить изменения в ваш компьютер. Щелкните Да . Запуск клиентского приложения OpenVPN добавляет только апплет на панели задач, так что VPN можно подключать и отключать по мере необходимости; на самом деле он не создает VPN-соединение.

При запущенном OpenVPN инициируйте соединение с помощью апплета на панели задач, а затем щелкните правой кнопкой мыши значок апплета OpenVPN.Откроется контекстное меню. Выберите client1 вверху меню (это наш профиль client1.ovpn ) и выберите Connect .

В окне состояния будет отображаться журнал, пока соединение активно, сообщение появится, как только будет подключен клиент.

Отключитесь от VPN таким же образом: перейдите к апплету на панели задач, затем щелкните правой кнопкой мыши значок апплета OpenVPN, выберите профиль клиента и щелкните Отключить .

OS X

Установка

Tunnelblick - это бесплатный клиент OpenVPN с открытым исходным кодом для Mac OS X. Вы можете загрузить последний образ диска со страницы загрузок Tunnelblick. Дважды щелкните файл .dmg и следуйте инструкциям по установке.

В конце процесса установки Tunnelblick спросит, есть ли у вас файлы конфигурации. Будет легче ответить Нет и дать Tunnelblick завершить установку. Откройте окно Finder и дважды щелкните client1.овпн . Tunnelblick установит профиль клиента. Требуются права администратора.

Позвоните

Запустите Tunnelblick, дважды щелкнув Tunnelblick в папке Applications . Как только Tunnelblick будет запущен, в строке меню в правом верхнем углу экрана появится значок Tunnelblick для управления подключениями. Щелкните значок, а затем пункт меню Connect , чтобы инициировать VPN-соединение. Выберите соединение client1 .

Linux

Установка

Если вы используете Linux, существует множество инструментов, которые можно использовать в зависимости от вашего дистрибутива. Графическая среда или оконный менеджер также могут содержать инструменты подключения.

Однако самый универсальный способ подключения - просто использовать программное обеспечение OpenVPN.

В Ubuntu или Debian вы можете установить его так же, как и на сервере, набрав:

клиент $ sudo apt-get update
клиент $ sudo apt-get install openvpn

В CentOS вы можете добавить репозиторий EPEL, а затем установить его, набрав:

клиент $ sudo yum install epel-release
client $ sudo yum install openvpn

Конфигурация

Проверьте, есть ли в вашем дистрибутиве скрипт / etc / openvpn / update-resolv-conf:

клиент $ ls / etc / openvpn

Выход

 обновление-разрешение-конф 

Затем мы редактируем файл конфигурации клиента OpenVPN, который был загружен:

клиент $ nano client1.овпн

Раскомментируйте три строки, которые мы добавили в настройки DNS, если вы можете найти файл update-resolv-conf :

client1.ovpn

 скрипт безопасности 2 вверх / и т.д. / openvpn / update-resolv-conf вниз / и т. д. / openvpn / update-resolv-conf 

Если вы используете CentOS, измените group с nogroup на none на соответствие существующим группам рассылки:

client1.ovpn

 группа никто 

Сохраните и закройте файл.

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

клиент $ sudo openvpn --config client1.ovpn

Это должно подключиться к серверу.

iOS

Установка

В iTunes App Store найдите и установите OpenVPN Connect, официальное клиентское приложение OpenVPN для iOS. Чтобы передать конфигурацию клиента iOS на устройство, подключите его напрямую к компьютеру.

Здесь будет представлено завершение переноса из iTunes. Откройте iTunes на своем компьютере и нажмите iPhone> приложения . Прокрутите вниз до раздела File Sharing и щелкните приложение OpenVPN. Пустое окно кейса OpenVPN Documents предназначено для обмена файлами. Перетащите файл .ovpn в окно документов OpenVPN. 90 984

Теперь запустите приложение OpenVPN для iPhone. Появится уведомление о том, что новый профиль готов к импорту.Щелкните зеленый знак плюса, чтобы импортировать его. 90 987

Позвоните

OpenVPN

теперь готов к использованию нового профиля. Начните соединение, сдвинув кнопку Connect на On . Для отключения сдвиньте ту же кнопку на Off .

Примечание: VPN Переключатель в настройках не может использоваться для подключения к сети VPN. Если вы попытаетесь, вы получите уведомление о том, что подключение возможно только через приложение OpenVPN.

Android

Установка

Откройте магазин Google Play. Найдите и установите OpenVPN Connect, официальное клиентское приложение OpenVPN для Android.

Профиль .ovpn можно передать, подключив устройство Android к компьютеру через USB и скопировав файл. В качестве альтернативы, если у вас есть устройство для чтения SD-карт, вы можете извлечь SD-карту вашего устройства и скопировать на нее профиль, а затем вставить карту обратно в устройство Android.

Запустите приложение OpenVPN и нажмите кнопку меню, чтобы импортировать профиль. 91 021

Затем перейдите в папку с сохраненным профилем (на снимке экрана используется / sdcard / Download / ) и выберите свой. Приложение заметит, что профиль был импортирован. 91 026

Позвоните

Чтобы установить соединение, просто нажмите кнопку Connect . Вас спросят, доверяете ли вы приложению OpenVPN. Наберите OK , чтобы установить соединение.Чтобы отключиться от VPN, вернитесь в приложение OpenVPN и выберите Отключить . 91 039

Шаг № 13: Тестирование соединения VPN

Когда все установлено, простая проверка подтвердит, что все работает правильно. При отключенном VPN-соединении откройте браузер и перейдите к DNSLeakTest.

Сайт вернет IP-адрес, назначенный провайдером. Чтобы проверить настройки DNS на той же странице, нажмите «Расширенный тест», и он покажет вам, какие DNS-серверы вы используете.

Теперь подключите клиент OpenVPN к своей Droplet VPN и обновите страницу в браузере. Должен появиться совершенно другой IP-адрес VPN-сервера. Вот так они выглядят во всем мире. Опять же, расширенный тест DNSLeakTest.com проверит ваши настройки DNS и подтвердит, что вы в настоящее время используете DNS, смещенный VPN.

Шаг № 14: отозвать сертификаты клиентов

Вам может потребоваться отозвать сертификат клиента, чтобы предотвратить дальнейший доступ к серверу OpenVPN.

Для этого введите свой каталог CA и исходный файл vars :

компакт-диск ~ / openvpn-ca

исходные вары

Затем мы вызываем команду revoke-full , используя имя клиента, которого вы хотите отменить:

./ revoke-full client3

Это покажет некоторые выходные данные, заканчивающиеся ошибкой 23. Это нормально, и процесс должен успешно сгенерировать необходимую отзывную информацию, которая хранится в файле с именем crl.pem в подкаталоге keys .

Переместите этот файл в каталог конфигурации / etc / openvpn :

sudo cp ~ / openvpn-ca / keys / crl.pem / и т. Д. / Openvpn

Затем откройте файл конфигурации сервера OpenVPN:

судо нано / etc / openvpn / server.конф

В конце файла добавьте параметр crl-verify , чтобы сервер OpenVPN проверял список отзыва сертификатов, который мы создали для каждой попытки подключения:

/etc/openvpn/server.conf

 crl-verify crl.pem 

Сохраните и закройте файл.

Наконец, перезапустите OpenVPN для реализации отзыва сертификата:

sudo systemctl перезапустить openvpn @ server

Клиент должен иметь возможность успешно подключиться к серверу, используя старые учетные данные.

Чтобы отозвать дополнительных клиентов, выполните этот процесс:

  • Создайте новый список отзыва сертификатов, получив файл vars в каталоге ~ / openvpn-ca , а затем запустив сценарий revoke-full с именем клиента.
  • Скопируйте новый список отзыва сертификатов в каталог / etc / openvpn , чтобы заменить старый список.
  • Перезапустите службу OpenVPN.
  • Этот процесс можно использовать для отзыва любых сертификатов, которые ранее были выданы вашему серверу.

Заявка

Поздравляем! Теперь вы можете безопасно пользоваться Интернетом, защищая свою личность, местоположение и трафик от шпионов и цензоров.

Чтобы настроить больше клиентов, просто выполните шаги 6 и 11-13 для каждого дополнительного устройства. Чтобы заблокировать доступ к клиентам, выполните шаг 14.

Если вы не хотите бороться с этой установкой и настройкой - мы поможем с этим на наших серверах в рамках бесплатной Премиум-поддержки. .

Как установить и настроить VPN с OpenVPN в Ubuntu 18.04

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

OpenVPN - это VPN, основанная на протоколах TLS (Transport Layer Security) и SSL (Secure Sockets Layer).OpenVPN использует некоторые сертификаты для шифрования трафика между сервером и конечным клиентом.

В этом руководстве мы предоставим инструкции по настройке OpenVPN на сервере Ubuntu 18.04.

Для выполнения операций, представленных в руководстве, вам понадобятся две машины, одна из которых будет действовать как CA (центр сертификации) и проверять сертификаты.

Требуется соединить сервер и CA с помощью SSH-соединения. Если вы еще этого не сделали, ознакомьтесь с нашим руководством по безопасному подключению через SSH.

Установка OpenVPN

Подключитесь к серверу.

OpenVPN доступен в официальных установках Ubuntu, поэтому нет необходимости загружать какие-либо дополнительные файлы.

Введите:

  sudo apt update sudo apt установить openvpn  

После операции OpenVPN будет установлен на сервере.

Установка EasyRSA

Загрузите EasyRSA на свой сервер и в центр сертификации, введя на обеих машинах команду:

  wget -P ~ / https: // github.com / OpenVPN / easy-rsa / Release / download / v3.0.4 / EasyRSA-3.0.4.tgz  

Последнюю версию можно скачать с https://github.com/OpenVPN/easy-rsa/releases

  кд ~ tar xvf EasyRSA-3.0.4.tgz  

Название может отличаться в зависимости от скачанной версии

Конфигурация

на сервере

Завершите настройку сервера с помощью команд:

  sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz / etc / openvpn / sudo gzip -d / etc / openvpn / server.conf.gz Судо нано /etc/openvpn/server.conf  
  • Найдите раздел, относящийся к HMAC ("tls-auth"). Если строка закомментирована, удалите «;».

  • Найдите раздел шифрования («шифр»). Если он закомментирован, удалите «;». Ниже добавьте новую строку, содержащую текст «auth SHA256».

  • Найдите раздел «dh», который определяет параметры Диффи-Хеллмана, и удалите «2048» из имени (вы должны получить «dh dh.пэм ").

  • Найдите разделы "пользователь" и "группа" и удалите ";" раскомментировать строку.

Конфигурация EasyRSA на CA

При установке EasyRSA создается файл конфигурации для определения переменных CA. Введите:

  кд ~ / EasyRSA-3.0.4 / cp vars.example vars нано варс  

Удалите знак "#" для инструкций на изображении ниже:

Запустите сценарий "easyrs" для инициализации инфраструктуры открытого ключа (PKI):

 ./ easyrsa init-pki ./easyrsa build-ca nopass  

команда создаст два файла:

  • ca.crt: общедоступный сертификат ЦС, используемый серверами и клиентами для взаимной передачи информации о принадлежности к доверенной сети.

  • ca.key: закрытый ключ, используемый машиной CA для подписи ключей и сертификатов для серверов и клиентов. Этот файл должен находиться на машине CA (недоступен для третьих лиц), в противном случае сетевая безопасность может быть поставлена ​​под угрозу.

Вам будет предложено ввести имя. Оставьте поле пустым и нажмите Enter.

Запросить сертификат в CA

После настройки машины CA сгенерируйте закрытый ключ и запрос сертификата на сервере и отправьте их на машину CA для подписи:

  кд ~ / EasyRSA-3.0.4 ./easyrsa init-pki ./easyrsa gen-req сервер nopass  

Вы только что создали закрытый ключ для сервера и запросили сертификат с именем "server".req ":

  Судо CP ~ / EasyRSA-3.0.4 / pki / private / server.key / etc / openvpn /  

Скопируйте файл server.req на компьютер CA:

  scp ~ / EasyRSA-3.0.4 / pki / reqs / server.req [адрес электронной почты защищен] _CA_ip: / tmp  

Сгенерируйте и подпишите сертификат

Импортируйте скопированный файл в папку EasyRSA на машине CA и подпишите его:

  кд ~ / EasyRSA-3.0.4 / ./easyrsa import-req /tmp/server.req сервер ./easyrsa sign-req сервер сервер  

Введите «да» и нажмите Enter.

Переместите подписанный сертификат и ca.crt на сервер VPN:

  scp pki / выданный / server.crt [адрес электронной почты защищен] _server_ip: / tmp scp pki / ca.crt [адрес электронной почты защищен] _server_ip: / tmp  

Затем на сервере

скопируйте полученные файлы в соответствующие места:

  sudo cp /tmp/[server.crt,ca.crt} / etc / openvpn / cd ~ / EasyRSA-3.0.4 / ./easyrsa gen-dh  

Сгенерируйте надежный обмен ключами на основе Диффи-Хеллмана.

  openvpn --genkey --secret ta.key  

Скопируйте сгенерированные файлы в папку "/ etc / openvpn /"

  Судо CP ~ / EasyRSA-3.0.4 / ta.key / и т. Д. / Openvpn / sudo cp ~ / EasyRSA-3.0.4 / pki / dh.pem / и т. д. / openvpn /  

Конфигурация клиента

Создайте папку для хранения клиентских сертификатов и ключей (в руководстве показан только один ключ с именем «client1», но операцию необходимо повторить для каждого клиента, который использует другой номинал)

  mkdir -p ~ / client-configs / ключи chmod -R 700 ~ / клиентские конфигурации cd ~ / EasyRSA-3.0,4 / ./easyrsa gen-req client1 nopass  

cp pki / private / client1.key ~ / client-configs / keys /

scp pki / reqs / client1.req [адрес электронной почты защищен] _CA_IP: / tmp

Импортировать запрос сертификата в CA:

  кд ~ / EasyRSA-3.0.4 / ./easyrsa import-req /tmp/client1.req client1 ./easyrsa sign-req client client1  

Введите «да», чтобы авторизовать подпись.

  scp pki / edition / client1.crt [адрес электронной почты защищен] _SERVER: / tmp  

Скопируйте следующие файлы в соответствующие папки на сервере.

  cp /tmp/client1.crt ~ / client-configs / keys / cp ~ / EasyRSA-3.0.4 / ta.key ~ / client-configs / keys / sudo cp /etc/openvpn/ca.crt ~ / client-configs / keys /  

Теперь и сертификаты, и ключи сервера и клиента созданы.

Конфигурация IP-маршрутизации и межсетевой экран

Изменить политику переадресации IP:

  Судо нано /etc/sysctl.conf  

Измените правила брандмауэра для правильной маршрутизации клиентских подключений.

  IP-маршрут | grep по умолчанию  

  Судо нано /etc/ufw/before.rules  

Добавьте команды, как на изображении ниже, заменив «eth0» на имя вашего сетевого интерфейса.

  # START OPENVPN ПРАВИЛА # Правила таблицы NAT * нац : ПРИНЯТИЕ ПОСТРОУТИРОВКИ [0: 0] # Разрешить трафик от клиента OpenVPN на eth0 -A ПОСТРОУТИРОВАНИЕ -s 10.8.0.0/8 -o eth0 -j МАСКАРАД СОВЕРШИТЬ # END OPENVPN ПРАВИЛА  

Сохранить и выйти.

  Судо нано / и т. Д. / По умолчанию / ufw  
  sudo ufw разрешить 1194 / udp $ sudo ufw разрешить OpenSSH  
  sudo ufw отключить sudo ufw enable  
  Судо systemctl start openvpn  
  sudo systemctl статус openvpn  

Настроить запуск службы при включении сервера

.
  sudo systemctl включить openvpn  
  mkdir -p ~ / клиент-конфигурации / файлы cp / usr / share / doc / openvpn / examples / sample-config-files / client.конф ~ / client-configs / base.conf нано ~ / client-configs / base.conf  

Найдите раздел «удаленный» и убедитесь, что это «удаленный IP_Server 1194»

Найдите раздел "proto" и убедитесь, что сервер настроен на UDP (строка TCP должна быть закомментирована с помощью ";")

Найдите разделы "пользователь" и "группа" и удалите ";", чтобы раскомментировать их

Найдите разделы «ca.crt» - «client.crt» - «client.key» - «ta.key» и закомментируйте их, добавив «#» в начало каждой строки

Найдите раздел «cipher» и добавьте строку «auth SHA256» в «cipher AES-256-CBC»

Добавьте строку "key-direction 1" где-нибудь в

Добавьте строки с комментариями ниже, где хотите.Если клиент - машина Linux, раскомментируйте его с помощью

.
  # скрипт-безопасность 2 # вверх / etc / openvpn / update-resolv-conf # вниз / etc / openvpn / update-resolv-conf  

Сохранить и выйти.

Генерация конфигураций для

клиентов

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

  нано ~ / client-configs / make_config.sh  

Скопируйте и вставьте текст:

  #! / Bin / bash # Первый аргумент: идентификатор клиента KEY_DIR = ~ / клиентские конфигурации / ключи OUTPUT_DIR = ~ / клиентские конфигурации / файлы BASE_CONFIG = ~ / client-configs / base.конф кошка $ {BASE_CONFIG} \ <(echo -e '') \ $ {KEY_DIR} /ca.crt \ <(echo -e ' \ n ') \ $ {KEY_DIR} / $ {1} .crt \ <(echo -e ' \ n ') \ $ {KEY_DIR} / $ {1} .key \ <(echo -e ' \ n ') \ $ {KEY_DIR} /ta.key \ <(echo -e '') \ > $ {OUTPUT_DIR} / $ {1} .ovpn  

Сохранить и выйти из

  chmod 700 ~ / client-configs / make_config.ш  90 023 

Попытка создать конфигурацию клиента.

  cd ~ / client-config sudo ./make_config.sh client1  

Будет создан файл client1.ovpn.

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

Перенаправить весь DNS-трафик через VPN

Измените значение параметра: нажмите "redirect-gateway def1 bypass-dhcp"

  нано / etc / openvpn / server.конф  

Найдите раздел "push" redirect-gateway def1 bypass-dhcp и удалите ";" раскомментировать

Аннулирование сертификата клиента

  компакт-диск EasyRSA-3.0.4 / ./easyrsa отозвать client1  

Введите «да» для подтверждения.

Создайте файл crl.pem и загрузите его на свой сервер:

  ./easyrsa gen-crl scp ~ / EasyRSA-3.0.4 / pki / crl.pem [защита электронной почты] _Server: / tmp  

Обновите конфигурацию на сервере, чтобы проверить отзыв сертификата:

  судо cp / tmp / crl.pem / и т. д. / openvpn Судо нано /etc/openvpn/server.conf  

Добавьте crl-verify crl.pem

в конец файла

Сохранить и выйти.

  sudo systemctl restart [электронная почта защищена]  

Перезапустите сервер, чтобы изменения вступили в силу.

.

Установка OpenVPN как услуги - Debian / Ubuntu

Ниже мы представляем инструкции по установке и настройке клиента OpenVPN как службы в Linux Debian / Ubuntu.

Приложение OpenVPN может быть установлено, среди прочего команда:

 # apt-get install openvpn 

Файл конфигурации client.conf должен находиться в папке / etc / openvpn

.

Для редактирования используйте текстовый редактор vi или nano:

 # нано / etc / openvpn / client.конф клиент Dev Tun протокол TCP удаленный XXX.XXX.XXX.XXX 1194 resolv-retry бесконечно без привязки постоянный ключ настойчивый туннель ca /etc/openvpn/keys/ca.crt сертификат /etc/openvpn/keys/MyClient.crt ключ /etc/openvpn/keys/MyClient.key сервер ns-cert-type глагол 0 шифр AES-256-CBC аутентификация SHA1 

Как видите, файл конфигурации требует, помимо прочего, указать такие параметры, как:

  • удаленный - предоставление IP-адреса или имени хоста сервера OpenVPN, к которому будет подключаться клиент.
  • 1194 - Укажите порт сервера OpenVPN, к которому будет подключаться клиент.
  • ca /etc/openvpn/keys/ca.crt - путь, по которому находится сертификат ca.
  • cert /etc/openvpn/keys/MyClient.crt - путь, по которому находится сертификат клиента.
  • ключ /etc/openvpn/keys/MyClient.key - путь, по которому находится клиентский ключ.

Замените XXX.XXX.XXX.XXX IP-адресом или именем хоста сервера OpenVPN. Также необходимо ввести номер порта.

Теперь вы можете запустить настроенное клиентское приложение OpenVPN с помощью команды:

 # openvpn --config /etc/openvpn/client.conf Будет отображен вывод приложения OpenVPN: # OpenVPN 2.3.4 arm-unknown-linux-gnueabihf [SSL (OpenSSL)] [VOC] [EPOLL] [PKCS11] [MH] [IPv6] создан 27 июня 2017 г. версии библиотеки: OpenSSL 1.0.1t 3 мая 2016 г., LZO 2.08 Буферы сокетов: R = [163840-> 131072] S = [163840-> 131072] ПРИМЕЧАНИЕ. Понижение UID / GID будет отложено из-за --client, --pull или --up-delay. Локальная ссылка UDPv4: [undef] Удаленный канал UDPv4: [AF_INET] XXX.XXX.XXX.XXX:1194 TLS: исходный пакет из [AF_INET] XXX.XXX.XXX.XXX:1194, sid = 2fc176a5 4d3fbbfd ПРОВЕРЬТЕ ОК: глубина = 1, C = XX, ST = XXXXXXXX, L = XXXXXXXX, O = XXXXXXXX, OU = XX, CN = XXXXXXXX, имя = EasyRSA, адрес электронной почты = XXXXXXXX ПРОВЕРИТЬ ОК: nsCertType = SERVER ПРОВЕРЬТЕ ОК: глубина = 0, C = XX, ST = XXXXXXXX, L = XXXXXXXX, O = XXXXXXXX, OU = XXXXXXXX, CN = XXXXXXXX, имя = EasyRSA, emailAddress = XXXXXXXX Шифрование канала данных: шифр AES-256-CBC, инициализированный 256-битным ключом Шифрование канала данных: использование 160-битного хэша сообщения 'SHA1' для аутентификации HMAC Расшифровка канала данных: шифр AES-256-CBC инициализирован 256-битным ключом Расшифровка канала данных: использование 160-битного хэша сообщения 'SHA1' для аутентификации HMAC Канал управления: TLSv1, шифр TLSv1 / SSLv3 ECDHE-RSA-AES256-SHA, 2048-битный RSA [сервер] Одноранговое соединение, инициированное с помощью [AF_INET] XXX.XXX.XXX.XXX:1194 SENT CONTROL [сервер]: 'PUSH_REQUEST' (статус = 1) PUSH: получено управляющее сообщение: 'PUSH_REPLY, route 10.8.0.1, topology net30, ping 10, ping-restart 120, ifconfig 10.8.0.10 10.8.0.1' ИМПОРТ ОПЦИЙ: таймеры и / или тайм-ауты изменены ИМПОРТ ОПЦИЙ: изменены параметры --ifconfig / up ИМПОРТ ОПЦИЙ: изменены параметры маршрута ROUTE_GATEWAY 192.168.1.1/255.255.255.0 IFACE = eth0 HWADDR = XXXXXXXXXXXXXXXXXX Устройство TUN / TAP tun0 открыто Длина очереди TUN / TAP TX установлена ​​на 100 do_ifconfig, tt-> ipv6 = 0, tt-> did_ifconfig_ipv6_setup = 0 / sbin / ip ссылка установить dev tun0 вверх mtu 1500 / sbin / ip addr добавить dev tun0 local 10.8.0.10 одноранговый 10.8.0.1 Пт 8 сентября 09:08:44 2017 / sbin / ip route добавить 10.8.0.1/32 через 10.8.0.1 Набор GID - nogroup UID не задан Последовательность инициализации завершена 

Чтобы разрешить автоматический запуск приложений OpenVPN, например, при перезапуске виртуальной машины, необходимо включить OpenVPN как службу в Systemd. Systemd в первую очередь отвечает за управление процессами запуска и службами.

Команда systemctl в основном используется для управления.При запуске без параметров команда systemctl отобразит все активные (работающие) службы.

Итак, чтобы включить OpenVPN как услугу, вы должны ввести команду:

 # systemctl start [email protected] 

, где "client" - это имя созданного файла конфигурации client.conf

.

и добавьте сервис OpenVPN в опцию автозапуска:

 # systemctl включить [email protected] 
.

Как создать свой собственный сервер OpenVPN

VPN-подключения - это очень хороший способ защитить подключение к различным удаленным серверам или к нашему рабочему месту. Мы можем приобрести VPN-соединение у одного из многих провайдеров. Однако, если для нас важно контролировать сервер, к которому мы подключаемся, мы можем создать его сами, но важно, чтобы он имел стабильное соединение, был высокодоступным и имел общедоступный IP-адрес. Также обратите внимание, что в моем примере конфигурация адаптирована к моим потребностям и может отличаться от других.Поэтому при создании сервера вам также следует прочитать документацию, которая находится под номером , здесь .

В моем случае сервер, на котором будет работать OpenVPN, будет использовать Ubuntu 20.04. Однако перед началом установки вы должны помнить о нескольких важных шагах, выполнение которых сэкономит наше время и обеспечит беспроблемную установку.

Обновляем систему

перед установкой
  sudo apt update sudo apt обновление  

И мы отображаем и сохраняем наш публичный IP-адрес

  ip a показать имя_интерфейса  

В моем случае команда выглядит как

  ip a показать eth0  

Переходим к этапу установки и настройки.Вместе с OpenVPN мы устанавливаем Easy-RSA для создания криптографических ключей.

  sudo apt установить openvpn easy-rsa  

Затем, как обычный пользователь, мы создаем каталог easy-rsa и связываемся с ним

  мкдир ~ / easy-rsa ln -s / usr / share / easy-rsa / * ~ / easy-rsa /  

Позже меняем владельцев

  пользователь sudo chown ~ / easy-rsa chmod 700 ~ / easy-rsa  

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

  cd ~ / easy-rsa нано варс  

Во вновь созданном файле введите

  set_var EASYRSA_ALGO "ec" set_var EASYRSA_DIGEST "sha512"  

После сохранения запускаем скрипт, создающий папку PKI

.
  ./easyrsa init-pki  

Теперь пора создать запрос сертификата и создать закрытый ключ для сервера

.
 ./ easyrsa gen-req имя сервера nopass  

Эта команда генерирует запрос сертификата для сервера server_name без защиты паролем, но если мы хотим защитить его, удалите параметр nopass . Теперь переместите сгенерированный файл запроса в каталог сервера OpenVPN

.
  sudo cp /home/user/easy-rsa/pki/reqs/server_name.req / etc / openvpn / server /  

А потом перенести на наш CA сервер и подписать

 ./ easyrsa import-req /tmp/servername.req имя_сервера ./easyrsa sign-req имя сервера имя сервера  

После подписания мы переносим файлы обратно на наш сервер, а затем перемещаем их в каталог OpenVPN

  sudo cp /tmp/server_name.crt /tmp/ca.crt / etc / openvpn / server  

Для дополнительного уровня защиты нашей сети мы добавим ключ шифрования нашего трафика. Для этого перейдите в папку easy-rsa в домашнем каталоге и сгенерируйте ключ шифрования, который мы затем передаем в каталог сервера OpenVPN

.
  cd ~ / easy-rsa openvpn --genkey --secret ta.ключ sudo cp ta.key / etc / openvpn / сервер  

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

  mkdir -p ~ / client-configs / ключи chmod -R 700 ~ / клиентские конфигурации  

Теперь создаем запрос сертификата для сервера CA и копируем его во вновь созданную папку

  ./easyrsa gen-req client1 nopass cp pki / private / client1.ключ ~ / client-configs / keys /  

Затем мы передаем запрос сертификата на сервер сертификации и подписываем его там, а затем передаем обратно на сервер vpn.

  cd ~ / easy-rsa ./easyrsa import-req /tmp/klient1.req client1 ./easyrsa sign-req client client1  

Теперь кладем в папку с сертификатами клиентов вместе с файлами ключей шифрования и сертификатом сервера и меняем права доступа к этим файлам.

  cp /tmp/klient1.crt ~ / client-configs / keys cp ~ / easy-rsa / ta.key ~ / client-configs / keys / sudo cp /etc/openvpn/server/ca.crt ~ / client-configs / keys / sudo chown user.user ~ / client-configs / keys / *  

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

  sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz / etc / openvpn / server / sudo gunzip / etc / openvpn / server / server.conf.gz sudo nano /etc/openvpn/server/server.conf  

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

После внесения изменений, которые мы хотим внести, сохраните файл конфигурации и закройте его.

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

  sudo systemctl -f включить [email protected] sudo systemctl start [email protected] sudo systemctl статус [email protected]  

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

  mkdir -p ~ / client-configs / files cp / usr / share / doc / openvpn / examples / sample-config-files / client.conf ~ / client-configs / base.conf  

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

  удаленный vpn_ip_server_vpn_vpn_port proto udp # помните, что протокол такой же, как и в конфигурации сервера  

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

  нано ~ / client-configs / make_config.ш  

А потом копируем в него следующее содержимое

  #! / Bin / bash KEY_DIR = ~ / клиентские конфигурации / ключи OUTPUT_DIR = ~ / клиентские конфигурации / файлы BASE_CONFIG = ~ / client-configs / base.conf кошка $ {BASE_CONFIG} \ <(echo -e '') \ $ {KEY_DIR} /ca.crt \ <(echo -e ' \ n ') \ $ {KEY_DIR} / $ {1} .crt \ <(echo -e ' \ n ') \ $ {KEY_DIR} / $ {1} .key \ <(echo -e ' \ n ') \ $ {KEY_DIR} / ta.ключ \ <(эхо-е '') \ > $ {OUTPUT_DIR} / $ {1} .ovpn  

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

Чтобы защитить скрипт от несанкционированного доступа, измените его параметры безопасности

  chmod 700 ~ / client-configs / make_config.sh  

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

  cd ~ / client-config ./make_config.sh client1  

Теперь наш сценарий создаст один файл конфигурации с сертификатами и настройками подключения и сохранит его в подпапке ~ / client-configs / files как client1.ovpn. Теперь этот файл можно передать клиенту и запустить.

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

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

.

Как установить и настроить OpenVPN в Ubuntu

Технология

VPN хорошо известна как способ защиты доступа к частным ресурсам компаний, а также к различному контенту, будь то аудио, видео и архивные документы. Он позволяет создать частную сеть, перенаправляя документы на один компьютер с ресурсами другого или нескольких. Виртуальная частная сеть широко используется во всех современных браузерах. Без него удаленная работа сотрудника большой и важной организации редко окупается.Настройка OpenVPN в Ubuntu важна не только для технических специалистов и защитников высоких требований безопасности, но и для тех, кто не хочет мириться с высокой стоимостью лицензионного контента в странах, где доступ к нему ограничен.

В Linux настройка виртуальных сетей является тонкой.

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

Установка OpenVPN - это приложение свободно доступной технологии виртуальной частной сети. Это возможно как в операционных системах Windows, так и в Linux.Поскольку в среде Linux настроить все параметры этой функции проще, мы рассмотрим ее. Тема виртуальных частных сетей широко освещается на многих тематических сайтах и ​​форумах, к ней присоединились как профессионалы, так и новые сторонники технологий безопасности по всему миру. Установка OpenVPN в Ubuntu позволяет не только повысить безопасность вашей личной информации, но и организовать вашу онлайн-деятельность.

Почему вам следует использовать VPN, а не какие-либо другие средства защиты личных данных? Этот метод нужно настроить только один раз.Все данные автоматически проходят через сервер частной сети и сразу же зашифровываются.

Содержание

  • 1 Что вам нужно знать теоретически?
  • 2 Переходим к практике
    • 2.1 Начинаем установку и настройку

Что нужно знать в теории?

OpenVPN - это довольно функциональная, быстрая и гибкая программа, позволяющая работать с SSL VPN. Имеет открытый исходный код. Это означает, что каждый может использовать свои возможности по отдельности, а также изменять программный код в соответствии со своими потребностями.

Фактически, эта технология предлагает использовать небезопасные сети, как если бы они имели мощную защиту. Это будет очень важно, если:

  1. Вы используете Интернет-соединение с низким уровнем безопасности.
  2. Существует цензура доступа к информации по вашему месту жительства.
  3. Вы находитесь в месте с точками доступа Wi-Fi для общественного пользования.
  4. Вы должны скрыть свое местоположение от других пользователей сети.
  5. Вы хотите еще лучше защитить свои личные данные и пароли.
УВЕДОМЛЕНИЕ. VPN называется виртуальной, потому что все подключено с помощью программного обеспечения, которое использует виртуальные подключения.

Это личное, потому что никто не имеет к нему доступа. Это могут сделать только отдельные участники, которые создали такую ​​связь друг с другом. Каждый сетевой элемент должен содержать информацию о безопасности. Эта информация позволяет одним участникам Интернета легко получить доступ к сети, а также просто запрещает доступ другим.

Основные понятия

Туннель - это безопасное безопасное соединение, использующее ресурсы из незащищенной сети (в данном случае Интернет) и позволяющее обмениваться информацией по частному каналу, настроенному только на доверенных устройствах.

Клиент - это программа, установленная на оборудовании, которая должна обеспечивать канал обмена данными с сервером. Этот канал защищен.

Сервер - компьютер или место, где хранятся учетные записи пользователей виртуальной частной сети.Использование сервера позволяет программам работать быстрее и снижает трафик (объем передаваемых данных).

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

Перейти к практике

Чтобы настроить сервер Ubuntu OpenVPN, вам необходимо приобрести собственный сервер под управлением Ubuntu Linux. На нем нужно получить root права.В настоящее время вы можете купить решение по невысокой цене, и количество компаний, предлагающих такие услуги, постоянно растет. Простая установка OpenVPN в Ubuntu не требует значительных затрат времени.

Мы начинаем установку и настройку

Сначала вам нужно подключиться к серверу и дать ему следующие команды:

«apt-get update
apt-get install openvpn»

Эти инструкции начнутся установка OpenVPN. Затем установите инструмент создания ключей и сертификатов и подготовьте его к работе:

"cd / tmp
wget https: // github.com / OpenVPN / easy-rsa / archive / master.zip
apt-get install unzip
extract master.zip
cd easy-rsa-master
./build/build-dist.sh
tar xvzf ./EasyRSA-git - development.tgz
cd EasyRSA-git-development "

Далее вам нужно сгенерировать ключи и сертификаты:

" ./easyrsa init-pki
./easyrsa build-ca
./easyrsa full server
./ easyrsa build-client-full client1
./easyrsa gen-dh "

После генерации вам необходимо переместить данные в / etc / openvpn /:

" mv./pki/dh.pem /etc/openvpn/dh.pem
mv ./pki/private/client1.key / etc / openvpn /
mv ./pki/private/server.key / etc / openvpn /
mv ./ pki / ca.crt / etc / openvpn /
mv ./pki/issued/client1.crt / etc / openvpn /
mv ./pki/issued/server.crt / etc / openvpn / "

Создайте сервер. conf в том же каталоге со следующими параметрами:

"mode server
dev tun
server 10.128.0.0 255.255.255.0
push" redirect-gateway def1 "
push" dhcp-option DNS 8.8.8.8 "
tls-server
ca ca.crt
cert server.crt
key server.key
dh dh.pem
proto tcp-server
port 1194
client-client
comp-lzo
keepalive 10 120
глагол 4
AES-256-CBC
user nobody
nogroup group
max-clients 10 "

Выполнить запуск

" service openvpn start "

Затем нужно ввести данные на стороне клиента. Вам нужно будет создать несколько новых файлов.

"mkdir vpn
cd vpn
scp vpn-server: /etc/openvpn/client1.crt ./
scp vpn-server: /etc/openvpn/client1.key ./
scp vpn-server: / etc / openvpn / ca.crt ./ "

Здесь, на удаленной линии, вам нужно ввести IP-адрес сервера, как показано в примере.

"клиент
proto tcp
dev tun
123.45.67.89 1194 pilot
persist-key
persist tun
ca ca.crt
cert client1.crt
key client1.key
cipher AES-256-CBC
comp-lzo
verb 3 "

Затем проверьте файлы журнала на сервере на наличие ошибок:

" sudo openvpn -config client.conf "

В следующем окне терминала введите команду:

" ping 10.128.0.1
traceroute mail.ru "

Если все в порядке, вы обнаружите, что 10.128.0.1 был успешно проверен. , отправка пакетов получателю не произошла, потому что NAT не настроен на сервере. Нам все еще нужно выполнить этот шаг.

На сервере откройте файл /etc/sysctl.conf и удалите символы комментариев из линия "net.ipv4.ip_forward = 1 ", что сделает его активным.

Затем вы можете перезагрузить компьютер или ввести строку:

" echo1 >> / proc / sys / net / ipv4 / conf / all / forwarding "

Затем вам нужно ввести:

"iptables -A FORWARD -s 10.128.0.0/24 -j ACCEPT
iptables -A FORWARD -d 10.128.0.0/24 -m state \
-state ESTABLISHED, RELATED -j ACCEPT
iptables - t nat -A POSTROUTING -s 10.128.0.0/24 \
-j SNAT -to-source (адрес сервера) "

Затем попробуйте войти в службу проверки IP.Если все прошло успешно, сохраните правила на сервере:

«iptables-save> /etc/iptables.rules»

Также проверьте, что строка «pre-up iptables-restore

Вы должны завершить настройку VPN через Network Manager. Для этого введите команду «sudoapt-get install network-manager-openvpn-gnome». Вы можете записать все файлы, определенные ранее, в текстовую форму для конфигурации.

На этом настройка сервера Ubuntu OpenVPN завершена! Если возникнут проблемы - задавайте их в комментариях или ищите подробности на тематических форумах! Linux - сложная и многогранная система, которая редко доступна новичкам. Но при должном рвении овладеть им это возможно. А затем миллион новых функций открыт для пользователя, который раньше был вне поля зрения.

.

Как настроить сервер OpenVPN в Ubuntu 18.04 2022

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

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

Есть много коммерческих VPN-провайдеров, из которых вы можете выбирать, но никогда нельзя быть полностью уверенным, что провайдер не регистрирует вашу активность. Самый безопасный вариант - настроить собственный VPN-сервер.

Из этого туториала Вы узнаете, как настроить собственный VPN-сервер путем установки и настройки OpenVPN в Ubuntu 18.04. Мы также покажем вам, как генерировать сертификаты клиентов и создавать файлы конфигурации.

OpenVPN - это полнофункциональное решение для VPN с открытым исходным кодом Secure Socket Layer (SSL).Реализует безопасное расширение OSI Layer 2 или Layer 3 с использованием SSL / TLS.

Предварительные требования

Для выполнения этого руководства вам необходимо:

Отзыв клиентских сертификатов

Отзыв сертификата означает отзыв подписанного сертификата, чтобы его больше нельзя было использовать для доступа к серверу OpenVPN.

Чтобы отозвать сертификат клиента, выполните следующие действия:

  1. Войдите в систему на компьютере CA и перейдите в каталог EasyRSA:

    cd EasyRSA-3.0,5

    Запустите сценарий easyrs, используя аргумент revoke, за которым следует имя клиента, которого вы хотите отозвать:

    ./easyrsa revoke client1

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

    Подтвердите, что вы хотите отозвать сертификат, указав следующую тему: subject = commonName = client1. Введите слово «yes», чтобы продолжить, или любой другой ввод для отмены.Продолжить с отзывом: да ...

    Если ваш ключ CA защищен паролем, вам будет предложено ввести пароль. После проверки скрипт удалит сертификат.

    ... Аннулирование прошло успешно. Вы должны запустить gen-crl и загрузить CRL в свою инфраструктуру, чтобы предотвратить принятие отозванного сертификата.

    Используйте параметр gen-crl для создания списка отзыва сертификатов (CRL):

    ./ easyrsa gen-crl

    Создан обновленный CRL. Файл CRL: /home/causer/EasyRSA-3.0.5/pki/crl.pem

    Загрузите файл CRL на сервер OpenVPN:

    scp ~ / EasyRSA-3.0.5 / pki / crl.pem [электронная почта protected] _server_ip: / tmp

    Войдите на сервер OpenVPN и переместите файл на / etc / openvpn :

    sudo mv /tmp/crl.pem / etc / openvpn

    Откройте файл конфигурации сервера OpenVPN:

    sudo nano / etc / openvpn / server1.conf

    Вставьте следующую строку в конец файла

    /etc/openvpn/server1.conf

    crl-verify crl.pem

    Сохраните и закройте файл.

    Перезапустите службу OpenVPN, чтобы директива отзыва вступила в силу:

    sudo systemctl restart [электронная почта защищена]

    На этом этапе клиент больше не должен иметь доступ к серверу OpenVPN с отозванным сертификатом.

Заключение

В этом руководстве вы узнали, как установить и настроить сервер OpenVPN на компьютере с Ubuntu 18.04.

Безопасность VPN в Ubuntu .

Смотрите также

Только новые статьи

Введите свой e-mail

Видео-курс

Blender для новичков

Ваше имя:Ваш E-Mail: