Пятница, 18 мая 2018 04:34

КАК УСТРОЕН VPN

Автор

П ривет всем. Нашёл замечательную статью о VPN для новичков подкорректировав её . В этой статье я в полу-сжатой форме постарался объяснить, что такое VPN ?, зачем он нужен, описал клиенты OpenVPN под разные ОС. Коснулся такой темы как "Бесплатные VPN vs Свой VPN-server vs Покупной VPN", поскольку частенько вижу вопросы об этом . Показал, как самому на собственном сервере можно поднять VPN (OpenVPN) на реальном примере - от анонимной покупки VPS в интернете за Bitcoin с его первичной настройкой и рассмотрением проблем, связанных с анонимной покупкой сервера до самого процесса поднятия OpenVPN вручную или хорошим, автоматическим скриптом. Хотел небольшую тему, но получилось как всегда очень объемно .

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

VPN расшифровывается как Virtual Private Network (Виртуальная Частная Сеть). Это технология, которая создает виртуальный защищенный канал (или туннель) между вашим устройством (компьютер/смартфон/планшет) и Интернетом. VPN - это некий сервис, который обычно работает на удаленной машине (сервере).

Зачем нужен VPN

VPN обычно используют разные предприятия и организации, что бы объеденить разные её филиалы или удаленных пользователей, которые находятся физически далеко друг от друга, в одну сеть. Но нам интересно не это. VPN позволяет выходить в сеть от пользователя с другим IP адресом, возможно, другой страны, что дает возможность обходить разного рода блокировки (на рутрекер сможете зайди или в ваш любимый ВК, если заблокируют и его) или воспользоваться ресурсами, которые доступны только для пользователей определенных стран (допустим существует сайт, который доступен только для пользователей Германии). Также, если ваш провайдер не предоставляет вам статический IP адрес, VPN может быть использован для создания такого выделенного IP. Поскольку VPN создает зашифрованный криптостойким алгоритмом туннель, это позволяет послать нахуй сразу несколько категорий потенциально опасных для нас и нашего дела существ - провайдеров, ментов (гос-во), хакеров и конечный ресурс (прим. сайт в интернете). Для нас VPN является отличным средством анонимизации и защиты нашего траффика от провайдера и самых разных SleepWalker'ов. Использование VPN, если так можно сказать, почти обязательно для каждого более-менее вменяемого юзера. Причем речь не только об около-криминале, VPN неплохо бы использовать и в вашей повседневной жизни. Что уж говорить об остальных категориях пользователей, например, которое посещают Runion. VPN будет скрывать от вашего провайдера ресурсы, которые вы посещаете. А от ресурсов, которые вы посещаете, VPN будет скрывать ваш реальный IP адрес. VPN часто используется как средство для сокрытия Tor-траффика от вашего провайдера, ведь запуская VPN, а затем Tor Браузер, ваш трафик имеет цепь VPN -> Tor, что означает, что факт использования Tor скрыт от провайдера, в ваш настоящий IP адрес не палится перед первой (входной) нодой сети Tor.

Описано в сжатой форме. За остальным курите интернеты.

Популярные VPN протоколы

Существует множество разных протоколов VPN. Здесь я постарался сравнить самые популярные и используемые из них.

Начнем с хорошего.

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

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

PPTP - Этот протокол достаточно старый, один из самых первых. Быстрый по скорости и легкий в настройке, поддерживается почти всеми ОС, однако очень уязвимый и совершенно небезопасный. Несколько раз взламывался спецслужбами. Этот протокол использовать крайне не рекомендуется за исключением случаев, где вам не нужна защита. Это юзать не нужно ни в коем случае!

L2TP/IPsec - Уже лучше, чем PPTP. L2TP также поддерживается многими ОС, в том числе и мобильными и тоже достаточно прост в настройке. IPsec обеспечивает более стойкое шифрование, чем PPTP. Однако, L2TP/IPsec медленнее, чем PPTP или OpenVPN. Не обходит Фаерволлы.

SSTP - Протокол от Microsoft. SSTP с хорошим, стойким шифрованием, доступен только для операционных систем Windows. Как и OpenVPN, позволяет обходить Firewall. Проще в настройке, чем OpenVPN. Без открытого исходного кода, поэтому OpenVPN лучше.

Вывод:

Если есть возможность, использовать лучше только OpenVPN из-за открытого исходного кода, безопасности и относительной скорости. IKEv2 хороший протокол, безопасный, быстрый, стабильный, но с закрытым исходным кодом. L2TP/IPsec можно использовать вместо PPTP, а PPTP использовать вовсе не рекомендую. SSTP доступен только для Винды, тоже не очень рекомендую.

Если интересует больше подробностей - гуглите и читайте.

Бесплатный VPN vs свой VPN vs Покупной VPN

Я часто вижу вопросы на эту тему, она популярна. Посему решил разобрать этот вопрос в данной статье. Итак, что же лучше? Бесплатные VPN, предоставляемые разными сервисами, свой VPN, поднятый самостоятельно на собственном сервере или платные VPN-сервисы? Если вам нужен VPN срочно, быстро, здесь и сейчас и у вас нет оформленной подписки на каком-то VPN-сервисе, а своего сервера нет и подавно - тогда можете воспользоваться бесплатными VPN. Но затея, конечно, сомнительная.

Сервис который юзал только я , предоставляющих бесплатный VPN:

1) vpnbook.com ( не реклама )

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

В чем приимущество бесплатных VPN?

Очевидно, что сама по себе бесплатность является плюсом. Также то, что такими серверами пользуются большое количество людей, прибавляет анонимности. На этом его преимущества заканчиваются. Данные VPN очень нестабильные. Часто отваливаются. Очень медленные. Использовать их я бы рекомендовал, только если нужно срочно для чего-то и нет других возможностей. Но лучше что бы у вас не было таких ситуаций. Не исключено, что на таких серверах ведутся логи. Да и что на этих серверах ЕЩЕ происходит - никому не известно. Для долгосрочного использования и по важным делам использовать крайне не рекомендую.

Можно воспользоваться собственным VPN

Нужно лишь купить сервер в интернете, зайти на него и поднять там OpenVPN по инструкции. По сравнению с платными VPN-сервисами, свой собственный VPN выходит еще дешевле. Арендовать VPS (Virtual Private Server) можно чуть ли не за 2-3$/месяц в интернете. Что, по-моему, достаточно дешево - нужно лишь поискать. Конечно же, свой VPN имеет и другие приимущества. Например, у вас будет root-доступ к серверу, поэтому вы можете отключить логирование и 100% быть уверенными в том, что логирование не ведется. В отличии от не своего VPN (бесплатные или платные), где у вас нет root-доступа, а это значит, что вы не можете никак быть уверенны в том, что логирование отключено, как бы вас не убеждали в этом эти сервисы. Вы сам себе хозяин на сервере. Это ваш VPN. В отличии от бесплатных VPN, свой сервер будет работать гараздо быстрее и стабильнее. Это очень весомый плюс. Также, поскольку у вас будет свой собственный сервер, туда можно прикрутить что-нибудь помимо OpenVPN, какой-нибудь другой сервис. Например, веб-сервер и разместить там небольшой сайт. Или еще какую ерундень поставить. Или можно сделать ее Tor-нодой, если провайдер разрешает. Tor relay разрешают чаще чем Tor Exit Node (выходную ноду).

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

Можно воспользоваться услугами платных VPN сервисов

которые тоже относительно недорогие (в среднем 5-12$/месяц). Такие сервисы нужно искать, конечно же, в интернете. Большенство из них принимают к оплате Bitcoin, что несомненно круто. Что-то конкретное рекомендовать не буду, но есть ряд VPN-сервисов, которые постоянно мелькают:

AirVPN

IPVanish

PIA

TorGuard

IVPN

NordVPN

Proxy.sh

ExpressVPN

BolehVPN

Все вышеперечисленные сервисы принимают к оплате Bitcoin (на момент написания статьи). Некотрые даже принимают другие криптовалюты. Я детально не изучал каждый из этих сервисов, но они предлагают самые разные решения. Разные VPN протоколы, под разные десктопные и мобильные ОС. У многих есть свой OpenVPN клиент под какую-то операционную систему, но пользоваться их клиентами не очень рекомендуется из соображений безопасности (об этом ниже). Все просто. Регистрируетесь и платите за месяц (или год, что выходт дешевле), скачиваете конфигурационный факл OpenVPN (.ovpn), скармливаете его вашему OpenVPN клиенту и всё, у вас будет VPN. Если у вас не OpenVPN, то читаете инструкцию на сайте сервиса по подключению с другим протоколом. Благо на этих сайтах у них хорошие инструкции и все предельной просто и понятно. Из преимуществ можно выделить то, что каждый сервис предлагает сервера во многих разных странах, которые доступны вам. Между этими странами можно переключаться, вручную с .ovpn конфигами или как-то автоматически, если эта фича реализованна в их клиенте. Тогда как на своем собственном сервере вы привязаны к одной стране, одному IP адресу. Не понравилась одна страна - переключились на другую. Скажу от себя, что фича хоть и полезная, но какая-то сомнительная. Говорить про то, что эти сервера намного стабильнее, надежнее и быстрее по сравнению с "бесплатным" решением, я думаю не нужно. Доверие к платным сервисам тоже как-то больше, чем к беслпатным VPNам, хоть все равно нет гарантий. По сраdнению со своим собственным сервером, у вас нет root-доступа, посему контролировать процессы, которые происходят внутри вы не можете. Это значит, что никаких гарантий того, что логирование отключено, у вас нет. Хотелось бы верить, что логирование отключено и платные сервисы не пиздят своим клиентам. Я думаю во многих случаях так и есть, но все зависит от страны наверное. Где-то могут и не принуждать включать логирование, это значит, что сервису ничего не будемт мешать сделать это.

 Заходим на сервер по SSH. Проверяем TUN/TAP.

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

 IP адрес.

Логин: root.

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

Для того чтобы подключиться по SSH на Windows, нужно воспользоваться сторонними программами. Скачивайте на выбор: Putty или Kitty. ( не реклама ) Работать с этими программами достаточно просто. Гуглите.

 

На ОС Linux и MacOS все проще.

В терминале вводим:

Код:

ssh user@ip

где:

ip - IP адрес VPS.

user - username пользователя. При первом подключении / в нашем случае - root. 

После нажатия enter, при самом первом коннекте, вам выскочит сообщение: 

Код:

Are you sure you want to continue connecting (yes/no)? 

вручную вводим yes, потом вам предложит ввести пароль от root, который у вас также есть. Если все хорошо, то вы подключились к VPS и вам будет передано управление командной строкой. 

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

Если Linux, то ctrl+shift+v вставить в терминале (ctrl+shift+c скопировать из терминала),

Если Windows и вы используете Putty/Kitty, то вставить в консоль можно по нажатию на ПКМ.

 

Первичная настройка VPS

Далее, перед поднятием непосредственно OpenVPN, было бы неплохо произвести какую-то первичную настройку на сервере: обновить пакеты - поставить нужные пакеты, отключить ненужные сервисы, создать пользователя, настроить sshd_config (поменять порт, запретить коннет от root). Поскольку я показываю на примере дистрибутива Debian, вводимые команды будут для этого дистибутива и для дистрибутивов основанных на Debian (Ubuntu). 

Итак, приступим.

Обновляем пакеты: 

apt-get update && apt-get dist-upgrade -y

Ставим нужные пакеты: 

apt-get install -y nano sudo htop curl perl python wget git openvpn openssl easy-rsa iptables ca-certificates ufw

где:

nano - консольный редактор. Обычно стоит изначально, но не всегда.

htop - консольный диспетчер задач.

openvpn - пакет openvpn. Нужно для поднятия OpenVPN.

easy-rsa - скрипты для легкой генерации ключей. Нужно для поднятия OpenVPN.

git - понадобится, если будете поднимать OpenVPN скриптом (далее в статье). 

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

apt-get install build-essential make automake autoconf pkg-config

Далее, нам нужно создать пользователя: 

useradd -m -s /bin/bash pp ( ) 

где:

useradd - команда, создающая пользователя.

-m - создает домашнюю папку пользователя (по пути /home/<имя пользователя>/), по-умолчанию имеет такое же название, как и имя пользователя

-s - указывает, какой shell использовать

pp-runion - имя пользователя. 

После создания юзера, вам ОБЯЗАТЕЛЬНО нужно создать ему пароль, потому что мы будем использовать этого юзера для коннекта по ssh, поэтому вводим команду: 

passwd pp-runion

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

Далее, нужно отключить лишние сервисы.

Вводим команду: 

netstat -tulpn

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

На данном этапе в идеале должен быть запущен только sshd. Поскольку у меня установлена Debian-minimal, то у меня так и есть и команда 

Далее, можно настроить sshd. 

Из соображений безопасности поменяем порт со стандартного на нестандартный и запретим коннект от root.

Редактируем файл /etc/ssh/sshd_config при помощи nano:

nano /etc/ssh/sshd_config 

Поднимаем OpenVPN скриптом.

Поднять OpenVPN вручную вам не под силу? Не отчаивайтесь, у меня для вас хорошие новости! 

О Чудо!

На Github существует Open Source скрипт, который позволяет быстро и легко поднять OpenVPN сервер на вашем VPS. Скрипт называтся openvpn-install, и вот ссылка на Github: nyr/openvpn-install  У этого скрипта есть куча форков, которые вы можете изучить.  

Посмотреть исходный код можно здесь

Приступим.

Работаем под пользователем root или суперпользователем. 

Для начала, обновим систему: 

apt-get update && apt-get dist-upgrade -y

Если вы уже пытались поднять OpenVPN вручную, но у вас ничего не получилось, то нужно сначала его полностью снести.

Удаляем openvpn: 

apt-get remove --purge openvpn

удаляем папку: 

rm -rf /etc/openvpn/

выключаем ufw: 

ufw disable 

и установим нужные пакеты: 

apt-get install -y sudo nano curl perl python wget git iptables openvpn openssl ca-certificates 

Скачиваем скрипт в домашнюю папку root: 

git clone https://github.com/Nyr/openvpn-install.git ~/nyr-openvpn

Переходим туда: 

cd ~/nyr-openvpn/

Запускаем скрипт: 

bash openvpn-install.sh

И вы попадете в так называемый Инсталятор. Где нужно будет отвечать на вопросы или что-то вписывать. Для перехода на следующий этап установки жмите Enter. 

Первый делом, предложит ввести внешний IP адрес, но вероятнее всего скрипт сам его определит: 

IP address: 111.222.111.222

Следующий этап, выбрать протокол. Мы жамкали 1 и выбираю UDP.

Далее, выбираете порт. Я поставлю, например 14000.

После этого предложит выбрать DNS сервера. Выбор будет из Google, OpenDNS или текущих, которые на VPS и еще каких-то. Я выбираю OpenDNS, жму 3.

После этого предложит ввести имя клиента. Вводили "pp-runion". 

Далее начнется скачивание-утановка пакетов, генерация ключей, сертификатов и конфигурационных файлов.

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

То есть, сейчас конфиг лежит по адресу: 

/root/

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

Интересно, чего он там такого сгенерировал вам, посмотрим на конфиг pp-runion.ovpn: 

nano ~/pp-runion.ovpn

>>: (без ключей и сертификатов) 

client

dev tun

proto udp

sndbuf 0

rcvbuf 0

remote 111.222.111.222 14000

resolv-retry infinite

nobind

persist-key

persist-tun

remote-cert-tls server

cipher AES-256-CBC

comp-lzo

setenv opt block-outside-dns

key-direction 1

verb 3

<ca>

Все вроде бы нормально, да лучше auth SHA512 явно указать.

Поэтому добавим 

auth SHA512

Вот так: 

client

dev tun

proto udp

sndbuf 0

rcvbuf 0

remote 111.222.111.222 14000

resolv-retry infinite

nobind

persist-key

persist-tun

remote-cert-tls server

cipher AES-256-CBC

auth SHA512

comp-lzo

setenv opt block-outside-dns

key-direction 1

verb 3 

Обратите внимание, что скрипт уже запихнули фичу для предотвращения утечки DNS под клиент Windows: 

setenv opt block-outside-dns

Если у вас Linux или MacOS - эту строку лучше закомментировать. 

Теперь посмотрим на серверный конфиг server.conf: 

nano /etc/openvpn/server.conf

>>: 

port 14000

proto udp

dev tun

sndbuf 0

rcvbuf 0

ca ca.crt

cert server.crt

key server.key

dh dh.pem

tls-auth ta.key 0

topology subnet

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist ipp.txt

push "redirect-gateway def1 bypass-dhcp"

push "dhcp-option DNS 208.67.222.222"

push "dhcp-option DNS 208.67.220.220"

keepalive 10 120

cipher AES-256-CBC

comp-lzo

user nobody

group nogroup

persist-key

persist-tun

status openvpn-status.log

verb 3

crl-verify crl.pem 

Здесь также добавляем auth SHA512 (а то работать не будет, если на клиенте указан а на серве нет), делаем verb 0.

Также нужно проделать следующее.

Нужно закомментировать строку 

status openvpn-status.log

И добавить log: 

log /dev/null 2>&1

Где-то выше писал, зачем он нужен.

Получилось так: 

port 14000

proto udp

dev tun

sndbuf 0

rcvbuf 0

ca ca.crt

cert server.crt

key server.key

dh dh.pem

tls-auth ta.key 0

topology subnet

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist ipp.txt

push "redirect-gateway def1 bypass-dhcp"

push "dhcp-option DNS 208.67.222.222"

push "dhcp-option DNS 208.67.220.220"

keepalive 10 120

cipher AES-256-CBC

auth SHA512

comp-lzo

user nobody

group nogroup

persist-key

persist-tun

#status openvpn-status.log

log /dev/null 2>&1

verb 0

crl-verify crl.pem 

Клиенты OpenVPN под разные ОС

Поскольку OpenVPN не встроен по-умолчанию ни в одну популярную ОС, то требуется установить сторонее ПО - клиент OpenVPN. 

Windows.

Под Windows есть официальный клиент, называется OpenVPN GUI. 

Скачать его можно на офф. сайте OpenVPN ( не реклама ) 

Скачиваете, устанавливаете. Появится ярлык на раб. столе, после запуска - иконка в трее. 

Далее, помещаете ваш .ovpn файл в папку config, в установленной папке OpenVPN.

В общем, если устанавливать OpenVPN GUI по-умолчанию в папку Program Files, то адрес такой: 

C:\Program Files\OpenVPN\config

В эту папку кидаем конфиги .ovpn. 

Потом из трея можно запускать VPN. Все достаточно просто.

 

Linux.

На Линукс в репозиориях вашего дистрибутива пакет скорее всего будет называется "openvpn" (еще может openvpn-client), и ставится следующим образом: 

sudo apt-get install openvpn

Если у вас Debian-подобные дистрибутивы (Debian, Ubuntu, Mint).

Если у вас дистрибутив другой линейки - сами разберетесь как ставить. 

Работает это следующим образом. У вас есть .ovpn файл, далее вы в терминале вводите команду: 

sudo openvpn --config <путь до файла .ovpn>

где <путь до файла .ovpn>, собственно, путь до файла .ovpn. 

Или можете скормить файл network-manager ' у.

 

MacOS.

Под MacOS из клиентов OpenVPN я знаю только Tunnelblick.

Скачать его можно здесь. ( не реклама ) 

Устанавливается просто, требует права суперпользователя.

По-умолчанию будет отпрыать файлы с расширением .ovpn.

Будет иконка в трее, там конектимся.

Можно настроить, что бы коннектился к OpenVPN сразу при загрузке системы.

Когда соеденение обрывается с VPN, интернет пропадает. В этом случае нужно вручную отсоеденяться от VPN.

 

Android.

Официальный клиент OpenVPN Connect под Android доступен для скачивания на Google Play ( не реклама ) 

 

iOS.

Для iOS клиент скачиваем из AppStore. ( не реклама ) 

 

Клиенты, предоставляемые провайдером VPN.

Некоторые провайдеры предоставляеют свой собственный OpenVPN клиент под разные ОС и платформы.

Использовать их или нет, решать вам. Но это потенциально не очень безопасно.

 

Боремся с детектом OpenVPN

VPN может детектироваться конечным ресурсом (например сайт) какими-то хитро-выебанными способами.

Поэтому, если вам НЕ ПОХУЙ (а мне похуй, например), то читайте дальше.

Для начала можете читануть статью на хабре: Определяем пользователей VPN ( не реклама )

 

Заходим на browserleaks.com/ip ( не реклама ) 

И смотрим строку "TCP/IP OS Fingerprinting"

У меня определился OpenVPN. 

ЧТО ДЕЛАТЬ?

Если у вас, как у меня, конфиг UDP, то можно проделать следующее.

Мне помогает, если прописать 

mssfix 0

На клиенте .ovpn и сервере server.conf

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

Убедитесь, что вы вводите (*) необходимую информацию, где нужно
HTML-коды запрещены