fbpx
linux
58

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

5
(1)

Сегодня в этой статье мы обсудим установку и настройку собственного OpenVPN сервера на Linux-дистрибутив Ubuntu 20.04.

Что такое и для чего вам нужен VPN?

Виртуальная Частная Сеть (Virtual Private Network) - сеть, в которой участвуют 2 и более устройства, между которыми происходит зашифрованный обмен данными. Авторизация клиента происходит по секретному слову (паролю), или же по специальному сертификату.

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

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

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

Подключаемся и устанавливаем OpenVPN

В данной статье мы рассмотрим объединение в сеть нескольких устройств и доступ к файлам на центральном устройстве (сервере)

Для начала нам необходим ПК или выделенный сервер в облаке с установленной на него Ubuntu 20.04 (руководство по установке вы можете найти в интернете)

В качестве сервера я буду использовать вируальную машину с установленной Ubutnu 20.04 Server, выпущенную в сеть, и имеющую статический белый IP адрес и открытый извне порт 4321

Подключаемся к серверу по SSH (рекомендую под Windows использовать клиент Putty) с использование логина-пароля пользователя с правами sudo

OpenVPN. Подключение к серверу по SSH

P.S. Если вы используете на сервере desktop-редакцию Ubuntu (с графической оболочкой), то все описанные ниже действия вы так же можете проводить в приложении “Терминал”, в меню приложений Ubuntu

Перед нами появляется запрос проверки подлинности сертификата SSH - соглашаемся, так как мы знаем, что это действительно наш сервер

Предупреждение о не сохраненном ключе

После того как мы вошли на сервер, выполняем проверку и установку последних обновлений

sudo apt update
sudo apt upgrade

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

sudo apt install openvpn easy-rsa

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

По завершении установки мы можем приступить к конфигурированию будущего сервера.

OpenVPN. Готовим среду для создания сертификатов

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

Для удобства создадим папку в /opt и поместим копию инструментария в отдельную подпапку, например /opt/ovpn/

sudo mkdir /opt/ovpn
sudo mkdir /opt/ovpn/easy-rsa

Копируем EasyRSA

sudo cp -R  /usr/share/easy-rsa /opt/ovpn/

Теперь переходим в папку и приступаем к созданию сертификатов

cd /opt/ovpn/easy-rsa/
sudo ./easyrsa init-pki

Команда выше подготавливает среду для создания ключей и сертификатов

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

 

 

После подготовки мы можем начать с генерации CA-ключа (Ключ центра сертификации сервера). 

sudo ./easyrsa build-ca

Создание ключа центра сертификации

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

При запросе Common Name - вводим имя сервера (в примере он указан как OVPN-SERVER1)

Создание ключа центра сертификации

OpenVPN. Создаем сертификат сервера

После подготовки CA мы можем подать на него запрос о выпуске сертификата для нашего сервера - с его помощью мы в последствии и сможем выпустить сертификат, с которым клиенты смогут убедиться в подлинности данного сервера

sudo ./easyrsa gen-req server nopass

У вас будет запрошено Common Name - вводим имя вашего будущего сервера

OpenVPN сертификат сервера

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

sudo ./easyrsa sign-req server server

У вас будет запрошено подтверждение выпуска - вводим “yes” и нажимает ENTER, после чего вводим пароль от CA сертификата

OpenVPN. Подтверждение запроса на выпускOpenVPN. Подтверждение запроса на выпуск

Далее нам необходим TLS (transport layer security, или HMAC) ключ для безопасной авторизации клиентов. Генерируем его следующей командой

sudo openvpn --genkey --secret /opt/ovpn/easy-rsa/pki/ta.key

После создания TLS ключа также создаем ключ DH (Диффи Хеллмана)

sudo ./easyrsa gen-dh

Эта процедура займет от 1 до 5 минут, в зависимости от мощности ЦП вашего сервера

OpenVPN. Генерирование ключа DH

Сертификаты сервера успешно созданы, теперь для удобства копируем их в папку /opt/ovpn/keys

sudo mkdir -p /opt/ovpn/keys
sudo cp -r pki/ /opt/ovpn/keys

Создаем сертификаты пользователей

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

sudo ./easyrsa build-client-full user1 nopass

Где user1 - имя нашего будущего пользователя

Openvpn. Добавляем пользователяПри запросе вводим пароль от вашего созданного ранее CA сертификатаOpenvpn. Введите пароль

 

Настраиваем параметры сервера и производим первый запуск

Перед тем как запускать сервер необходимо правильно прописать в конфигурации пути до созданных сертификатов, IP адреса пула VPN а так же другие параметры, о которых будет сказано ниже. Для начала мы создадим базовую конфигурацию сервера. Создаем ее с помощью редактора Nano по пути /etc/openvpn/server.conf

sudo nano /etc/openvpn/server.conf

Копируем в созданный файл следующие строки

local 192.168.1.128
port 4321
proto udp
dev tun
ca /opt/ovpn/keys/pki/ca.crt
cert /opt/ovpn/keys/pki/issued/server.crt
key /opt/ovpn/keys/pki/private/server.key
dh /opt/ovpn/keys/pki/dh.pem
tls-auth /opt/ovpn/keys/pki/ta.key 0
server 10.11.12.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 360
max-clients 10
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log-append /var/log/openvpn/openvpn.log
verb 4
mute 20
daemon
mode server
tls-server

OpenVPN. Создание конфигурации сервера

Подробнее обо всех параметрах вы можете прочесть на официальном сайте OpenVPN, или в файле-примере (https://github.com/OpenVPN/openvpn/blob/master/sample/sample-config-files/server.conf).

На данный момент нас интересуют несколько пунктов:

local — IP-адрес нашего сервера, с которого будут приходить подключения от клиентов
port — порт, который должен быть открыт извне, для подключения клиентов. В нашем случае - 4321
ca — сертификат нашего локального центра сертификации
cert — открытый сертификат сервера
key — закрытый сервера.
dh — ключ DH (Диффи Хеллмана)
tls-auth — TLS ключ авторизации
server — IP адрес сервера в сети VPN
max-clients — максимальное число подключений пользователей

Проверяем правильность всех параметров, сохраняем и выходим из Nano комбинацией ctrl+x

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

sudo mkdir /var/log/openvpn

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

sudo systemctl enable openvpn@server --now

И проверить его статус

sudo systemctl status openvpn@server

Как мы видим из статуса Active  - сервер запущен и готов принимать подключения от клиентов

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

sudo mkdir /opt/ovpn/cli_keys
sudo cp pki/issued/user1.crt pki/private/user1.key pki/ca.crt pki/ta.key /opt/ovpn/cli_keys
sudo chmod -R a+r /opt/ovpn/cli_keys

После чего набор клиентских сертификатов будет сохранен в папку /opt/ovpn/cli_keys, откуда позже мы их можем скачать

Загрузка и установка клиента OpenVPN на систему Windows

Для начала нам необходимо с помощью утилиты WinSCP (Скачать для Windows) подключиться и скачать подготовленные клиентские сертификаты (которые мы сохранили в папке /opt/ovpn/cli_keys на сервере)

Заходим в WinSCP и подключаемся к нашему серверу

Подключение к серверу по SFTP

 

 

 

 

 

 

 

 

 

Переходим в каталог /opt/ovpn/cli_keys и копируем содержимое в любую удобную для вас папку на клиентскую машину

Загружаем клиентские сертификаты

После чего скачиваем последнюю версию OpenVPN по ссылке - https://openvpn.net/community-downloads/ и устанавливаем без изменения галочек и пути установки

Загружаем OpenVPN на клинта

Устанавливаем OpenVPN

По окончании установки OpenVPN переходим в папку

 C:\Program Files\OpenVPN\config - для 64 битной Windows
 C:\Program Files x86\OpenVPN\config - для 32 битной Windows

и копируем туда ранее скачанные сертификаты клиента из папки cli_keys

Копируем клиентские ключи

Копируем клиентские ключи

В том же каталоге создаем файл config.ovpn и открываем его с помощью текстового редактора (например “Блокнот” или "Notepad++")

В этот файл копируем приведенную ниже базовую конфигурацию клиента

client
resolv-retry infinite
nobind
remote 12.221.98.11 4321
proto udp
dev tun
ca ca.crt
cert user1.crt
key user1.key
tls-client
tls-auth ta.key 1
float
keepalive 10 120
persist-key
persist-tun
verb 3

где 12.221.98.11 - IP адрес сервера, доступный из вне (белый IP адрес), а 4321- порт, указанный в конфигурации сервера

Сохраняем файл и запускаем OpenVPN от имени администратора

Запускаем клиент

В трее появится значок OpenVPN, щелкаем по нему правой кнопкой и выбираем “Подключиться”

Подключаемся к серверу

Если все прошло успешно, то вы увидите лог подключения и уведомление о присвоении адреса VPN

Успешное подключение к серверу

Поздравляем! Теперь вы можете пользоваться удаленными ресурсами на сервере с вашего клиентского ПК, к примеру, подключаться к серверу по SSH для удаленного управления - сервером будет являться первый адрес из пула VPN  - в данном примере - 10.11.12.1

Для доступа к локальной сети сервера, в конфиг OpenVPN (/etc/openvpn/server.conf) достаточно добавить

push "route 10.11.12.0 255.255.255.0"
push "route 192.168.111.0 255.255.255.0"

Где 10.11.12.0 - подсеть нашего VPN, а 192.168.111.0 - подсеть локальной сети сервера

После чего перезапустить его командой

sudo systemctl restart openvpn@server

Читай как установить Docker на Ubuntu в нашей статье

Изучи Linux на нашем курсе

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 5 / 5. Количество оценок: 1

Оценок пока нет. Поставьте оценку первым.

Сожалеем, что вы поставили низкую оценку!

Позвольте нам стать лучше!

Расскажите, как нам стать лучше?

1 комментарий. Оставить новый

Добавить комментарий

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

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения

Tags: , , ,
Читают сейчас
Меню

Чат-бот, который учит Linux и DevOPS