Что такое VPN и зачем его использовать
Аббревиатура VPN расшифровывается как Virtual Private Network (виртуальная частная сеть). Эта сеть представляет собой технологию, с помощью которой поверх одной сети (например, Интернета) можно установить одно или несколько сетевых логических соединений. Также под VPN понимается сервис, который обеспечивает криптографическую защиту приватных данных и маркировку участников сети и их трафика при пользовании Интернетом.
VPN может применяться для решения таких задач как:
- выполнение удаленной работы с доступом к сервисам и документам организации;
- объединение нескольких офисов компании в общую систему с изоляцией отделов;
- сохранность в браузере истории поиска, необходимой для создания таргетированной рекламы, а также для доступа к сайтам, которые заблокированы на определенной территории.
Кроме того, через VPN безопаснее подключаться к различным сайтам, на которых размещается конфиденциальная информация пользователя.
Сегодня мир проявляет повышенный интерес к VPN-серверам не только как корпоративному решению, но и как к средству обхода различных блокировок.
Как работает VPN?
Установка соединения через VPN предусматривает создание своеобразного «туннеля» между ПК пользователя и VPN-сервером с обязательной шифровкой данных перед их отправкой по этому «туннелю».
Работа VPN включает этапы:
- подключения к VPN – система выполняет «опознание» сети пользователя и сверяет введенный пароль с внесенным в базу данных;
- авторизации пользователя – сервер предоставляет ему возможность выполнять те или иные действия, например, читать почту или заниматься поиском информации в интернете.
При этом, чтобы открыть пользователю доступ к некоторым сайтам, VPN-сервер меняет IP-адрес, присвоенный ПК пользователя, на свой, что делает посещение закрытых сайтов анонимным.
Протоколы VPN-соединения
Основа любого VPN-сервиса – это VPN-протокол, который содержит протоколы передачи данных и стандарты шифрования информации для обмена ей с VPN-серверами. На сегодняшний день существует несколько VPN-протоколов:
- PPTP (Point-to-Point Tunneling Protocol). Этот протокол поддерживается всеми ОС и нетребователен к вычислительным мощностям, однако он считается устаревшим и ненадежным. Поэтому им пользуются «за неимением лучшего»;
- L2TP (Layer 2 Tunneling Protocol). Особенности этого протокола – требовательность к вычислительным ресурсам и отсутствие шифрования по умолчанию. Однако он применяется корпоративными пользователями при построении виртуальных сетей;
- IPSec – Internet Protocol Security – группа протоколов, которые применяются для создания эффективного и безопасного соединения (чаще всего в сочетании с L2TP). Они имеют качественную архитектуру и надежные алгоритмы, но сложны в настройке и затратны в плане ресурсов. Но ресурсоемкость устраняется аппаратным ускорением с помощью алгоритма шифрования АЕС;
- SSL – Secure Sockets Layer & TLS – Transport Layer Security – эти комплексы протоколов отличаются сложностью настройки, нуждаются в установке дополнительного ПО, имеют невысокую производительность, но свободно пропускаются разными публичными сетями. Такие протоколы чаще всего используются на сайтах с https в начале URL.
- Протоколы IKEv2 и IKEv1 – это версии стандарта IKE (Internet Key Exchange или безопасный протокол управления ключами), которые используются для установки безопасного канала аутентификации связи между двумя устройствами. IKEv2 — это по сути дополненная более защищенная, стабильная и быстрая версия IKEv1. Протокол версии IKEv2 комбинирует агрессивный и основной режимы в одну последовательность из четырех сообщений, с целью простого и эффективного обмена данными.
Реализуются SSL и TLS в форматах OpenVPN (универсальный высоконадежный протокол с открытым кодом и поддержкой самых разных алгоритмов) и SSTP – оптимальное решение для пользователей Microsoft для преодоления большинства фаерволов.
Какой сервер нужен для VPN?
Для стабильной и непрерывной работы будущего VPN-сервера наилучшим решением будет выбор облачного провайдера с геораспределенной инфраструктурой. При выборе надежного облачного провайдера сервиса VPN стоит обращать внимание на следующие критерии:
- функциональность предоставляемого гипервизора, от которой зависит производительность виртуальных машин. В перечень самых популярных гипервизоров входят VMware ESXi, Hyper-V от Microsoft, Citrix Xen и KVM OpenStack;
- уровень предоставляемых услуг (SLA) – провайдер должен предоставить пользователю соглашение о SLA, в котором установлено время решения типовых и нетиповых запросов;
- производительность дисковых подсистем, измеряемая в количестве операций ввода-вывода (IOPS) и в показателе уровня задержек при обращении (Latency);
- надежность площадки размещения облачной платформы. Качество работы дата-центра должно подтверждаться сертификатами, выданными Uptime Institute: Tier Certification of Constructed Data Center Facility; Tier Certification of Data Center Design Documents; Tier Certification of Data Center Operational Sustainability.
- качество работы службы поддержки. Сопровождение виртуальной инфраструктуры должно включать: обработку запросов на обслуживание (которая оценивается по заявленным параметрам – времени реакции, максимальным срокам обработки типового запроса и решения инцидента); управление изменениями, которое предусматривает их проработку, тестирование и внесение с минимальными рисками нарушений уровня предоставляемых услуг; управление инцидентами в режиме 24/7/365, с оповещением клиента о проведении работ и устранении проблемы;
- профиль деятельности компании. В качестве поставщика услуг VPN-серверов могут выступать не только облачные провайдеры, но и дата-центры, системные интеграторы и телеком-провайдеры;
- модельный ряд, классы и производители оборудования, которое предоставляется сервис-провайдером. Важно, чтобы оборудование относилось к enterprise-решениям и было отказоустойчивым и качественным. Также, должны быть продублированы все блоки питания и охлаждения серверов, СХД и устройства сетевого оборудования. Ресурсы серверов (тактовая частота CPU в GHz, объемы RAM в Gb и объемы требуемой дисковой памяти в Gb) рассчитываются на скачки уровней потребления.
Перед заключением договора на аренду виртуального VPN-сервера следует не только ознакомиться с соглашением SLA, но и выполнить тестирование инфраструктуры.
В качестве хорошего примера, рекомендуем обратить внимание на компанию ProCloud с очень удобным личным кабинетом, который позволит быстро и просто развернуть сервер любого уровня в Европе и США, но главное, что оплата возможна в рублях.
Так выглядит интерфейс выбора размещения облачного сервера облачного провайдера ProCloud.
Ставим OpenVPN-сервер на CentOS 7
Шаг 1. Установка OpenVPN
1. Обновите репозиторий и пакеты CentOS выполнив команду в консоли:
yum update -y
2. Вы не сможете загрузить OpenVPN из репозитория CentOS, который идёт по умолчанию, но если мы установим расширенный репозиторий EPEL (Extra Packages for Enterprise Linux), то такая возможность появится. Чтобы установить EPEL, введите в консоли:
yum install epel-release -y
3. Снова обновите CentOS:
yum update -y
4. Теперь вы можете установить OpenVPN с помощью команды:
yum install -y openvpn
Шаг 2. Установка Easy RSA
1. Следующий шаг – это создание Public Key Infrastructure (PKI). Для этого необходимо установить Easy RSA, утилиту CLI для создания и управления PKI Certificate Authority (CA).
2. Easy RSA помогает настраивать internal certificate authority (CA) и сгенерировать пары SSL ключей для защиты VPN-соединений.
3. Установите easy RSA, используя команду wget. Если в системе CentOS отсутствует “wget”, запустите через команду:
yum install -y wget
4. Установите последнюю версию CLI (убедиться, что ваша версия актуальная можно на github.com. В качестве примера для данной статьи мы взяли CLI версии 3.0.8. По итогу получается следующая строка:
wget https://github.com/OpenVPN/easy-rsa/archive/v3.0.8.tar.gz
5. Далее распакуйте скачанный архив:
tar -xf v3.0.8.tar.gz
6. Создайте и перейдите в новый каталог openvpn:
cd /etc/openvpn/
Затем в каталоге “openvpn” создайте подкаталог “easy-rsa”. Перенесите извлеченный каталог в /etc/openvpn/easy-rsa. У вас должна получится следующая строка:
mv /root/easy-rsa-3.0.8 /etc/openvpn/easy-rsa
Чтобы убедиться, все ли вы успешно переместили из каталога easy-rsa-3.0.8, перейдите в easy-rsa с помощью команды cd /etc/openvpn/easy-rsa и выведите содержимое с помощью ls. Вы должны увидеть список файлов и папок, как на изображении ниже.
Шаг 3. Настройка OpenVPN
После установки OpenVPN и Easy RSA, вы можете переходить к настройке сервера OpenVPN. Далее мы расскажем о настройке базовой конфигурации.
Прежде чем запускать какие-либо команды, убедитесь что вернулись в корневой каталог. Для этого введите cd в окне терминала и нажмите Enter.
1. Начать настройку необходимо с копирования шаблона файла server.conf из каталога документации OpenVPN:
cp /usr/share/doc/openvpn-2.4.9/sample/sample-config-files/server.conf /etc/openvpn
Если не удается найти шаблон файла конфигурации OpenVPN, можно для поиска воспользоваться командой find.
2. Затем откройте скопированный файл конфигурации в любом удобном текстовом редакторе, например Nano или Vim:
vi etc/openvpn/server.conf
Команда открывает шаблон файла конфигурации OpenVPN. Комментарии в файле начинаются с хэштега # или точки с запятой.
Чтобы настроить базовые конфигурации, необходимо раскомментировать следующие строки, удалив точки с запятой:
- topology subnet (делает установку OpenVPN как подсеть);
- push "redirect-gateway def1 bypass-dhcp" (указывает клиенту перенаправить трафик через OpenVPN);
- push "dhcp-option DNS 208.67.222.222" (использование преобразователя OpenDNS для подключения OpenVPN);
- push "dhcp-option DNS 208.67.220.220" (использование преобразователя OpenDNS для подключения OpenVPN);
- user nobody (запуск OpenVPN без привилегий);
- group nobody (запуск OpenVPN без привилегий).
Затем сгенерируйте статический ключ шифрования, чтобы включить аутентификацию TLS. Для этого найдите строку tls-auth ta.key 0 и закомментируйте ее, добавив ; перед ним. Затем добавьте новую строку под ним: tls-crypt myvpn.tlsauth.
Примечание: файл конфигурации указывает, какие DNS-серверы использовать для подключения к OpenVPN. По умолчанию он настроен на использование преобразователей OpenDNS. В качестве альтернативы вы можете изменить его на другие преобразователи DNS, изменив строки push «dhcp-option DNS 208.67.222.222» и push «dhcp-option DNS 208.67.220.220
Сохраните и выйдите из файла конфигурации. Наконец, сгенерируйте статический ключ шифрования, указанный в файле, с помощью команды:
openvpn --genkey --secret /etc/openvpn/myvpn.tlsauth
Шаг 4. Создание ключей и сертификатов
1. Создайте файл конфигурации vars, используя vars.example, хранящийся в каталоге /easy-rsa/easyrsa3. Перейдите в указанный каталог с помощью:
cd /etc/openvpn/easy-rsa/easyrsa3
2. Вы можете просмотреть содержимое, используя команду ls, чтобы проверить, есть ли у вас файл vars.example.
3. Скопируйте образец файла vars.example под именем vars:
cp vars.example vars
Если снова просмотреть файлы в каталоге, в нем будет отдельный файл vars, который можно использовать для настройки Easy RSA.
4. Откройте файл vars (vi vars) в текстовом редакторе. Прокрутите файл и найдите строки, перечисленные ниже:
#set_var EASYRSA_REQ_COUNTRY "Russia"
#set_var EASYRSA_REQ_PROVINCE "Moscow District"
#set_var EASYRSA_REQ_CITY "Moscow"
#set_var EASYRSA_REQ_ORG "Certificate Company"
#set_var EASYRSA_REQ_EMAIL "[email protected]"
#set_var EASYRSA_REQ_OU "Orgname"
5. Раскомментируйте строки, удалив #, и замените значения по умолчанию своей информацией. Затем найдите строку the KEY_NAME и измените на "server": export KEY_NAME="server".
6. Наконец измените KEY_CN на домен или поддомен, разрешенный вашему сервису. Сохраните и закройте файл. Очистите все предыдущие ключи и создайте центр сертификации:
./easyrsa clean-all.
7. Теперь вы можете перейти к созданию центра сертификации с помощью скрипта build-ca. Запустите команду:
./easyrsa build-ca
Вам будет предложено установить CA Key Passphrase и общее имя для CA. Примечание: чтобы пропускать каждый раз аутентификацию при подписании своих сертификатов, можно использовать команду:
./easyrsa build-ca nopass
8. Создайте ключ и сертификат для сервера:
./easyrsa build-server-full server
9. Далее сгенерируйте файл обмена ключами Diffie-Hellman выполнив следующую команду:
./easyrsa gen-dh
10. Для каждого клиента будет необходим сертификат. Его можно сгенерировать на сервере или скопировать on the client machine. В следующей команде мы создадим сертификат и ключ для client1, но можно изменять команду используя другое имя:
./easyrsa build-client-full client1
11. После того, как вы сгенерировали ключи и сертификаты, скопируйте их из pki в каталог openvpn. Для этого перейдите в каталог pki, запустив команду:
cd /etc/openvpn/easy-rsa/easyrsa3/pki
Необходимо скопировать 4 файла: ca.crt, dh.pem, ca.key, server.key. Первые два файла (ca.crt и dh.pem) хранятся в каталоге pki, остальные( ca.key и server.key) в подкаталоге pki/private. Поэтому сначала в каталог “openvpn” нужно скопировать ca.crt и dh.pem:
cp ca.crt dh.pem /etc/openvpn
Затем перейти в подкаталог “private” и скопировать ca.key, server.key выполнив команды:
cd private и cp ca.key server.key/etc/openvpn
Шаг 5. Firewall и конфигурация маршрутизации
Установка Firewall Deamon
В случае, если на Вашей ОС отсутствует Firewall Deamon, то необходимо ввести команды:
sudo yum install firewalld
После установки firewalld вам необходимо выполнить следующие команды, для того, чтобы при запуске сервера Firewall был автоматически запущен:
sudo systemctl enable firewalld
sudo reboot
Теперь мы можем приступить к установке правил firewalld.
Установка правил Firewall
1. Начните с проверки активной зоны firewalld:
firewall-cmd --get-active-zones
Результат покажет вашу зону firewalld.
2. Добавляем службу openvpn в список служб firewalld, разрешенных в пределах активной зоны. Активная зона в данном примере является общедоступной:
firewall-cmd --zone=public --add-service openvpn
Если активная зона является доверенной, нужно изменить команду.
3. Далее вышеуказанные настройки необходимо сделать постоянными, выполнив команду:
firewall-cmd --zone=public --add-service openvpn --permanent
4. Чтобы убедится, что openvpn добавлен, используйте команду:
firewall-cmd --list-services --zone=public
5. Затем добавить masquerade в шаблон периода выполнения:
firewall-cmd --add-masquerade
После сделать его постоянным:
firewall-cmd --add-masquerade --permanent
Проверяем, чтобы “masquerade” был добавлен: firewall-cmd --query-masquerade. На выходе должен быть ответ “yes”.
Конфигурация маршрутизации
После завершения установки правил Firewall, можно переходить к маршрутизации подсети OpenVPN.
1. Создать переменную для интерфейса личной сети, используемый вашим сервером. В приведенном ниже примере переменная – VAR. При этом вы можете создать другое имя переменной:
VAR=$(ip route get 208.67.222.222 | awk 'NR==1 {print $(NF-2)}')
2. Затем добавляем правило маршрутизации, используя созданную выше переменную:
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o $VAR -j MASQUERADE
3. Перезагрузите firewalld, чтобы произошли изменения:
firewall-cmd --reload
4. Переносим весь веб-трафик от клиента на IP-адрес сервиса для включения IP-передачи. Открываем файл the sysctl.conf: vi /etc/sysctl.conf.
5. Добавляем следующую строку в начале файла:
net.ipv4.ip_forward = 1
6. Перезапускаем сервис:
systemctl restart network.service
Шаг 6. Запуск OpenVPN
1. Для запуска OpenVPN нужно выполнить следующую команду:
systemctl -f start [email protected]
2. Затем активируйте, чтобы начать загрузку при выполнении команды:
systemctl -f enable [email protected]
3. Убедитесь, что сервис активен при помощи команды:
systemctl status [email protected]
По результату проверки, будет указано, что OpenVPN активен (запущен).
Шаг 7: Настройте OpenVPN Client
Когда все настроено на сервере OpenVPN, вы можете настроить свой client machine и подключить его к серверу.
Как упоминалось на шаге 4, на каждом client machine должны быть локальные копии сертификата CA, клиентского ключа, SSL-сертификата и ключа шифрования.
1. Найдите и скопируйте следующие файлы с сервера на клиентский компьютере:
/etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt
/etc/openvpn/easy-rsa/easyrsa3/pki/client.crt
/etc/openvpn/easy-rsa/easyrsa3/pki/private/client.key
/etc/openvpn/myvpn.tlsauth
2. Затем создайте файл конфигурации для клиента OpenVPN под именем client.ovpn на клиентском компьютере:
vi client.ovpn
3. Добавьте в файл следующее содержимое:
client
tls-client
ca /path/to/ca.crt
cert /path/to/client.crt
key /path/to/client.key
remote-cert-eku "TLS Web Client Authentication"
proto udp
remote your_server_ip 1194 udp
dev tun
topology subnet
pull
user nobody
group nobody
Обязательно замените выделенные жирным шрифтом части вашими выбранными значениями.
4. Сохраните и закройте файл.
Шаг 8: Подключите клиента к OpenVPN
Инструкции по подключению к OpenVPN различаются в зависимости от операционной системы вашего клиентского компьютера.
Для Пользователей Linux
Чтобы подключиться к OpenVPN, выполните команду:
openvpn --config /path/to/client.ovpn
Для Пользователей Windows
1. Сначала скопируйте конфигурационный файл client.ovpn в каталог C:Program FilesOpenVPNconfig.
2. Загрузите и установите приложение OpenVPN. Вы можете найти последнюю версию OpenVPN Community Downloads page. После того как вы установили приложение, запустите OpenVPN.
3. Щелкните правой кнопкой мыши значок OpenVPN в системном блоке и выберите Подключиться. Для выполнения этой задачи вам необходимы права администратора.
Для пользователей macOS
Вы можете подключиться к OpenVPN из системы macOS с помощью Tunnelblick (графический пользовательский интерфейс с открытым исходным кодом для OpenVPN в OS X и macOS).
Перед запуском Tunnelblick убедитесь, что файл конфигурации client.ovpn сохранен в каталоге ~/Library/Application Support/Tunnelblick/Configuration.
Готовое решение OpenVPN Road Warrior
В случае, если нужно потратить минимум времени на настройку VPN, предлагаем готовое решение: подключаетесь к серверу и отправляете ему команды через программу Putty.
Когда программа Putty скачается и запустится, в поле Host Name (вкладка Session) нужно ввести IP-адрес, полученный от провайдера, и нажать Open. После того, как выйдет предупреждение об опасности и будет выбран вариант «Да», запустится консоль для отправки команд серверу. Прежде чем начать с ней работу, потребуется ввести логин root (он набирается вручную) и пароль, также присланный хостером (в некоторых случаях возможна авторизация по SSH-ключу). Пароль вставляется в консоль кликом правой кнопки и нажатием Enter.
Так выглядит поле с информацией для подтверждения прохождения авторизации
Появление информации о системе или номера сервера подтвердит прохождение авторизации.
Для самой настройки VPN можно использовать готовый скрипт OpenVPN Road Warrior, который продолжает поддерживать подключение даже при перебоях в работе VPN‑сервисов.
Если у вас не установлен wget, то нужно его установить с помощью команды:
sudo yum install wget
Если установлен, то пропустите этот шаг и перейдите сразу к скачиванию и установке OpenVPN RW с помощью команды:
wget https://git.io/vpn -O openvpn‑install.sh && bash openvpn‑install.sh
Эта команда станет запуском диалога с мастером настройки, который поможет выбрать оптимальные варианты выбора (они подтверждаются через Enter). Порядок работы будет такой:
- следует проверить, совпадает ли предложенный IP‑адрес с полученным от хостера;
- протокол остается по умолчанию – UPD;
- Port:1194 – подтвердить;
- выбор DNS будет Google, цифру 1 надо заменить на 3 и нажать Enter;
- имя пользователя можно оставить просто как client;
Press any key – нужно еще раз нажать Enter и дождаться завершения настройки.
Установка готового решения от OpenVPN Road Warrior
Когда настройка закончится, понадобится создать файл для подключения к VPN. Для этого вводится команда
cat ~/client.ovpn
которая выведет на консоли содержимое файла. Выделить на экране следует все, что идет после этой команды и до /tls-auth. Выделенный фрагмент копируется в блокнот (Ctrl + V) и сохраняется на рабочий стол как файл client.ovpn.
Так выглядит инофрмация в файле для подключения к VPN
Подключиться к серверу, используя созданный файл, возможно через клиент OpenVPN – эту программу нужно скачать и установить на компьютер, а запуск ее провести, щелкнув правой кнопкой по файлу client.ovpn и выбрав Start OpenVPN или можно запустить программу OpenVPN Client и выбрать файл с конфигурацией подключения:
Интерфейс загрузки сертификата в клиенте OpenVPN для Windows
Успешное соединение отобразится как статус Initialization Sequence Completed, однако для надежности стоит еще раз сверить IP-адрес с полученным.
После успешного соединения, в интерфейсе вы увидите статистику подключения и использования VPN-сервера
Итоги
После прочтения этой статьи вы должны были успешно настроить и запустить OpenVPN-сервер. Очень надеемся, что у вас удалось подключиться к вашему OpenVPN-серверу с клиентского компьютера Linux, Windows или macOS. А если вдруг не получилось, то пишите нам, мы поможем.