Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
#Круги добра
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр 2121 год. Технологии шагнули далеко за пределы самых смелых ожиданий, но за большим прогрессом стоит великая жертва...

Far Orion: Новые миры

Ролевые, Мультиплеер, Мидкорные

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • Animalrescueed Animalrescueed 36 постов
  • Oskanov Oskanov 7 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
0 просмотренных постов скрыто
213
megavolt0
megavolt0
8 лет назад

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников (часть 2)⁠⁠

Первая часть статьи особого ажиотажа не вызвала, но после неё на меня подписалась 10 человек, а значит они ждут продолжения. 10 человек, это не мало. Поэтому продолжаем.


Первая часть.


Мы выполнили необходимый минимум подготовительных работ, наш сервер неплохо защищен от злонамеренных воздействий. Теперь пора сделать, для чего мы всё это затевали.

Немного теории, для понимания того, что мы сечас будем делать. VPN (Virtual Private Network) — виртуальная частная сеть. Идея в том, что мы строим свою сеть «поверх» других сетей.


Допустим вы решили зайти на запрещенный ресурс (да на любой ресурс). Какой маршрут вашего интернет трафика? В большинстве случаев схема такая:

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников (часть 2) Инструкция, VPN, Openvpn, VPS, Анонимность, Обход ограничений, Длиннопост

Безусловно, это очень упрощенная схема. Но для понимания процесса достаточна. Как видите, у провайдера есть некий-фильтр, который «просматривает» весь ваш трафик и принимает решения, пропустить или нет (настучать на вас или нет :) ). Фактически ваша точка выхода в интернет – это внешние маршрутизаторы вашего провайдера. Именно тут принимается решение, увидите вы тот или иной ресурс или нет.

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

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников (часть 2) Инструкция, VPN, Openvpn, VPS, Анонимность, Обход ограничений, Длиннопост

На наших личных устройствах (компьютер, смартфон, планшет и т.д.) будут установлены и настроены программы-клиенты для VPN сервера. На нашем VPS будет установлена и настроена программа-сервер VPN. Как только они соединятся между собой, появляется наш виртуальный зашифрованный канал поверх всех остальных каналов (красная пунктирная линия на рисунке). Теперь никто не знает, что содержится в трафике между нашими устройствами и нашим VPN сервером, весь трафик надёжно зашифрован. Фактически, теперь наша точка выхода в интернет – это наш VPS. Именно его IP-адрес будут видеть все те Интернет-ресурсы, на которые мы будем заходить. Теперь никакой товарищ майор не узнает, какие видосики вы смотрите, на какие сайты вы ходите и какие сообщения на форумах пишете. Да, если получить доступ к вашему VPS, можно узнать содержимое вашего трафика. Но ведь наш VPS в другой стране, надавить авторитетом на хостера не получится, у него пердставительств и имущества на территории нашей страны и нашего товарища майора пошлют. Нужно затевать полноценное расследование, привлекать международные соглашения, Интерпол, направлять обоснованный (причем обоснованный с точки зрения законодательства страны хостера) запрос. В общем, если вы не натворите чего-нибудь совсем плохого, никто ничего и не получит. Единственное, что от вас требуется: аккуратное обращение с ключами и паролями. Вернёмся к этому вопросу позже.


Хватит теории, переходим к практике.


У вас уже запущены и соединены с сервером PuTTY и WinCSP. Переходим к консоли PuTTY и выполняем следующие команды:

yum install wget -y
yum install unzip zip -y
yum install openvpn -y

Создадим папку для ключей установим её текущей. Для это выполним в консоли команды:

mkdir /etc/openvpn/keys
cd /etc/openvpn/keys

Для генерации ключей мы используем утилиту Easy-RSA. Для начала скачем её себе:

wget https://github.com/OpenVPN/easy-rsa/archive/master.zip

Распакуем:

unzip master.zip

Создадим файл с настройками из приложенного образца:

cp vars.example vars

Перейдем в папку с утилитой:

cd /etc/openvpn/keys/easy-rsa-master/easyrsa3

Свернём пока консоль и развернём WinCSP. Перейдём в папку /etc/openvpn/keys/easy-rsa-master/easyrsa3.


Примечание: если в правой панели WinCSP вы вдруг не видите каких-либо файлов или папок, которые там должны быть, нажмите кнопку обновления:

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников (часть 2) Инструкция, VPN, Openvpn, VPS, Анонимность, Обход ограничений, Длиннопост

Находим и открываем файл 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 "me@example.net"

#set_var EASYRSA_REQ_OU "My Organizational Unit"


и убираем в начале каждой символ #

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


set_var EASYRSA_REQ_COUNTRY "RU"

set_var EASYRSA_REQ_PROVINCE "Moscow"

set_var EASYRSA_REQ_CITY "Moscow"

set_var EASYRSA_REQ_ORG "RosComNadzor"

set_var EASYRSA_REQ_EMAIL "admin@rkn.ru"

set_var EASYRSA_REQ_OU "Otdel besnennogo printera"


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

Строчку


#set_var EASYRSA_KEY_SIZE 2048


превращаем в:


set_var EASYRSA_KEY_SIZE 4096


Строчку


#set_var EASYRSA_DIGEST "sha256"


превращаем в:


set_var EASYRSA_DIGEST "sha512"


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


Возвращаемся к консоли PuTTY. Создаем инфраструктуру публичных ключей (PKI, Public Key Infrastructure). Выполним команду:


./easyrsa init-pki
Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников (часть 2) Инструкция, VPN, Openvpn, VPS, Анонимность, Обход ограничений, Длиннопост

Easy-RSA отвечает нам, что создан каталог /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/

Не буду расписывать, что такое PKI. Про это есть отличная статься с картинками в Википедии.

Нам важно знать, что ключи создаются парами – закрытый и открытый. Для обмена с кем-то защищаемой информацией мы обмениваемся открытыми ключами. В данном случае у сервера будет свой закрытый ключ и открытые ключи клиентов. У клиентов свои закрытые ключи и открытый ключ сервера. А удостоверять подлинность ключей, будет созданный нами же удостоверяющий центр. Его корневой сертификат будет у всех участников обмена.


Создадим свой удостоверяющий центр (СА). По-хорошему, его бы надо создавать не здесь, а на какой-то отдельной машине и, в идеале, не подключенной к интернету. Но, в нашем частном случае, это чрезмерная паранойя. Не будем забывать, что наша задача просто выйти из-под регулирования законодательства своей страны. Если кто-то получит возможность покопаться в нашем сервере, он и так всё узнает. Поэтому не будем усложнять.


Выполним команду:

./easyrsa build-ca

Нас просят придумать пароль:

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников (часть 2) Инструкция, VPN, Openvpn, VPS, Анонимность, Обход ограничений, Длиннопост

Да-да, опять пароль. Требования к сложности примерно такие же, как и для пароля ключа SSH. Зачем этот пароль: если корневой сертификат вашего удостоверяющего центра попадёт в чужие руки, то любой сможет сгенерировать пользовательские сертификаты и подключиться к вашему VPN-серверу. Поэтому вы должны беречь от разглашения и закрытый ключ корневого сертификата (файл ca.key), и пароль к нему. Забывать этот пароль также не стоит. Восстановить его нельзя и придется заново создавать корневой сертификат и все пользовательские сертификаты. Не смертельно, но не приятно. В общем придумываем и вводим пароль. Нас попросят ввести его два раза. На следующий вопрос:

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников (часть 2) Инструкция, VPN, Openvpn, VPS, Анонимность, Обход ограничений, Длиннопост

просто жмём Enter (также будем поступать для всех остальных ключей). У нас появились файлы ca.crt (корневой сертификат. Он открытый, мы его будем передавать клиентам)

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников (часть 2) Инструкция, VPN, Openvpn, VPS, Анонимность, Обход ограничений, Длиннопост

и ca.key (закрытый ключ удостоверяющего центра, его нужно беречь от разглашения. Это самая ценная для вас вещь на вашем сервере).

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников (часть 2) Инструкция, VPN, Openvpn, VPS, Анонимность, Обход ограничений, Длиннопост

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

./easyrsa gen-req server nopass

На запрос ввести Common Name просто жмём Enter.

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников (часть 2) Инструкция, VPN, Openvpn, VPS, Анонимность, Обход ограничений, Длиннопост

Как видите, на выходе у нас два файла: server.key – это закрытый ключ сервера; server.req – это запрос нашему CA на удостоверение (подписывание) сертификата. Скормим запрос нашему CA:

./easyrsa sign-req server server

CA просит подтвердить, что мы в своём уме и действительно хотим подписать сертификат. Убедим его в этом: наберём yes и нажмём Enter.

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников (часть 2) Инструкция, VPN, Openvpn, VPS, Анонимность, Обход ограничений, Длиннопост

Теперь введём пароль от нашего закрытого ключа CA

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников (часть 2) Инструкция, VPN, Openvpn, VPS, Анонимность, Обход ограничений, Длиннопост

И вот CA создал подписанный открытый ключ нашего сервера /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/issued/server.crt

А теперь мы сделаем очень нужную штуку. Мы создадим ключ Диффи-Хелмана. Этот ключ защитит наш трафик от расшифровки даже в случае похищения ключей сервера и клиентов. Т.е. если товарищ майор записывал весь ваш шифрованный трафик, скрипя зубами от досады, что не может понять, что ж такое вы делаете. А потом он вдруг заполучит все ваши ключи, то он всё равно не сможет расшифровать тот трафик, который у него записан. Вот такая вот магия математики. Берегите математиков, они умные и защищают нас от товарища майора.

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

./easyrsa gen-dh

и идём пить чай ибо процесс это не быстрый. А учитывая, что процессор у VPS весьма слабенький, генерация может занять до 15 минут (а может и больше). В общем ждите, магия быстро не делается.

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников (часть 2) Инструкция, VPN, Openvpn, VPS, Анонимность, Обход ограничений, Длиннопост

Когда генерация завершится, мы получим файлик /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/dh.pem

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

Выполним команду:

./easyrsa gen-crl

И получим файл /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/crl.pem. В нём и будет список отозванных сертификатов. Отзывать сертификаты мы потренируемся позже, пока оставим так.


Теперь подкинем VPN-серверу все необходимые ключи. Для этого выполним несколько команд:

cp pki/ca.crt /etc/openvpn/
cp pki/dh.pem /etc/openvpn/
cp pki/crl.pem /etc/openvpn/
cp pki/issued/server.crt /etc/openvpn/
cp pki/private/server.key /etc/openvpn/

Получится вот так:

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников (часть 2) Инструкция, VPN, Openvpn, VPS, Анонимность, Обход ограничений, Длиннопост

И сделаем текущей папку VPN-сервера:

cd /etc/openvpn

Еще не много магии для усиления безопасности. Сделаем HMAC (ищите описание на Хабре и в Википедии). Выполним команду:

openvpn --genkey --secret ta.key

Рядом с нашими ключами в папке /etc/openvpn будет создан файл ta.key. Его мы также будем отдавать клиентам.

Теперь с помощью WinCSP поправим права на файлы: ca.crt, crl.pem, dh.pem, server.crt. Сделаем для всех 0644.

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников (часть 2) Инструкция, VPN, Openvpn, VPS, Анонимность, Обход ограничений, Длиннопост

А для файлов server.key, ta.key установим права 0600 (по-идее они сразу такие и есть, но на всякий случай проверьте).


В принципе VPN-сервер можно уже сконфигурировать и запускать, но нам пока нечем к нему подключиться. Поэтому создадим ключи для клиента. Вернёмся в папку утилиты Easy-RSA:

cd /etc/openvpn/keys/easy-rsa-master/easyrsa3

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

./easyrsa gen-req client_name nopass

Для подписания запроса и создания открытого ключа команда:

./easyrsa sign-req client client_name

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


Обратите внимание на следующее:


- ключ nopass вы можете использовать, а можете не использовать. С ключом nopass вам не потребуется придумывать пароль для закрытого ключа клиента. Тогда, при подключении к VPN-серверу, и вводить его не придётся. Но в этом случае любой, кто завладеет ключом клиента, сможет подключиться к вашему VPN-серверу. Однако, вводить каждый раз пароль не удобно. Ищите компромисс. Например, на домашнем компьютере ключ без пароля, на рабочем – с паролем. Если ваше переносное устройство не имеет дополнительных мер защиты (шифрование накопителя, контроль доступа и пр.) и есть риск потерять устройство, или иным образом скомпрометировать – сделайте ключ с паролем.


- client_name это произвольное, понятное вам название того клиента, который будет им пользоваться. Например, для домашнего компьютера можно сделать имя my_home_pc. Тогда команды будут выглядеть так:

./easyrsa gen-req my_home_pc nopass
./easyrsa sign-req client my_home_pc

А для своего смартфона сделать ключи с именем my_smartphone и с защитой паролем. Тогда команды будут выглядеть так:

./easyrsa gen-req my_smartphone
./easyrsa sign-req client my_smartphone

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


Для данной статьи я сделаю тестовые ключи для компьютера и смартфона с именами test_pc и test_smart


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


Клиенту нужно будет передать следующие файлы:

- сгенерированную пару ключей клиента (в моём случае test_pc.crt и test_pc.key)

- открытый сертификат CA (ca.crt)

- ta.key


Никаких других ключей и сертификатов у клиента быть не должно!


Ну вот, все ключи у нас есть. Давайте уже конфигурировать и запускать.

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


port 443

proto udp

dev tun

ca ca.crt

cert server.crt

key server.key

dh dh.pem

crl-verify crl.pem

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist ipp.txt

push "redirect-gateway def1"

push "dhcp-option DNS 8.8.8.8"

push "dhcp-option DNS 8.8.4.4"

remote-cert-eku "TLS Web Client Authentication"

keepalive 10 120

tls-server

tls-auth ta.key 0

tls-timeout 120

auth SHA512

cipher AES-256-CBC

comp-lzo

max-clients 10

user nobody

group nobody

persist-key

persist-tun

status openvpn-status.log

log openvpn.log

verb 4


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


Сохраним файл. Проверим, чтобы права были 0644.

Теперь пробуем запустить сервер. В консоли команда:

systemctl start openvpn@server

Проверяем, что запустился.

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

systemctl status -l openvpn@server

Если всё хорошо, то это будет выглядеть вот так:

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников (часть 2) Инструкция, VPN, Openvpn, VPS, Анонимность, Обход ограничений, Длиннопост

Но может быть и плохо:

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников (часть 2) Инструкция, VPN, Openvpn, VPS, Анонимность, Обход ограничений, Длиннопост

Смотрим лог (/etc/openvpn/openvpn.log) и видим там, например:


us=64300 ERROR: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)

us=64310 Exiting due to fatal error


Т.е. не найден TUN/TAP драйвер. Об этом я писал в начале статьи. В случае моего текущего хостера это решается просто. В письме (смотри раздел про аренду VPS), которое содержало IP-адрес сервера и пароль на SSH, была дана ссылка на панель управления сервером и логин-пароль к ней. Заходим в эту панель и видим:

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников (часть 2) Инструкция, VPN, Openvpn, VPS, Анонимность, Обход ограничений, Длиннопост

Так включим же его. После включения сервер уйдет в перезагрузку, придется закрыть PuTTY и WinCSP, открыть их заново и подключиться к серверу. Возможно, в случае другого хостера, для включения TUN/TAP вам придется написать в тех.поддержку.

Еще раз пробуем запустить службу и проверить её состояние. Всё должно стать хорошо. Если не стало, смотрим логи. Тут универсального рецепта нет. Например, может мешать SELinux (это такая система безопасности Linux). Чиним командой:

semanage port -a -t openvpn_port_t -p udp 443

И опять пробуем запустить службу и проверить состояние.


Еще проверим, что служба VPN-сервера слушает нужный порт (у нас 443):

netstat -tulnp | grep 443

Если напишет что-то типа: -bash: netstat: command not found, то выполняем команду:

yum install net-tools -y

И потом снова:

netstat -tulnp | grep 443

Должно быть так:

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников (часть 2) Инструкция, VPN, Openvpn, VPS, Анонимность, Обход ограничений, Длиннопост

Убедившись, что служба стартует без проблем, добавляем её в автозагрузку:

systemctl enable openvpn@server

Ну и отключим логи. На всякий случай ;) Для этого откроем для редактирования файл /etc/openvpn/server.conf и строчку:


log openvpn.log


переделываем в:


log /dev/null


сохраняем и закрываем. Делаем перезапуск службы, чтобы применился новый конфиг:


systemctl restart openvpn@server

И удаляем файл /etc/openvpn/openvpn.log


Нет у нас логов, товарищ майор.


Пришла пора подключиться к нашему серверу. Речь пойдет о компьютерах под управлением операционной системы семейства Windows. Если у вас Linux, то я не пойму, зачем вы всё это читаете.


Скачиваем клиента.


И устанавливаем. В процессе убираем галочку с OpenVPN Service

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников (часть 2) Инструкция, VPN, Openvpn, VPS, Анонимность, Обход ограничений, Длиннопост

Остальное не трогаем.

После установки открываем папку C:\Program Files\OpenVPN\config\ и создаем в ней файл client_name.ovpn


В данном случае client_name это произвольное имя, можете сделать его совпадающим с именем ключей.

Содержимое файла:


client

dev tun

proto udp

remote 123.123.123.123 443

resolv-retry infinite

nobind

block-outside-dns

persist-key

persist-tun

mute-replay-warnings

remote-cert-eku "TLS Web Server Authentication"

remote-cert-tls server

tls-client

tls-auth "C:\\Program Files\\OpenVPN\\config\\ta.key" 1

auth SHA512

ca "C:\\Program Files\\OpenVPN\\config\\ca.crt"

cert "C:\\Program Files\\OpenVPN\\config\\test_pc.crt"

key "C:\\Program Files\\OpenVPN\\config\\test_pc.key"

cipher AES-256-CBC

comp-lzo

verb 3


Вместо 123.123.123.123 вписываем IP-адрес своего сервера. Вместо test_pc.crt, test_pc.key вписываем правильные названия своих клиентских ключей. В общем-то ключи совсем не обязательно должны лежать в папке C:\Program Files\OpenVPN\config\, даже было бы намного лучше, чтобы они здесь не лежали, а находились на флешке и были всегда под контролем. Тогда путь выглядел бы примерно так:

ca "E:\\my_keys\\ca.crt"


Но мы не будем пока мудрить и сделаем так. Сохраняем файл.


При помощи WinCSP скопируем к себе на компьютер все необходимые ключи с сервера:

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников (часть 2) Инструкция, VPN, Openvpn, VPS, Анонимность, Обход ограничений, Длиннопост

И запускаем OpenVPN GUI (кнопка Пуск -> OpenVPN -> OpenVPN GUI)

Так как у вас всего один файл .ovpn в папке C:\Program Files\OpenVPN\config\, то соединение должно начаться автоматически. Появится окно с логом соединения:

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников (часть 2) Инструкция, VPN, Openvpn, VPS, Анонимность, Обход ограничений, Длиннопост

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

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников (часть 2) Инструкция, VPN, Openvpn, VPS, Анонимность, Обход ограничений, Длиннопост

Щелкнув правой кнопкой мыши на этом значке, можно увидеть меню управления клиентом (отключиться, подключиться, настройка).

Если значок желтый, то клиент в процессе установление соединения.

Если серый, клиент не подключен к VPN-серверу.


Если подключиться не получается, проверяйте настройки файрволла сервера, как это написано выше (в предыдущей части статьи).


Проверяем, что теперь наш видимый в интернете IP-адрес совпадает с IP-адресом сервера. Например, по пройдем по адресу http://myip.ru/ и посмотрим.


Всё, ваша личная VPN сеть работает, товарищ майор больше не может отслеживать ваш трафик.

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников (часть 2) Инструкция, VPN, Openvpn, VPS, Анонимность, Обход ограничений, Длиннопост
Показать полностью 23
[моё] Инструкция VPN Openvpn VPS Анонимность Обход ограничений Длиннопост
115
436
megavolt0
megavolt0
8 лет назад

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников⁠⁠

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


Многие из вас в гневе восклинут, что это боян и статей про VPN и Squid миллион! Да это так, но тем не менее, считаю данный материал актуальным и вот почему.

Большинство инструкций по настройке VPN сервера не описывают:

- где взять виртуальную машину для его установки;

- как выбрать хостинг, какие требования к VPS и хостингу;

- где взять консоль;

- как попасть в консоль;

- как попасть в консоль по сертификату и защитить сервер от брутфорса;

- как обойтись без консоли (в частности для редактирования файлов), а то ничего не понятно;

- как защитить сервер, настроив файрволл;

- как обойти ограничения корпоративных сетей на «левые» порты и протоколы.


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


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


Есть платные VPN сервисы, есть платные прокси и у них есть много неоспоримых преимуществ (множество IP, возможность менять IP и страну на ходу, легкое подключение). Но есть и очевидные недостатки:

- в первую очередь цена. Свой VPS обойдется значительно дешевле.

- кто-то, кто создал сервис, знает о вас всё.

- IP адреса таких платных сервисов часто банятся как на уровне провайдеров, так и на уровне интернет-ресурсов.


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

1. Выбрать хостера и арендовать VPS.

2. Настроить безопасный вход по SSH с использованием сертификатов.

3. Настроить файрволл своего VPS.

4. Установить и настроить VPN сервер. Настроить все свои устройства для подключения к этому серверу (в том числе смартфоны);

5. Установить и настроить прокси-сервер Squid и настроить подключение к нему


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


А еще сможете в компании так невзначай сказать: "Что, вы не можете зайти на порн-хаб? Элементарно! Я вот поднял свой VPN сервер c проксированием  в Нидерландах. Никакие ограничения на меня не действуют, хожу в интернет по зашифрованному каналу".

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников Инструкция, VPN, Squid, VPS, Анонимность, Обход ограничений, Длиннопост

Выбор хостинга и аренда VPS


Для начала нам понадобиться виртуальный сервер (VPS). В мире много… нет, не так. В мире ОЧЕНЬ МНОГО хостеров, готовых предложить VPS за небольшие деньги. Конкуренция велика и это хорошо. Чтобы выбрать именно то, что нам нужно, определим требования:


1. Поддержка tun/tap (Что это такое, ищите в Википедии. Некоторые хостеры эту технологию не предоставляют вообще, некоторые по запросу, некоторые сразу. Уточнить можно в службе продаж или в службе тех. поддержки хостера.)

2. Как можно дешевле. Ну тут понятно.

3. Датацентр хостера должен быть как можно ближе к вам (меньше пинг).

4. Желательно, чтобы он не попадал под юрисдикцию российских спецслужб и никак от них не зависел. Т.е. у хостера не должно быть представительств или датацентров в России. Мы же не хотим, чтобы кто-то «слушал» наш трафик или лез в нашу личную жизнь. Вернее, лезть то будут, но лично меня не парит ели это будут спецслужбы Нидерландов, Франции или Германии, но я исключительно против российских спецслужб.

5. Нам не важен размер жесткого диска VPS и скорость его работы. Т.е. нам всё равно, HDD будет SSD. Да и места потребуется настолько мало, что этим параметром можно пренебречь.

6. А вот оперативной памяти я бы не рекомендовал меньше 512 МБ.

7. Сетевой трафик VPS должен быть либо не ограничен, либо иметь такое ограничение, в которое мы не упремся (по опыту от 512 ГБ в месяц и выше).

8. Скорость сетевого интерфейса не менее 100 МБ/сек.

9. Ну и сам хостер должен быть с более-менее приличным сроком нахождения на рынке, а не какой-то реселлер однодневка.


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


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


Итак, нашли подходящего хостера и берём в аренду VPS.

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников Инструкция, VPN, Squid, VPS, Анонимность, Обход ограничений, Длиннопост

Если при настройке услуги хостер просит указать доменное имя и DNS, пишем любую лабуду. Нам это, в данном случае, не важно. Операционную систему я выбрал CentOS 7 x64 и для неё будут все дальнейшие инструкции. Вы вольны выбрать любой дистрибутив, принципиальных отличий нет.

При первоначальной регистрации и оплате хостер может запросить некоторые ваши документы: фото удостоверения личности (паспорта); фото банковской карты, с которой проводится оплата (естественно с закрашенными начальными цифрами номера и закрашенным CVC-кодом); копию последней платежки за коммунальные услуги с различимым адресом проживания. Это нормальная ситуация. Хотят убедится, что вы не мошенник и не пользуетесь чужой картой. Могут и не запросить. Тут как повезёт.


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

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников Инструкция, VPN, Squid, VPS, Анонимность, Обход ограничений, Длиннопост

Как видим нам дали IP адрес нашего арендованного VPS (Main IP), логин (Username) и пароль (Root Password) для входя по SSH. Также дали ссылку на панель управления сервером и логин-пароль для входа в панель. Из панели, как правило, можно включить/выключить/перезагрузить сервер, сбросить пароль root, посмотреть статистику сервера (использование памяти/процессора/трафика) и прочие базовые вещи.


Настройка SSH


Управлять нашим сервером мы будем через SSH-консоль. Да, есть множество решений графического интерфейса для управления linux-серверами, но это не наш путь. Во-первых, наш VPS очень базового уровня и его ресурсов если и хватит для работы графического интерфейса, то впритык. Во-вторых, практически для любого графического интерфейса потребуется Web-сервер и дополнительные открытые порты, что резко увеличивает уязвимость нашего сервера для атак злоумышленников. Ну и в-третьих, нам его один раз настроить и забыть.


Нам потребуется сам SSH-клиент, а также утилиты для генерации ключей. Качаем и распаковываем архив https://the.earth.li/~sgtatham/putty/latest/w32/putty.zip

Из архива нужны будут сам клиент putty.exe и утилита генерации ключей puttygen.exe. Также можно скачать их по-отдельности на этой странице: https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.ht...


Еще нам понадобиться WinSCP. Очень удобная штука, особенно для тех, кто не любит работать в консоли. Качаем здесь https://winscp.net/download/files/201705310908cd3ce105c1c1ca... и распаковываем архив. Для запуска используем WinSCP.exe


Теперь все готово. Начинаем настраивать.


Для начала подключимся по SSH по паролю и убедимся, что наш сервер работает. Для этого запускаем putty.exe

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников Инструкция, VPN, Squid, VPS, Анонимность, Обход ограничений, Длиннопост
Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников Инструкция, VPN, Squid, VPS, Анонимность, Обход ограничений, Длиннопост

в поле Host Name вписываем полученный по почте IP-адрес и жмем кнопку Open (если появится окно PuTTY Security, жмем «Да») и, в черном окне,  вводим логин (root) и пароль из письма.

Маленький лайфхак: сейчас вам придётся в консоль вводить длинный и не удобный пароль, а в дальнейшем длинные и неудобные команды. Можно сократить ручной труд и просто копировать вставлять. Копировать как обычно, а для вставки переводим курсор на черное окно putty и жмем правую кнопку мыши. Всё. То, что копировали, будет вставлено. И пароль тоже вставиться. Этого будет не видно, но ничего страшно, после нажатия правой кнопки мыши сразу нажмите Enter. При копировании будьте аккуратны, выделяя текст для копирования не зацепите лишние пробелы.

login as: root
root@123.123.123.123's password:
[root@vps12345~]#

Чтобы завершить ввод команды, нужно нажать Enter. Например, добавим нужный репозиторий и обновим наш сервер. Вводим (или копируем отсюда) следующую команду и жмем Enter.

yum install epel-release –y

Результат будет выглядеть примерно так:

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников Инструкция, VPN, Squid, VPS, Анонимность, Обход ограничений, Длиннопост

Теперь обновим сервер:

yum update –y

Свернём пока консоль, она нам понадобиться чуть позже. Попробуем подключиться к серверу в WinSCP. Запускаем WinSCP.exe.

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников Инструкция, VPN, Squid, VPS, Анонимность, Обход ограничений, Длиннопост

Настраиваем параметры:

File protocol: SFTP

Host name: IP-адрес из письма

User name: root

Password: оставляем пустым

Жмём “Save”, в появившемся окне «ОК». Теперь слева, в списке, появилась запись вида root@[IP-адрес]. Дважды кликнем по ней. Появится окно с предупреждением, жмём Yes. Вводим пароль и WinSCP подключается.

Теперь мы видим две панели: слева файловую систему своего компьютера (диск С), а справа файловую систему VPS (обычно при первом входе бывает открыта папка /root). Обратите внимание: в правой панели сверху списка папок всегда будет символ папки со стрелочкой и двумя точками. Если его два раза кликнуть (или стрелками на клавиатуре переместить на него курсор и нажать Enter) вы перейдёте на уровень вверх. Например, сейчас сможете попасть в корень файловой структуры сервера. Выглядит это так:

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников Инструкция, VPN, Squid, VPS, Анонимность, Обход ограничений, Длиннопост

Свернём пока WinSCP и запустим puttygen.exe.

Сейчас мы создадим сертификаты для SSH-подключения. Ранее мы подключились по простому паролю. Использование пароля не безопасно: его можно перехватить или подобрать. Поэтому сделаем ключи и настроим наш сервер на подключение только с этими ключами.


Проверяем, что выбран тип ключа RSA, количество бит не менее 2048

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников Инструкция, VPN, Squid, VPS, Анонимность, Обход ограничений, Длиннопост

И жмём кнопку “Generate”. Теперь на время освоим роль биологического генератора случайных чисел: двигаем хаотично мышкой и(или) жмем хаотично кнопки на клавиатуре (желательно кнопки с буквами и цифрами, остальные не трогаем). Как только зелёная полоска доползет, закрытый ключ готов.

Придумываем для его защиты хороший пароль (Не менее 10 символов, латинские маленькие и большие буквы, хотя бы один спец-символ !@#$%^&*()<>,.:;”’). Пароль забывать нельзя, его никак не восстановить! Вводим этот пароль два раза:

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников Инструкция, VPN, Squid, VPS, Анонимность, Обход ограничений, Длиннопост

Жмем “Save public key” и сохраняем публичный ключ (даём ему имя public.pub и не забываем куда сохранили. Я создал папку test на диске С:, дальше буду использовать её). Жмём “Save private key” и сохраняем приватный ключ (даём ему имя private и сохраняем рядом с публичным). У нас должно получиться два файла: private.ppk и public.pub


Рuttygen можно закрывать, он нам больше не понадобиться. Возвращаемся к WinSCP. Слева находим папку с двумя указанными выше файликами, а справа открываем папку /tmp. Слева «становимся» на файл public.pub, нажимаем F5 (одна из ненужных кнопок в самом верхнем ряду клавиатуры) и ОК. Наш файлик копируется на сервер. Получится вот так:

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников Инструкция, VPN, Squid, VPS, Анонимность, Обход ограничений, Длиннопост

Возвращаемся к консоли PuTTY. Вводим команду:

ssh-keygen -i -f /tmp/public.pub >> /root/.ssh/authorized_keys

Всё, наш сервер готов принимать подключения по сертификату. Закрываем (совсем, крестиком) окно PuTTY и снова запускаем putty.exe. Создадим профиль для нашего сервера. Опять в поле “Host Name” вписываем IP-адрес сервера. Справа, в списке находим пункт Connection -> Data и в поле “Auto-login username” вписываем root. Справа в списке находим пункт Connection -> SSH -> Auth находим поле “Private key file for authentication:” и жмём кнопу “Browse …”. Указываем путь на приватный ключ (в моём случае C:\test\private.ppk)

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников Инструкция, VPN, Squid, VPS, Анонимность, Обход ограничений, Длиннопост

Слева в списке выбираем пункт Session, в поле “Saved Session” вписываем любое имя профиля (например, my_vpn) и жмем “Save”. Ниже в списке появится строчка с этим именем. Щелкнем её двойным кликом. Появится консоль и попросит ввести пароль от приватного ключа (вы ведь его не забыли):

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников Инструкция, VPN, Squid, VPS, Анонимность, Обход ограничений, Длиннопост

Вводим его, жмём Enter. Если все сделали правильно, мы авторизуемся. Отлично. Теперь настроим WinSCP. Закроем его окно (крестиком) и вновь запустим wincsp.exe. У нас есть уже сохраненный профиль, просто отредактируем его. Выберем профиль («встать» на него в списке слева) и нажмём кнопку Edit, а затем кнопку Advanced… В появившемся окне слева, в списке, выбираем пункт SSH -> Authentication. Возле поля “Private key file” жмем кнопку с тремя точками и указываем путь на файл приватного ключа (также, как мы это делали для putty).

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников Инструкция, VPN, Squid, VPS, Анонимность, Обход ограничений, Длиннопост

Жмём ОК и в первоначальном окне жмём кнопку Save. Теперь двойным кликом по названию профиля подключаемся, вводим пароль от приватного ключа.

Теперь запретим нашему серверу принимать подключения по простому паролю. В правой панели WinCSP открываем папку /etc/ssh/ и находим файл sshd_config

Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников Инструкция, VPN, Squid, VPS, Анонимность, Обход ограничений, Длиннопост

Двойным кликом открываем его. Находим строчку, в которой написано

PasswordAuthentication yes

Именно так, без символа #, и меняем yes на no. Получится:

PasswordAuthentication no

Нажимаем сверху символ дискеты и закрываем окно редактирования файла. Если кто-то никогда не видел дискет, то просто закрываем окно редактирования файла и нажимаем Yes в окне с предупреждением. Закрываем окно WinSCP. В консоли PuTTY вводим команду

reboot

и закрываем окно крестиком. Сервер перезагружается. Обычно это занимает от 10 до 60 секунд. По истечении это времени снова запускаем putty.exe и wincsp.exe и подключаемся к серверу  в каждом из них.

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

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


Если статья будет интересна аудитории пикабу, то продолжу её публикацию согласно плана в начале.


Свободы и анонимности всем вам.

Показать полностью 15
[моё] Инструкция VPN Squid VPS Анонимность Обход ограничений Длиннопост
145
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии