Kali Linux. Установка и настройка VPN
Как и обещал, первая из статей по Kali Linux.
Но сегодня мы не будем рассматривать хаки и подобное.
Эта статья будет как настроить VPN протокол в Kali Linux.
VPN довольно важная составляющая особенно если вы занимаетесь чем то что не разрешено в рамках закона, но не дает полной гарантии в скрытии своего IP .
В Kali в пункте «Сетевые соединения» можно увидеть пункт «VPN» но он не активен.
Наша задача установить модули, чтобы пункт был активен.
В установке ничего сложного нет, необходимо лишь ввести некоторые команды в консоль.
Но прежде чем я напишу нужные команды, напишу про то, если вы используете Kali Linux на виртуальной машине.
Чтобы использовать протоколы VPN (ещё это касается различных атак на Wi Fi), необходимо иметь отдельный USB Wi Fi модуль. То есть если вы с ноутбука и у вас встроенный Wi Fi у вас не выйдет поработать, по причине что этот модуль будет использован вашей основной ОС. Но бывают заморочки, лучше ставить отдельную ОС.
Лично я использую TP-Link TL-WN722N для этих целей. И в качестве виртуальной машины лучше выбирать VMware player, с Virtual Box у меня не вышло поработать, модуль не определялся виртуальной машиной, если вам удастся разобраться с проблемой, отпишите в комментариях.
Если же Kali Linux установлен в качестве основной операционной системы, проблем никаких возникнуть не должно.
Установка и настройка VPN в Kali .
Первым делом если вы давно не обновлялись то советую обновиться, иначе могут возникнуть ошибки.
apt-get update
apt-get upgrade
Когда полностью обновились, устанавливаем VPN.
Открываем консоль и вводим по порядку следующие команды.
apt-get install network-manager-openvpn-gnome
apt-get install network-manager-pptp
apt-get install network-manager-pptp-gnome
apt-get install network-manager-strongswan
apt-get install network-manager-vpnc
apt-get install network-manager-vpnc-gnome
/etc/init.d/network-manager restart эта команда сделает рестарт менеджера сети.
Теперь можно использовать VPN.
Использование VPN.
Рассмотрим как использовать OpenVPN и PPTP протоколы.
OpenVPN.
Чтобы использовать протокол OPENVPN, скачиваем файл конфигурации с расширением OVPN.
Помещаем его в удобное для нас место, я использую рабочий стол.
Далее открываем консоль, переходим в папку с рабочим столом командой
Проверяем файлы рабочего стола командой LS , копируем полное название файла конфигурации VPN и вводим команду
После чего осталось дождаться подключение. Если потребуется имя пользователя(login) и пароль(password) вводим те данные которые показаны на сайте где вы взяли VPN.
Если всё хорошо, то увидим надпись «Initialization Sequence Completed». Консоль не закрываем, должно быть открыто пока работаете.
Если бесконечно идет подключение проблема скорее всего в сервере, попробуйте использовать другой файл конфигураций VPN.
PPTP.
Переходим в менеджер сети, «Соединения VPN-настроить VPN».
Нажимаем «Добавить» и выбираем «Point-to-point Tunelling protocol (PPTP)» .
И вводим данные. Пример с vpnme.me
Необходимо ввести шлюз , логин и пароль. Шлюз обычно написан как adress server или может быть как имя сайта.
Когда всё прописали, сохраняем и подключаемся.
Вот в принципе и всё, никаких танцев с бубном и прочего.
И по возможности используйте платные VPN серверы, для надежности и проверяйте изменился ли ваш IP.
Это всё что я хотел сегодня написать на своем интернет блоге. Берегите себя и свои компьютеры.
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Инструкция по настройке сервера и клиента OpenVPN
Оглавление
Обход блокировок с помощью российских VPS
Начнём с небольшого лайф-хака: если у вас уже есть VPS (виртуальный частный сервер – разновидность хостинга, когда в отличие от совместного (shared-хостинга) вам в аренду дают не папку на сервере, а целую виртуальную машину, в которую вы можете установить любую операционную систему и настроить её как вам заблагорассудится), так вот, если у вас уже есть VPS и даже если виртуальный сервер находится в РФ, то весьма вероятно, что он подойдёт для обхода блокировок Роскомнадзора.
Чтобы это проверить, необязательно настраивать VPN – подключитесь к вашему удалённому серверу (например, по SSH) и попробуйте выполнить что-то вроде:
Вполне вероятно, что вы получите HTML код страницы заблокированного ресурса – это означает, что на вашем российском VPS можно настроить VPN для обхода блокировок.
В принципе, причина очевидна: оборудование для блокировок заставили установить только провайдеров «последней мили». Т.е. это разные ростелекомы, билайны и т.п. – те, кому вы платите за Интернет.
У кого есть российские VPS – пишите в комментариях, у вас через VPS открываются заблокированные сайты или нет? Будет интересно собрать некоторую статистику. Также указывайте, настроен ли IPv6 – возможно, дело просто в этом.
Только не думайте, что я агитирую арендовать именно российские VPS для обхода блокировок – нет, просто если вы веб-мастер и у вас УЖЕ ЕСТЬ такой сервер, то вы можете сэкономить несколько долларов в месяц, обойдясь без аренды зарубежного VPS под VPN.
Для чего нужен VPN, что он даёт
VPN создаёт соединение между одним или несколькими компьютерами. Это соединение использует надёжное шифрование. В результате чего, можно безопасно передавать данные используя ненадёжные соединения. Например, при подключении к открытой Wi-Fi сети, ваш трафик подвержен сниффингу, как со стороны других устройств локальной сети, так и со стороны тех, кто даже не подключился к этой сети – достаточно перехватывать беспроводной трафик, не подключаясь к ней. Но если вы после подключения к открытой сети начинаете использовать VPN, то ваш трафик передаётся в зашифрованном виде.
Из этого зашифрованного трафика невозможно извлечь какие-либо данные. К примеру, если без VPN вы открываете сайт, использующий HTTPS, то в результате сниффинга невозможно узнать, какие именно данные вы отправили и какие страницы посетили. Но даже при HTTPS видно, к каким именно сайтам вы подключаетесь. При использовании VPN третья сторона, даже если у ней есть доступ к вашему трафику, никак не может определить, какие сайты вы открывали либо извлечь другие данные – весь трафик представляет собой поток зашифрованных данных, имеющих такую же ценность для посторонних, как случайный набор нулей и единиц.
Как работает VPN
Технология VPN позволяет объединять несколько устройств в безопасную сеть.
В своей работе VPN использует разделение на сервер и клиент. У одного сервера может быть несколько клиентов, которые объединены в виртуальную частную сеть, где они могут безопасно обмениваться данными.
Если какому-то клиенту нужно получить доступ к глобальной сети, то он обращается к серверу VPN, этот сервер получает для него данные и перенаправляет запросившему клиенту. Благодаря такой работе, VPN часто используется для сокрытия IP и для обхода блокировки.
К примеру, если вы настроили VPN сервер на компьютере (к примеру, на VPS – виртуальном частном сервере), находящемся не в РФ, то при выходе в Интернет, этот сервер будет запрашивать для вас информацию, в результате, ваш IP адрес будет скрыт (будет показываться IP адрес удалённого сервера), а поскольку для зарубежных компьютеров не работают российские блокировки, то вы сможете получить доступ к любому сайту, который вы не можете открыть напрямую.
Что такое OpenVPN
OpenVPN – это бесплатная программа с открытым исходным кодом, которая реализует технологию VPN. Эта программа имеет и клиентскую часть, и серверную. Работает на различных операционных системах, в том числе на Linux и Windows.
Благодаря распространённости, даже существуют роутеры, которые поддерживают OpenVPN.
Понятная и рабочая инструкция по настройке OpenVPN
Я попытался максимально понятно описать каждый шаг. Если у вас возникли вопросы, то пишите их в комментариях.
Я не поленился и проверил работоспособность OpenVPN сервера на двух VPS’ках под управлением Arch Linux (мой основной виртуальный сервер) и Debian (специально арендовал для написания инструкции), а также проверил клиенты под управлением Windows, Debian (Kali Linux, Ubuntu), Arch Linux.
Т.е. если у вас не получается или возникают ошибки, то попробуйте выполнять операции более внимательно. Если это не помогает – то пишите в комментариях – попробуем разобраться вместе.
При всей своей детальности, эта инструкция не для полных нубов, как минимум вы:
- должны иметь VPS
- должны уметь пользоваться текстовыми редакторами с интерфейсом командной строки (vim или nano). Nano проще – если не умеете пользоваться vim, то в командах заменяйте его на nano
Ну и вам нужно достаточно сосредоточенности, чтобы не запутаться. Плюсом такого подхода (использование ассиметричного шифрования и различных дополнительных защит) является то, что если не получены ключи шифрования, то передаваемый трафик невозможно расшифровать никакими средствами, никакими суперкомпьютерами.
Сертификаты OpenVPN
Мы будем настраивать OpenVPN так, что в своей работе программа будет использовать сертификаты. Это очень надёжный способ как зашифровать передаваемый трафик, так и защитить подключение к серверу.
Настройка OpenVPN будет понятнее, если уяснить криптографические основы.
В криптографии есть понятие симметричного шифрования и асимметричного шифрования.
Пример симметричного шифрования: для шифрования используется пароль, для расшифровки используется этот же самый пароль.
При ассиметричном шифровании, данные зашифровываются одним ключом, а расшифровываются другим.
К примеру, при шифровании с помощью публичного ключа: имеются два ключа: приватный и публичный ключ (публичный ключ называют сертификатом). Приватный нужно хранить в секрете, а публичный распространяется свободно. С помощью публичного ключа можно шифровать сообщения и проверять электронную цифровую подпись. С помощью приватного ключа можно расшифровывать сообщения, зашифрованные публичным ключом, и подписывать данные электронной подписью.
Если у двух сторон имеется по своему собственному приватному ключу, и они обменялись публичными ключами, то перед отправкой данных они шифруют их публичным ключом другой стороны. Такие зашифрованные данные может расшифровать только истинный получатель – владелец приватного ключа.
Но это не всё. Пары ключей нельзя создавать просто так – они должны быть подписаны центром авторизации (certification authority (CA)). Для подписания сертификатов, центр сертификации использует свой собственный приватный ключ. А чтобы можно было проверить, что сертификат действительно подписан уполномоченным центром сертификации, распространяется публичный ключ (сертификат) этого CA.
Итак, получается что:
- сервер имеет два файла (сертификат, т.е. публичный ключ, и приватный ключ)
- клиент имеет два файла (сертификат, т.е. публичный ключ, и приватный ключ)
- центр сертификации имеет два файла (сертификат, т.е. публичный ключ, и приватный ключ)
Сертификаты при этом не являются секретными, а приватные ключи должны быть секретными!
- дополнительно генерируется файл .pem: протокол Ди́ффи — Хе́ллмана (англ. Diffie-Hellman, DH) — криптографический протокол, позволяющий двум и более сторонам получить общий секретный ключ, используя незащищенный от прослушивания канал связи. Полученный ключ используется для шифрования дальнейшего обмена с помощью алгоритмов симметричного шифрования.
Получается уже семь обязательных файлов.
- для добавления дополнительной HMAC подписи к пакетам рукопожатия SSL/TLS, можно создать ещё один файл – он будет восьмым. Это необязательный файл, но мы всё равно будем его использовать, поскольку он позволяет отбросить явно неподходящие пакеты.
Именно это количество файлов и может вызвать путаницу. Но если понимать, какой файл для чего используется, то проблем не возникает.
Если кому-то интересно, посмотрите соответствующие статьи в Википедии (если вам это не совсем понятно, то не переживайте, свой VPN мы всё равно настроем):
После создания всех сертификатов, нужно настроить непосредственно сервер и клиент. Эта настройка заключается в том, что сгенерированные файлы ключей нужно скопировать в правильное расположение на сервере и клиентах (у каждого из клиентов по своей паре публичный-приватный ключ) и указать путь до файлов с ключами, указать IP подключения и некоторые другие опции.
Как установить OpenVPN
В разные системы OpenVPN ставится чуть по-разному. В Linux мы одновременно устанавливаем и сервер, и клиент. В Windows мы будем работать только с клиентом. Т.е. вам нужно выполнить установку и на сервер, и на клиентскую машину. Например, если у вас VPS с Linux, а пользоваться VPN вы будете с домашнего компьютера под управлением Windows, то устанавливайте OpenVPN на оба компьютера как это писано для каждой системы ниже.
Установка OpenVPN в Debian, Ubuntu, Linux Mint, Kali Linux
Для установки пакетов достаточно выполнить следующие команды (рекомендуется, чтобы предварительно система была обновлена и перезагружена):
Установка OpenVPN в Arch Linux, BlackArch
Установка выполняется следующей командой:
Установка OpenVPN в Windows
Для Windows имеется OpenVPN с графической оболочкой. Перейдите на страницу https://openvpn.net/community-downloads/, найдите там файл «WINDOWS INSTALLER (NSIS)» и скачайте установщик с расширением .exe. Или скачайте последнюю версию по прямой ссылке http://build.openvpn.net/downloads/releases/latest/openvpn-install-latest-stable.exe
Установка выполняется как обычно для Windows программ с мастером установки.
Обратите внимание, что при желании вы можете поставить галочку напротив «EasyRSA 2 Certificate Management Scripts». Это программа и скрипты для генерирования ключей. В этой инструкции ключи мы будем генерировать на Linux машине, т.е. эти скрипты нам не понадобятся, но при желании вы можете их установить.
Решение проблемы с ошибкой «OpenVPN GUI не поддерживает более 50 конфигураций. Пожалуйста свяжитесь с автором, если вам нужно больше.»
Возможно возникновение ошибки:
Для её исправления зайдите в папку C:\Program Files\OpenVPN\config\ и удалите оттуда файлы. Эти файлы могла оставить сборка на основе OpenVPN.
Создание ключей OpenVPN
Для безопасности рекомендуется, чтобы центр сертификации был на отдельном компьютере, ключи сервера генерировались на другом компьютере, и каждый клиент генерировал свои ключи на своём компьютере.
Для простоты, я буду выполнять действия на одной системе (на OpenVPN сервере), а потом перенесу клиентские ключи на нужный компьютер.
Имя файла | Нужен для | Цель | Секретный |
ca.crt | сервер + все клиенты | Публичный ключ (сертификат) корневого центра сертификации (CA) | НЕТ |
ca.key | только для машины, подписывающей ключи | Приватный ключ корневого центра сертификации (CA) | ДА |
dh | только сервер | Параметры Диффи Хеллмана | НЕТ |
ta.key | сервер + все клиенты | HMAC подпись к пакетам SSL/TLS | ДА |
server.crt | только сервер | Сертификат (публичный ключ) сервера | НЕТ |
server.key | только сервер | Приватный ключ сервера | ДА |
client1.crt | только client1 | Сертификат (публичный ключ) Client1 | НЕТ |
client1.key | только client1 | Приватный ключ Client1 | ДА |
client2.crt | только client2 | Сертификат (публичный ключ) Client2 | НЕТ |
client2.key | только client2 | Приватный ключ Client2 | ДА |
client3.crt | только client3 | Сертификат (публичный ключ) Client3 | НЕТ |
client3.key | только client3 | Приватный ключ Client3 | ДА |
Ключи могут генерироваться на любой операционной системе – они будут работать также на любой ОС. Например, сервер работает на Arch Linux и ключи созданы на нём, а затем клиентские ключи передаются в ОС под управлением Windows или Ubuntu.
В зависимости от вашей системы, выберите нужную инструкцию: для производных Debian или для производных Arch Linux.
Создание ключей OpenVPN в Debian, Ubuntu, Linux Mint, Kali Linux
Начинаем с инициализации центра сертификации:
Нужно будет придумать и два раза ввести пароль от 4 до 1023 символов.
Будет создано два файла:
Первый (ca.crt) – это сертификат, т.е. открытый ключ центра сертификации. Он нужен и для сервера и для каждого клиента – с помощью него они будут проверять, что публичные ключи других действительно подписаны центром сертификации и что не появился кто-то «левый», не одобренный центром сертификации.
Создаём папку, где будут все сертификаты сервера OpenVPN:
и сразу копируем туда первый файл:
Создание ключей OpenVPN сервера
Теперь нам нужно сгенерировать пару ключей OpenVPN сервера.
Нужно подписать сертификат ключами Центра Сертификации, для этого:
Будет задан вопрос, точно ли мы хотим подписать, наберите yes, затем введите пароль от Центра Сертификации (CA).
Когда появится фраза:
Нужно будет ввести пароль Центра Регистрации, который установили на предыдущем шаге.
Копируем в нужную папку файлы, которые нужны для запуска сервера OpenVPN:
Файл параметров Diffie-Hellman (DH) нужен для протокола обмена публичными ключами.
Создайте ключ HMAC:
Теперь у нас 5 файлов, необходимые для запуска сервера OpenVPN, размещены в папке /etc/openvpn/certs/. Проверьте, все ли файлы на месте:
Создание и подпись ключей клиентов OpenVPN
Аналогично нужно будет ответить на вопрос yes и ввести пароль вашего Центра Сертификации.
Теперь с сервера скачайте файл /etc/openvpn/certs/ca.crt и разместите его по этому же пути, т.е. /etc/openvpn/certs/ca.crt на клиентской машине.
С сервера скачайте файл /etc/openvpn/certs/ta.key и разместите его по этому же пути, т.е. /etc/openvpn/certs/ta.key на клиентской машине.
С сервера скачайте файл /usr/share/easy-rsa/pki/issued/client1.crt, но в клиентской машине разместите его по пути /etc/openvpn/certs/client1.crt.
С сервера скачайте файл /usr/share/easy-rsa/pki/private/client1.key, но в клиентской машине разместите его по пути /etc/openvpn/certs/client1.key.
Файлы можно открывать текстовым редактором и копировать-вставлять на клиентскую машину.
Проверьте, все ли файлы на месте (на клиенте должно быть четыре файла):
Итак, если вы создали ключи в Debian (или производных), то вам не нужно создавать ключи в Arch Linux, т.е. пропустите следующий раздел.
Если вышеприведённые команды вызвали ошибку, значит у вас старая версия easy-rsa, в ней должны работать следующие команды:
Будет создано два файла:
Первый (ca.crt) – это сертификат, т.е. открытый ключ центра сертификации. Он нужен и для сервера и для каждого клиента – с помощью него они будут проверять, что публичные ключи других действительно подписаны центром сертификации и что не появился кто-то «левый», не одобренный центром сертификации.
Создаём папку, где будут все сертификаты сервера OpenVPN:
и сразу копируем туда первый файл:
Создание ключей OpenVPN сервера
Теперь нам нужно сгенерировать пару ключей OpenVPN сервера.
Все значения можно оставить по умолчанию. Положительно отвечаем на два запроса:
Копируем в нужную папку файлы, которые нужны для запуска сервера OpenVPN:
Файл параметров Diffie-Hellman (DH) нужен для протокола обмена публичными ключами.
Создайте ключ HMAC:
Теперь у нас 5 файлов, необходимые для запуска сервера OpenVPN, размещены в папке /etc/openvpn/certs/. Проверьте, все ли файлы на месте:
Создание ключей клиентов OpenVPN
Все значения можно оставить по умолчанию. Положительно отвечаем на два запроса:
Теперь с сервера скачайте файл /etc/openvpn/certs/ca.crt и разместите его по этому же пути, т.е. /etc/openvpn/certs/ca.crt на клиентской машине.
С сервера скачайте файл /etc/openvpn/certs/ta.key и разместите его по этому же пути, т.е. /etc/openvpn/certs/ta.key на клиентской машине.
С сервера скачайте файл /usr/share/easy-rsa/keys/client1.crt, но в клиентской машине разместите его по пути /etc/openvpn/certs/client1.crt.
С сервера скачайте файл /usr/share/easy-rsa/keys/client1.key, но в клиентской машине разместите его по пути /etc/openvpn/certs/client1.key.
Файлы можно открывать текстовым редактором и копировать-вставлять на клиентскую машину.
Проверьте, все ли файлы на месте (на клиенте должно быть четыре файла):
Итак, если вы создали ключи в Debian (или производных), то вам не нужно создавать ключи в Arch Linux, т.е. пропустите следующий раздел.
Создание ключей OpenVPN в Arch Linux, BlackArch
Создание ключей центра сертификации
Начинаем с инициализации центра сертификации:
Следующей командой мы инициализируем инфраструктуру открытых ключей:
Нас предупредят, что предыдущая инфраструктура будет удалена, и что если мы хотим продолжить, то должны набрать yes.
Генерируем ключи центра сертификации:
Нужно будет придумать и два раза ввести пароль от 4 до 1023 символов.
Будет создано два файла:
Первый (ca.crt) – это сертификат, т.е. открытый ключ центра сертификации. Он нужен и для сервера и для каждого клиента – с помощью него они будут проверять, что публичные ключи других действительно подписаны центром сертификации и что не появился кто-то «левый», не одобренный центром сертификации.
На серверной машине этот файл должен быть по пути /etc/openvpn/certs/ca.crt, поскольку у меня CA и сервер это одна машина, то я создаю папку, где будут все сертификаты сервера OpenVPN:
и сразу копирую туда первый файл:
Создание ключей OpenVPN сервера
Теперь нам нужно сгенерировать пару ключей OpenVPN сервера. Если вы это делаете на другой машине, то необходимо выполнить начальную инициализацию:
Я все операции делаю на одном компьютере, поэтому перехожу сразу к следующему шагу:
Нужно будет ввести имя сервера – я оставляю значение по умолчанию.
Будут созданы два файла:
Первый – это приватный ключ сервера OpenVPN, который нужно хранить в секрете и который можно сразу переместить в нужное место, поскольку он не требует каких-либо дальнейших обработок. Если у вас OpenVPN сервер на другой машине, то разместите этот файл в папке /etc/openvpn/certs/, для этого создайте её:
Поскольку у меня CA и сервер это одна машина, то я сразу перемещаю файл в нужное место:
Но файл servername.req является файлом запроса, который будет подписан центром сертификации. Поэтому если у вас центр сертификации на другом компьютере, то перенесите его туда в папку /etc/easy-rsa/pki/reqs/, если у вас центр сертификации на этом же компьютере, то оставьте их где они лежат.
Файл параметров Diffie-Hellman (DH)
Этот файл нужен для протокола обмена публичными ключами.
На серверной машине OpenVPN создайте файл dh2048.pem командой:
Помните: можно использовать значения большие чем 2048 (например, 4096), но для создания требуется значительно больше времени, а для безопасности особо ничего не добавляется; рекомендуется иметь длину главного номера DH соответствующей длине RSA ключа.
Опять же на серверной OpenVPN машине создайте ключ HMAC:
Он будет использоваться для добавления дополнительной HMAC подписи к пакетам SSL/TLS рукопожатия. Как результат, любые UDP не имеющие корректной HMAC подписи будут немедленно отброшены, защищая от:
- Сканирования портов.
- DOS атаки на UDP порт OpenVPN.
- Инициализацию SSL/TLS хендшейка от неавторизованных машин.
- Любые возможные уязвимости переполнения буфера в реализации SSL/TLS.
Создание ключей клиентов OpenVPN
Клиентские файлы можно генерировать на любой машине. Если ещё не инициализирован центр сертификации, то делаем это:
Генерируем клиентский приватный ключ и файл запроса:
Будет создано два файла:
Первый – это приватный ключ, его нужно скачать на компьютер клиента сервера OpenVPN, а второй – файл запроса, его нужно подписать, чтобы был создан сертификат клиента. Поэтому если у вас центр сертификации на другом компьютере, то перенесите его туда в папку /etc/easy-rsa/pki/reqs/, если у вас центр сертификации на этом же компьютере, то оставьте их где они лежат.
Можно создать столько пар для клиентов, сколько нужно – у каждого клиента должны быть свои собственные пары публичный-приватный ключ.
Подписывание сертификатов центром сертификации
Теперь нам нужно подписать файлы запросов сервера и клиентов, чтобы получились сертификаты (публичные ключи), а также разместить файлы по нужным папкам. Начнём с подписи.
Если у вас центр сертификации расположен на отдельной машине, то перенесите на неё файлы запросов .req в папку /etc/easy-rsa/pki/reqs/
Теперь в центре сертификации выполните:
Оба раза нас попросят задуматься, действительно ли мы хотим подписать эти файлы и действительно ли мы доверяем источнику. Также нужно будет ввести пароль, который мы придумывали, когда генерировали ключи центра сертификации.
В результате будут созданы следующие файлы:
Ставшие ненужными файлы запросов можно удалить:
Перемещаем файлы сервера:
В результате на сервере файлы ключей размещены в правильной директории.
Проверьте, все ли файлы на месте (на клиенте должно быть пять файлов):
Загрузка файлов на клиентские машины
- Теперь с сервера скачайте файл /etc/openvpn/certs/ca.crt и разместите его поэтому же пути, т.е. /etc/openvpn/certs/ca.crt на клиентской машине.
- С сервера скачайте файл /etc/openvpn/certs/ta.key и разместите его по этому же пути, т.е. /etc/openvpn/certs/ta.key на клиентской машине.
- С сервера скачайте файл /etc/easy-rsa/pki/issued/client1.crt, но в клиентской машине разместите его по пути /etc/openvpn/certs/client1.crt.
- С сервера скачайте файл /etc/easy-rsa/pki/private/client1.key, но в клиентской машине разместите его по пути /etc/openvpn/certs/client1.key.
Файлы можно открывать текстовым редактором и копировать-вставлять на клиентскую машину.
Проверьте, все ли файлы на месте (на клиенте должно быть четыре файла):
Размещение файлов ключей на сервере и на клиенте
Итак, всего на сервере должно быть пять файлов и они должны быть размещены в следующих директориях:
- /etc/openvpn/certs/ca.crt
- /etc/openvpn/certs/servername.crt
- /etc/openvpn/certs/servername.key
- /etc/openvpn/certs/dh2048.pem
- /etc/openvpn/certs/ta.key
Проверьте, все ли файлы на месте:
На клиентской машине должны быть следующие файлы, и в случае Linux разместите их так:
- /etc/openvpn/certs/ca.crt
- /etc/openvpn/certs/client1.crt
- /etc/openvpn/certs/client1.key
- /etc/openvpn/certs/ta.key
Проверьте, все ли файлы на месте:
Файлы можно скачать используя программу scp или любым другим способом. Также их содержимое можно копировать-вставлять, поскольку они представляют собой обычный текст.
Для Windows машин создайте папку C:\Program Files\OpenVPN\certs\ и разместите там эти файлы:
- C:\Program Files\OpenVPN\certs\ca.crt
- C:\Program Files\OpenVPN\certs\client1.crt
- C:\Program Files\OpenVPN\certs\client1.key
- C:\Program Files\OpenVPN\certs\ta.key
Запуск сервера OpenVPN
Это универсальная инструкция для Debian, Ubuntu, Linux Mint, Kali Linux, Arch Linux и их производных.
Конфигурационный файл OpenVPN
В архиве /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz или в папке /usr/share/openvpn/examples/ имеются примеры файлов настройки. Оттуда можно взять файл server.conf и настроить его под свои нужды. Если вы действовали по этой инструкции, то можете просто создать новый файл /etc/openvpn/server/server.conf
Сохраните и закройте файл.
Тестирование и запуск сервера OpenVPN
Протестировать настройки OpenVPN сервера можно так:
Если есть ошибки в файле конфигурации, то программа сразу завершиться с ошибкой. Для решения проблем включите логи в файле настроек, увеличьте вербальность до 6 и изучайте журнал ошибок:
А если всё в порядке запустите OpenVPN сервер и добавьте его в автозагрузку
Обратите внимание, что с systemctl используется команда вида openvpn-server@ .service, где — это файл конфигурации, который лежит в папке /etc/openvpn/server/, но без расширения .conf
Если вы следовали этой инструкции и не меняли название файла, то вышеприведённые команды вам подойдут, их не нужно менять.
Если вы столкнулись с ошибкой:
То из файла /etc/openvpn/server/server.conf
Причина ошибки в том, что поддержка директивы explicit-exit-notify 1 была добавлена в OpenVPN начиная с версии 2.4. А на вашей машине, очевидно, OpenVPN более старой версии.
Если вы столкнулись с ошибкой «Address already in use», например:
Это означает, что порт занят другой программой. Проверить, какая программа использует порт, можно командой:
К примеру, для проверки порта 53:
Используйте любой другой, не занятый порт – для этого в конфигурационных файлах OpenVPN сервера и клиента отредактируйте директиву port 53.
Включение маршрутизации трафика на OpenVPN сервере
На данном этапе, если бы кто-то подключился к OpenVPN серверу, то он не сможет подключаться к глобальной сети. Чтобы это стало возможным нужно настроить маршрутизацию трафика.
Для этого создайте файл vpn_route.sh.
Обратите внимание, что я создаю скрипт в папке /root/bin/, если у вас её нет, то создайте её предварительно
Если вы хотите разместить скрипт в другой папке, то отредактируйте последующие данные под свои.
B этот файл скопируйте следующее содержимое, отредактировав его под свои нужды. Обратите внимание на:
- PRIVATE=10.8.0.0/24 – измените подсеть в соответствии с вашими настройками. Если делали по этой инструкции, то менять ничего не нужно.
- Укажите значение DEV! Впишите там имя вашего сетевого интерфейса. Это имя можно посмотреть командой
Если вы не впишите имя, то есть вероятность, что при загрузке компьютера скрипт не сможет автоматически получить имя сетевого интерфейса и поэтому маршрутизация трафика не будет работать правильно!
Сделайте файл исполняемым:
Чтобы изменения вступили прямо сейчас, до перезапуска компьютера, выполните:
Если всё нормально, то для добавления его в автозагрузку создайте файл /etc/systemd/system/enable-openvpn-routing.service:
Со следующим содержимым:
Обратите внимание на строку /root/bin/vpn_route.sh – замените её на свой путь, если мы разместили файл в другом месте или назвали его по-другому.
И активируйте автозапуск этого файла:
Настройка клиентов OpenVPN сервера
Настройка Windows для использования OpenVPN
Как уже было сказано, необходимые ключи должны быть размещены в следующих папках:
- C:\Program Files\OpenVPN\certs\ca.crt
- C:\Program Files\OpenVPN\certs\client1.crt
- C:\Program Files\OpenVPN\certs\client1.key
- C:\Program Files\OpenVPN\certs\ta.key
Теперь в папке C:\Program Files\OpenVPN\config\ создайте файл client.ovpn со следующим содержимым:
ВНИМАНИЕ: замените в строке remote 185.117.153.79 IP адрес на свой.
Теперь выберите подключение «client» и нажмите «Подключиться»:
Свой IP вы можете проверить на сайте https://suip.biz/ru/?act=myip
Настройка Debian (Ubuntu, Linux Mint, Kali Linux), а также Arch Linux( BlackArch) для использования OpenVPN
Это универсальная инструкция для всех производных Debian и Arch Linux по подключению к OpenVPN.
Теперь настроем клиента, который будет пользоваться OpenVPN на Linux. Как это было сказано почти в самом начале, пакет OpenVPN у вас уже должен быть установлен.
Сгенерированные ключи должны быть в этих файлах:
- /etc/openvpn/certs/ca.crt
- /etc/openvpn/certs/client1.crt
- /etc/openvpn/certs/client1.key
- /etc/openvpn/certs/ta.key
Если у вас нет папки /etc/openvpn/certs/, то создайте её:
И скопируйте туда все необходимые ключи.
Проверьте, все ли файлы на месте (4 файла):
Создайте файл /etc/openvpn/client/client.conf
И скопируйте туда (обязательно поменяйте IP адрес в строке remote 185.117.153.79 на IP адрес ВАШЕГО OpenVPN сервера) :
Протестировать настройки OpenVPN сервера можно так:
Слова «Initialization Sequence Completed» говорят о том, что подключение прошло успешно.
Если по каким-то причинам нет Интернета, то проверьте, пингуются ли IP
и пингуются ли имена хостов:
Если пинг к IP проходит, а к именам хостов – нет, то откройте файл /etc/resolv.conf:
И замените его содержимое на:
А если всё в порядке запустите клиент OpenVPN в фоне и при желании добавьте его в автозагрузку. Это необязательно – вы можете подключаться к OpenVPN только по мере необходимости.
Добавление в автозагрузку:
Если нужно остановить, то введите:
Если нужно отключить из автозапуска, то выполните:
Встраивание сертификатов в файл .ovpn
Сертификаты необязательно должны быть в отдельных файлах. Сертификат можно внедрить прямо в файл .ovpn и, на самом деле, это очень удобно! То есть для распространения конфигурации среди клиентов OpenVPN сервера не нужно передавать пять файлов (настройки и четыре сертификата) достаточно передать только один файл настроек, в который уже встроены сертификаты.
OpenVPN позволяет включать файлы в главный конфигурационный файлы, которые указываются опциями —ca, —cert, —dh, —extra-certs, —key, —pkcs12, —secret, —crl-verify, —http-proxy-user-pass, —tls-auth и —tls-crypt.
Перед каждым сертификатом ставится строка (где вместо слово «опция» нужно вписать ту опцию, которую заменяет данный сертификат, то есть это ca, cert, dh и так далее). Когда текст сертификата заканчивается, то ставится закрывающий тег .
Пример использования встроенного сертификата:
Как можно увидеть, нужно копировать содержимое файлов целиком, вместе с комментариями. Если внедряется файл —pkcs12, то его нужно закодировать в base64. Закодировать файл .p12 в base64 можно сделать, например, с помощью OpenSSL, запустив
Рассмотрим конкретно для нашей конфигурации. Мы используем четыре сертификата:
Эти четыре строки нужно удалить из конфигурационного файла. Обратите внимание, что с tls-auth после имени файла стоит цифра один – это дополнительная опция и чтобы она не была потеряна, к уже имеющимся опциям добавьте в ваш .ovpn файл строку:
Теперь прямо в файл .ovpn добавьте:
Где вместо многоточий […] вставьте соответствующие сертификаты/ключи полностью, вместе с комментариями. Получается примерно так:
Теперь файл настроек .ovpn можно загружать в различные клиенты OpenVPN: на телефон, например, или на другой компьютер – отдельные файлы сертификатов больше не нужны.
Информация о выходе новых версий OpenVPN
Информация о выходе новых версий, а также другой интересный материал об OpenVPN на форуме.
Заключение
Если у вас нет своего VPS, и вы хотите его купить прямо сейчас, то пара ссылок: