Установка и настройка VPN-сервера на Linux
впн

Настройка vpn сервера linux

Настройка vpn сервера linux по пошаговой инструкции. Установка и настройка VPN-сервера на Linux для возможности подкючения стандартными средствами Windows

Настройка IPSEC

Для управления IPSec используется пакет strongswan — установим его командой:

apt-get install strongswan

Открываем конфигурационный файл для настройки ipsec:

vi /etc/ipsec.conf

Для config setup добавим:

config setup
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
protostack=netkey

* где virtual_private для нас является наиболее важным параметром и определяет приватные сети. В данном примере просто перечислены сети, зарезервированные под локальные — мы можем указать и другие.

… а также вставляем ниже:

conn l2tpvpn
type=transport
authby=secret
pfs=no
rekey=no
keyingtries=2
left=%any
leftprotoport=udp/l2tp
leftid=@l2tpvpnserver
right=%any
rightprotoport=udp/%any
auto=add

* где:

  • type — тип соединения. Возможны варианты tunnel (хост-хост, хост-подсеть или подсеть-подсеть); transport (хост-хост); passthrough (без обработки IPsec).
  • authby — способы аутентификации двух узлов. Возможны варианты secret (по паролю) или rsasig (цифровые подписи RSA).
  • pfs — расшифровывается как Perfect Forward Secrecy. Позволяет активировать совершенную секретность в канале ключей соединения.
  • rekey — перепроверить соединение, когда оно истекает.
  • keyingtries — число попыток, чтобы «договориться» о соединении или его замене.
  • left — IP-адрес левого участника (сервера). %any означает, что адрес может быть любой.
  • leftprotoport — определяет протокол и порт, на котором будет работать левая сторона (сервер). В данном примере указан UDP и порт 1701.
  • leftid — идентификация левого участника соединения.
  • right — IP-адрес правого участника (клиента). %any означает, что адрес может быть любой.
  • rightprotoport — определяет протокол и порт, на котором будет работать правая сторона (клиент). В данном примере указан UDP и любой порт.
  • auto — операция, которая должна запуститься автоматически при старте IPsec.

Создаем секретный ключ — для этого открываем на редактирование файл:

vi /etc/ipsec.secrets

… и добавляем:

%any %any : PSK «my_key_password»

* в данном примере мы устанавливаем общий пароль my_key_password для соединений с любого IP.

Разрешаем автозапуск strongswan и перезапускаем службу:

systemctl enable strongswan

systemctl restart strongswan

L2TP

Устанавливаем сервер L2TP:

apt-get install xl2tpd

Открываем файл настройки сервера:

vi /etc/xl2tpd/xl2tpd.conf

Добавляем:

[global]
port = 1701
access control = no
ipsec saref = yes
force userspace = yes
auth file = /etc/ppp/chap-secrets
[lns default]
ip range = 176.16.10.10-176.16.10.200
local ip = 176.16.10.1
name = l2tpserver
pppoptfile = /etc/ppp/options.xl2tpd
flow bit = yes
exclusive = no
hidden bit = no
length bit = yes
require authentication = yes
require chap = yes
refuse pap = yes

где:

  • port — порт UDP, на котором работает VPN. По умолчанию, 1701.
  • access control — принимать или нет запросы только от клиентов с определенными IP, перечисленными в настройках клиентов.
  • ipsec saref — указывает использовать или нет ipsec Security Association, позволяющий отслеживать несколько клиентов с одинаковыми IP-адресами.
  • force userspace — повышает производительность за счет декапсуляции пакетов L2TP.
  • auth file — путь к файлу аутентификации.
  • ip range — диапазон адресов, которые назначаются подключенным клиентам.
  • local ip — IP-адрес сервера в сети VPN.
  • name — имя сервера для процесса согласования.
  • pppoptfile — путь к файлу с настройкой pppd.
  • flow bit — позволяет добавлять в пакеты порядковые номера.
  • exclusive — если поставить в yes, сервер разрешит только одно соединение с клиентом.
  • hidden bit — скрывать или нет AVP.
  • length bit — использовать ли бит длины, указывающий полезную нагрузку.
  • require authentication — требовать ли аутентификацию.
  • require chap — требовать ли аутентификацию PPP по протоколу CHAP.
  • refuse pap — требовать ли аутентификацию PPP по протоколу PAP.

Разрешаем автозапуск vpn-сервера и перезапускаем его:

systemctl enable xl2tpd

systemctl restart xl2tpd

PPP

Открываем на редактирование конфигурационный файл:

vi /etc/ppp/options.xl2tpd

Добавляем:

noccp
auth
crtscts
mtu 1410
mru 1410
nodefaultroute
lock
noproxyarp
silent
modem
asyncmap 0
hide-password
require-mschap-v2
ms-dns 77.88.8.8
ms-dns 8.8.8.8

Создаем пользователя. Для этого открываем файл:

vi /etc/ppp/chap-secrets

И добавляем:

«user1» l2tpserver «password1» «172.16.10.10»
«user2» l2tpserver «password2″ *

* формат записи — <логин> <имя сервиса=»»> <пароль>Перезапускаем xl2tpd:

systemctl restart xl2tpd

Настройка клиента

В параметрах сети и Интернет в разделе VPN создаем новое соединение:

Создание нового VPN соединения

Задаем настройки:

Настройка нового VPN соединения

* где:

  • Имя подключения — произвольное имя.
  • Имя или адрес сервера — адрес сервера VPN, к которому мы будем подключаться.
  • Тип VPN — для нашего случая, выбираем L2TP/IPsec с предварительным ключом.
  • Общий ключ — ключ, который мы задали в файле /etc/ipsec.secrets.
  • Тип данных для входа — выбираем пользователь и пароль.
  • Имя пользователя и пароль — логин и пароль, которые мы задали в файле /etc/ppp/chap-secrets.

Доступ в Интернет и локальную сеть

После подключения к сети VPN мы не сможем ни выйти в Интернет, ни подключиться к узлам локальной сети. Чтобы это исправить, открываем на редактирование файл:

vi /etc/sysctl.d/99-sysctl.conf

… и добавляем строку:

net.ipv4.ip_forward=1

* мы разрешили форвард сетевых запросов и настроили сервер в качестве шлюза.

После применяем настройку:

sysctl -p /etc/sysctl.d/99-sysctl.conf

Добавляем правило в iptables:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

* данное правило включает маскарадинг на интерфейсе eth0. Вам необходимо подставить в команду значение своего сетевого адаптера.

В случае с единым сетевым интерфейсом больше ничего делать не потребуется — Ubuntu начнет работать как Интернет-шлюз.

В случае с несколькими сетевыми адаптерами, настраиваем сетевой экран:

iptables -A FORWARD -i eth1 -o eth0 -m state —state RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

* предполагается, что eth1 используется для внутренней сети, а eth0 — внешней.

Диагностика проблем

Описанная выше настройка не предполагает наличие лога. Для этого открываем конфигурационный файл для ppp:

vi /etc/ppp/options.xl2tpd

Добавим:


logfile /var/log/xl2tpd/xl2tpd.log
debug

Создадим каталог для лога:

mkdir /var/log/xl2tpd

Перезапускаем сервис xl2tpd:

systemctl restart xl2tpd

Пробуем подключиться к серверу — в случае наличия проблем, наблюдаем за логом:

tail -f /var/log/xl2tpd/xl2tpd.log

Как добавить или удалить пользователя VPN на Linux

Чтобы создать нового пользователя VPN или обновить существующего пользователя VPN новым паролем, загрузите и используйте сценарий add_vpn_user.sh, используя следующую команду wget.

$ wget -O add_vpn_user.sh https://raw.githubusercontent.com/hwdsl2/setup-ipsec-vpn/master/extras/add_vpn_user.sh $ sudo sh add_vpn_user.sh ‘username_to_add’ ‘user_password’Чтобы удалить пользователя VPN, скачайте и используйте скрипт del_vpn_user.sh.

$ wget -O del_vpn_user.sh https://raw.githubusercontent.com/hwdsl2/setup-ipsec-vpn/master/extras/del_vpn_user.sh $ sudo sh del_vpn_user.sh ‘username_to_delete’

Как обновить Libreswan на Linux

Вы можете обновить установку Libreswan с помощью скрипта vpnupgrade.sh или vpnupgrade_centos.sh.

Обязательно отредактируйте переменную SWAN_VER на версиию которую вы хотите установить в скрипте.

—————- На CentOS/RHEL —————- # wget https://git.io/vpnupgrade-centos -O vpnupgrade.sh && sh vpnupgrade.sh —————- На Debian and Ubuntu —————- # wget https://git.io/vpnupgrade -O vpnupgrade.sh && sudo sh vpnupgrade.sh

Как удалить VPN-сервер на Linux

Чтобы удалить установку VPN, выполните следующие действия.

На RHEL / CentOS

# yum remove xl2tpdЗатем откройте файл конфигурации /etc/sysconfig/iptables, удалите ненужные правила, отредактируйте файлы /etc/sysctl.conf и/etc/rc.local и удалите строки после комментария #Added by hwdsl2 VPN script в обоих файлах.

На Debian / Ubuntu

$ sudo apt-get purge xl2tpdЗатем отредактируйте файл конфигурации /etc/iptables.rules и удалите все ненужные правила.

Кроме того, отредактируйте /etc/iptables/rules.v4, если он существует.

Затем отредактируйте файлы /etc/sysctl.conf и /etc/rc.local, удалите строки после комментария #Added by hwdsl2 VPN script в обоих файлах.

Не удаляйте exit 0, если запись существует.

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

# rm -f /etc/ipsec.conf* /etc/ipsec.secrets* /etc/ppp/chap-secrets* /etc/ppp/options.xl2tpd* /etc/pam.d/pluto /etc/sysconfig/pluto /etc/default/pluto # rm -rf /etc/ipsec.d /etc/xl2tpdНа этом этапе ваш собственный VPN-сервер запущен и работает.

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

1. Установка пакетов

На обоих машинах должен быть установлен OpenVPN, это довольно популярная программа, поэтому вы можете установить ее из официальных репозиториев. Также нам понадобится Easy-RSA для работы с секретными ключами. Для установки программ в Ubuntu используйте такую команду:

sudo apt install openvpn easy-rsa

Оба пакеты должны быть установлены как на сервере, так и на клиенте. Они понадобятся для настройки программы. Первый этап статьи установка и настройка openvpn завершен.

2. Настройка центра сертификации

Первое что нужно сделать, это создать правильную инфраструктуру для генерации открытых ключей на сервере. Сервером мы считаем ту машину, к которой будут подключаться пользователи. Обратите внимание, что все секретные ключи должны находится в надежном месте. В OpenVPN открытый ключ называется сертификатом и имеет расширение .crt, а закрытый ключ так и называется ключом, его расширение — .key. Обслуживать всё это мы будем с помощью набора скриптов Easy-RSA.

Для того чтобы после обновления системы все ваши сертификаты и настройки не были стёрты, надо скопировать набор скриптов из каталога /usr/share/easy-rsa куда-нибудь, например, в /etc/openvpn/:

sudo mkdir /etc/openvpn/easy-rsa

Затем скопируем в эту папку все необходимые скрипты easy-rsa:

sudo cp -R /usr/share/easy-rsa /etc/openvpn/

Далее нам нужно создать центр сертификации в этой папке. Для этого сначала перейдите в неё:

cd /etc/openvpn/easy-rsa/

Эта команда создаст папку pki и и необходимые файлы для генерации сертификатов. Алгоритм шифрования можно настраивать, но с параметрами по умолчанию тоже всё будет работать:

sudo ./easyrsa init-pki

Следующая команда создаёт ключ центра сертификации, для него понадобится придумать пароль:

sudo ./easyrsa build-ca

Далее надо создать ключи Диффи-Хафмана, которые используются при обмене ключами между клиентом и сервером. Для этого выполните:

sudo ./easyrsa gen-dh

Команда создаст файл /etc/openvpn/easy-rsa/pki/dh.pem. Если вы хотите использовать TLS авторизацию, то вам ещё понадобится ключ Hash-based Message Authentication Code (HMAC). Он используется для предотвращения DoS атаки при использовании протокола UDP. Для его создания выполните:

sudo openvpn —genkey —secret /etc/easy-rsa/pki/ta.key

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

sudo ./easyrsa gen-crl

Будет создан файл ./pki/crl.pem.

3. Создание сертификатов сервера

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

sudo ./easyrsa build-server-full server nopass

Здесь server — это имя нашего сервера, а опция nopass отключает использование пароля. Теперь все полученные ключи надо скопировать в папку /etc/openvpn:

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

Все эти сертификаты надо будет использовать позже, при создании конфигурационного файла сервера.

4. Конфигурационный файл сервера

По умолчанию, конфигурационных файлов OpenVPN нет. Их нужно создать самостоятельно в зависимости от того, что планируется настраивать, сервер или клиент. Нужный файл конфигурации OpenVPN можно найти по адресу /usr/share/doc/openvpn/examples/sample-config-files/. Давайте создадим конфигурационный файл для сервера:

zcat /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf

Здесь вам нужно настроить несколько параметров. Самые важные — port и proto — порт и протокол, по которым будет работать программа;

port 1194
proto udp

Все созданные ключи нужно прописать в конфигурационном файле. Наши ключи хранятся по адресу /etc/openvpn, в самой папке с конфигурационным файлом, поэтому можно не прописывать к ним полный путь:

ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-auth ta.key 0

Настраиваем диапазон адресов для виртуальной сети, наш сервер будет доступен по первому из них — 10.8.0.1:

server 10.8.0.0 255.255.255.0

Следующая директива позволяет раздавать одним и тем же клиентам одни и те же IP адреса:

ifconfig-pool-persist /var/log/openvpn/ipp.txt

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

port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt
push «redirect-gateway def1 bypass-dhcp»
push «dhcp-option DNS 8.8.8.8»
push «dhcp-option DNS 8.8.8.8»
keepalive 10 120
tls-auth ta.key 0
cipher AES-256-CBC
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
verb 3
explicit-exit-notify 1

Настройка сервера OpenVPN завершена. Дальше необходимо запустить OpenVPN сервер. Это можно сделать прямо из командной строки, просто укажите адрес конфигурационного файла:

sudo openvpn /etc/openvpn/server.conf

Если вы увидели сообщение Initialization Sequence Completed значит всё хорошо и можно двигаться дальше. Если возникли ошибки, исправьте их, скорее всего вы сделали что-то не то в конфигурационном файле. После этого остановите запущенный сервер и запустите его снова уже с помощью systemd:

sudo systemctl start openvpn@server

5. Настройка форвардинга пакетов

Для того чтобы OpenVPN сервер мог предоставить клиентам доступ к внешней сети сервера надо включить параметр ip_forwarding. Для этого откройте файл для этого выполните такую команду:

sysctl -w net.ipv4.ip_forward=1

6. Настройка брандмауэра

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

ip -br a

В данном случае — это ens3. Поэтому правила iptables будут выглядеть вот так:

sudo iptables -I FORWARD -i tun0 -o ens3 -j ACCEPT
sudo iptables -I FORWARD -i ens3 -o tun0 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE

Настройка OpenVPN Ubuntu на сервере завершена, теперь осталось подготовить всё необходимое для подключения клиентов.

7. Создание сертификатов для клиента

Чтобы не скидывать ключи на сервер, а потом обратно, лучше создавать ключи на сервере. Для этого в той же директории /etc/openvpn/easy-rsa/ выполните такую команду:

sudo ./easyrsa build-client-full losst nopass

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

8. Конфигурационный файл клиента

Давайте создадим папку /etc/openvpn/clients, куда будем складывать все ключи и конфигурационные файлы клиентов:

sudo mkdir /etc/openvpn/clients

sudo mkdir /etc/openvpn/clients/losst

Затем перейдите в папку клиента:

cd /etc/openvpn/clients/losst

Затем туда надо скопировать ca.crt, ta.key и ключи клиента losst.crt и losst.key:

cp /etc/openvpn/easy-rsa/pki/ca.crt /etc/openvpn/clients/losst/
cp /etc/openvpn/easy-rsa/pki/ta.key /etc/openvpn/clients/losst/
cp /etc/openvpn/easy-rsa/pki/issued/losst.crt /etc/openvpn/clients/losst/
cp /etc/openvpn/easy-rsa/pki/private/losst.key /etc/openvpn/clients/losst/

Теперь давайте создадим конфигурационный файл клиента, его тоже можно скопировать из директории с примерами:

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ./losst.conf

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

ip -br a

Теперь можно открыть скопированный конфигурационный файл:

sudo vi ./losst.conf

Здесь обязательно надо заменить в этой строке my-server-1 на IP адрес сервера, который вы узнали ранее. Например:

remote 185.117.155.209 1194

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

client
dev tun
proto udp
remote 185.117.155.209 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert losst.crt
key losst.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-CBC
verb 3

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

Далее осталось всё это упаковать в архив и отправить клиенту. Но можно поступить по другому. Ключи для опций ca, cert, key и tls-auth можно упаковать в сам файл конфигурации. Например, для опции cert используется такой синтаксис:

——BEGIN CERTIFICATE——
текст_сертификата
——END CERTIFICATE——

Текст ключа надо взять из файла losst.crt между BEGIN CERTIFICATE и END CERTIFICATE. Например:

Для ca.crt всё будет выглядеть аналогично:

Для приватного ключа losst.key надо использовать немного другой синтаксис:

И для tls-auth тоже:

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

9. Проверка подключения

Вы можете скачать конфигурационный файл клиента с сервера, например, с помощью scp:

scp root@ip_сервера:/etc/openvpn/clients/losst/losst.conf /etc/openvpn/

Вам осталось запустить OpenVPN на этой машине используя этот конфигурационный файл:

openvpn /etc/openvpn/losst.conf

Готово, теперь все работает, если вы выполните ifconfig, то увидите что был добавлен интерфейс tun0. Также вы можете попробовать выполнить ping адреса 10.8.0.1, именно этот адрес мы настроили для нашего сервера OpenVPN, пакеты ping будут нормально отправляться.

ping 10.8.0.1

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

Чем хорош собственный VPN?

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

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

Мы будем отправлять трафик с устройств на собственный VPN-сервер с помощью программы OpenVPN, за счет чего скорость передачи данных будет ограничиваться только скоростью нашего интернета и сервера. Нам будет нужен VPS/VDS (виртуальный сервер), так как для работы репозитория OpenVPN подходят только такие типы серверов. VDS/VPS эмулирует работу реального физического сервера, у которого есть возможность установки своих операционных систем и ПО.

Теперь, когда разобрались с теорией, можем приступать к аренде VPS/VDS.

VPN Timeweb

Комьюнити теперь в Телеграм Подпишитесь и будьте в курсе последних IT-новостей Подписаться

Арендуем сервер

Для стабильного соединения нам нужен сервер с хорошим интернетом. Я использую самую простую конфигурацию «Danny» с системой Ubuntu 20.04, арендованную на Timeweb.Скорость интернета при данной конфигурации составляет 200 Мбит/с. Этого более чем достаточно для работы VPN на нем.

Центр сертификации

Установку узла VPN следует начать с настройки Сервера ЦС, который будет использоваться исключительно для создания и подписания, а также, для отзыва и выгрузки запросов на сертификаты.

Для начала на Сервере ЦС запустите установку утилиты easy-rsa:

$ sudo apt update $ sudo apt install easy-rsa

После чего, необходимо создать каталог ~/easy-rsa:

$ mkdir ~/easy-rsa

Создать ссылку:

$ ln -s /usr/share/easy-rsa/* ~/easy-rsa/И установить соответствующие права:

$ chmod 700 /home/Your-user/easy-rsa

После чего, запустите на исполнение скрипт easyrsa:

$ cd ~/easy-rsa $ ./easyrsa init-pkiСоздание директории PKIТаким образом, вы создали директорию “инфраструктуры открытых ключей” (Public Key Infrastructure или сокращённо PKI).

Теперь всё готово для создания Центра Сертификации, а значит, пора переходить к созданию секретного ключа и сертификата. Для этого создайте файл vars. Он должен располагаться в директории ~/easy-rsa. Если вы используете редактор nano, наберите:

$ sudo nano ~/easy-rsa/vars

Скопируйте в этот файл следующий текст:

set_var EASYRSA_REQ_COUNTRY    «RUS» set_var EASYRSA_REQ_PROVINCE   «Moscow» set_var EASYRSA_REQ_CITY       «Moscow City» set_var EASYRSA_REQ_ORG        «Our Company Name» set_var EASYRSA_REQ_EMAIL      «sysadmin@company.ru» set_var EASYRSA_REQ_OU         «LLC» set_var EASYRSA_ALGO           «ec» set_var EASYRSA_DIGEST         «sha512″В этих строках необходимо отредактировать значения, которые относятся к вашей закрытой сети, при этом, не оставляйте пустых значений. Перед выходом из файла его нужно сохранить (для этого в nano нажмите Ctrl+X, затем Y и Enter).

Далее, запустите скрипт easyrsa в командной строке:

$ ./easyrsa build-ca

Здесь необходимо будет ввести парольную фразу, которую впоследствии нужно вводить для получения доступа к вашему ЦС при совершении операций с сертификатами.

Выполнение скрипта easyrsaТакже система предложит вам ввести Common Name, которое представляет собой обозначение вашего ЦС. Вы можете ввести любую символьную строку или принять дефолтное имя нажав Enter.

CN - настройка OpenVPN ServerФайл ca.crt – это открытый ключ ЦС. Он будет использоваться клиентами и серверами для проверки при авторизации.

Теперь ваш центр сертификации подготовлен к работе.

OpenVPN и Easy-RSA

На Сервере VPN необходимо запустить установку пакета OpenVPN и утилиты Easy-RSA:

$ sudo apt update $ sudo apt install openvpn easy-rsa

Далее, необходимо создать каталог ~/easy-rsa:

$ mkdir ~/easy-rsa

Создайте ссылку:

$ ln -s /usr/share/easy-rsa/* ~/easy-rsa/И установите соответствующего владельца на эту папку с соответствующими правами:

$ sudo chown Your-user ~/easy-rsa $ chmod 700 ~/easy-rsa

PKI для OpenVPN

На этом шаге нужно будет создать директорию на Сервере VPN, которая будет использоваться для управления запросами создаваемых сертификатов.

Сначала создайте файл vars в директории ~/easy-rsa, например, с помощью редактора nano:

$ sudo nano ~/easy-rsa/vars

Скопируйте в него следующее:

set_var EASYRSA_ALGO «ec»set_var EASYRSA_DIGEST «sha512″Сохраните файл и закройте его (в nano для этого нажмите Ctrl+X, затем Y и Enter).

Теперь необходимо создать каталог PKI. Сделайте это при помощи скрипта easyrsa:

$ cd ~/easy-rsa $ ./easyrsa init-pki

Сертификат и закрытый ключ OpenVPN

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

На этом шаге вы создадите секретный ключ, а также, запрос подписи сертификата. Сначала вам необходимо перейти в директорию ~/easy-rsa. Это нужно сделать на Сервере VPN.

$ cd ~/easy-rsaДалее запустите easyrsa, где server – CN вашего Сервера VPN (вместо server вы можете использовать любую последовательность символов):

$ ./easyrsa gen-req server nopassТаким образом, вы создали файл запроса сертификата server.req и секретный ключ.

Этот файл нужно скопировать в /etc/openvpn/server:

$ sudo cp /home/Your-user/easy-rsa/pki/private/server.key /etc/openvpn/server/

Подписание запроса сертификата

На этом этапе необходимо выполнить подписание сертификата server. Сначала скопируйте файл server.req на сервер ЦС для подписания:

$ scp /home/Your-user/easy-rsa/pki/reqs/server.req Your-user@X.X.X.X:/tmp

Здесь, Your-user – имя вашей учётной записи, server – CN вашего Сервера VPN, X.X.X.X – IP-адрес Сервера ЦС.

Далее, подключитесь к вашему Серверу ЦС, переключитесь в папку ~/easy-rsa и запустите импорт запроса server.req при помощи easyrsa:

$ cd ~/easy-rsa $ ./easyrsa import-req /tmp/server.req serverИмпорт запроса сертификата - как настроить OpenVPN ServerТеперь необходимо запустить подписание запроса при помощи скрипта easyrsa используя опцию sign-req и такой тип запроса как server:

$ ./easyrsa sign-req server server

Для подтверждения надёжности источника запроса наберите Yes, после чего нажмите Enter.

И наконец, файл server.crt, в котором находится открытый ключ шифрования, и файл ca.crt, содержащий собственный доверенный сертификат, скопируйте на Сервер VPN:

$ scp pki/issued/server.crt Your-user@X.X.X.X:/tmp $ scp pki/ca.crt Your-user@X.X.X.X:/tmp

В данном случае, Your-user – имя вашей учётной записи, server – CN вашего Сервера VPN, X.X.X.X – IP-адрес Сервера VPN.

После чего на Сервере VPN эти файлы скопируйте из /tmp в /etc/openvpn/server:

$ sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/server

Криптография OpenVPN

Чтобы повысить уровень безопасности следует добавить дополнительный секретный ключ для использования сервером и клиентами при помощи OpenVPN tls-crypt. Для создания публичного tls-crypt ключа запустите:

$ cd ~/easy-rsa $ openvpn —genkey —secret ta.key

Файл ta.key нужно будет скопировать в директорию /etc/openvpn/server/:

$ sudo cp ta.key /etc/openvpn/server

Теперь вы готовы создавать сертификаты клиентов вашего VPN и ключи для подключения к OpenVPN.

Генерация сертификатов и ключей

Здесь вам нужно создать директории для хранения сертификатов клиентов и файлов ключей, а также, назначить им соответствующие права, например:

$ mkdir -p ~/clients/keys $ chmod -R 700 ~/clients

После чего запустите скрипт easyrsa используя опции gen-req и nopass, а также, с использованием CN клиента:

$ cd ~/easy-rsa $ ./easyrsa gen-req client-1 nopass

И скопируйте client-1.key в ~/clients/keys/:

$ cp pki/private/client-1.key ~/clients/keys/После чего файл client-1.req скопируйте на Сервер ЦС:

$ scp pki/reqs/client-1.req Your-user@X.X.X.X:/tmp

А на сервере ЦС запустите импорт запроса client-1.req:

$ cd ~/easy-rs $ ./easyrsa import-req /tmp/client-1.req client-1

Теперь этот запрос необходимо подписать, используя тип запроса client:

$ ./easyrsa sign-req client client-1

Таким образом, вы сгенерировали сертификат клиента client-1.crt. Его необходимо передать на Сервер VPN:

$ scp pki/issued/client-1.crt Your-user@XXX.XXX.XXX.XXX:/tmp

И на Сервере VPN нужно скопировать его в папку ~/clients/keys/:

$ cp /tmp/client-1.crt ~/clients/keys/Далее, ca.crt и ta.key скопируйте в каталог ~/clients/keys/ с соответствующими правами:

$ cp ~/easy-rsa/ta.key ~/clients/keys/ $ sudo cp /etc/openvpn/server/ca.crt ~/clients/keys/ $ sudo chown Your-user.Your-user ~/clients/keys/*

Настройка OpenVPN

На данном шаге произведите некоторые настройки конфигурации Сервера VPN:

  • Скопируйте server.conf в директорию OpenVPN:

$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/server/ $ sudo gunzip /etc/openvpn/server/server.conf.gz

  • Откройте этот файл для редактирования, например, с помощью nano:

$ sudo nano /etc/openvpn/server/server.conf

  • В разделе HMAC закомментируйте строку tls-auth и после неё вставьте строку tls-crypt ta.key​​​:

server.conf при настройке OpenVPN на ОС Ubuntu 20.04

  • Найдите в том же файле строку cipher AES-256-CBC, закомментируйте её и добавьте строки cipher AES-256-GCM и auth SHA256:

server.conf при настройке OpenVPN на Ubuntu 20.04

  • Теперь найдите текст либо dh dh2048.pem,​​​ либо dh dh.pem и закомментируйте его, так как в вашем случае нет необходимости использовать файл Диффи-Хеллмана. После закомментированной строки вставьте строку dh none:

server.conf при настройке OpenVPN на ОС Ubuntu 20.04

  • И для того, чтобы OpenVPN запускался без привилегий, снимите комментарий перед user nobody и group nogroup:

server.conf при настройке OpenVPN на Ubuntu 20.04Сохраните изменения в файле, закройте его.

Конфигурация сети на Сервере VPN

Теперь необходимо внести изменения в конфигурацию сети на Сервере VPN для обеспечения правильной маршрутизации трафика. А именно, откройте конфигурационный файл /etc/sysctl.conf:

$ sudo nano /etc/sysctl.conf

После чего добавьте строку:

net.ipv4.ip_forward = 1

Перед закрытием файла сохраните внесённые изменения.

Для применения новой настройки наберите:

$ sudo sysctl -p

Изменение конфигурации сетевого экрана

Далее, вам следует произвести настройки, касающиеся ранее установленного и сконфигурированного интерфейса брандмауэра UFW на Сервере VPN. А именно, нужно разрешить работу OpenVPN через брандмауэр путём включения типа трансляции адресов, который называется маскарадинг. Такая технология позволяет транслировать пакеты клиентов, подставляя адреса отправителей в динамике.

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

$ ip route list default

Его можно увидеть после параметра dev:

Открытый сетевой интерфейс - настройка OpenVPN ServerТеперь откройте /etc/ufw/before.rules:

$ sudo nano /etc/ufw/before.rules

В начало файла скопируйте строки:

# START OPENVPN RULES# NAT table rules*nat:POSTROUTING ACCEPT [0:0]# Allow traffic from OpenVPN client to eth0 (change to the interface you discovered!)-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADECOMMIT# END OPENVPN RULES/etc/ufw/before.rulesСохраните внесённые изменения и закройте файл.

Откройте файл /etc/default/ufw:

$ sudo nano /etc/default/ufw

В строке DEFAULT_FORWARD_POLICY поменяйте значение DROP на значение ACCEPT:

sudo nano /etc/default/ufw - настройка OpenVPN Server на ОС Ubuntu 20.04Сохраните изменения в файле и закройте его.

Следующими командами откройте UDP-трафик на порту 1194 и добавьте в UFW протокол OpenSSH, если вы не сделали этого ранее:

$ sudo ufw allow 1194/udp $ sudo ufw allow OpenSSH

Перезапустите UFW:

$ sudo ufw disable $ sudo ufw enable

Запуск OpenVPN

При помощи systemctl произведите запуск службы OpenVPN c включением его в автозагрузку:

$ sudo systemctl -f enable openvpn-server@server.service $ sudo systemctl start openvpn-server@server.service

Проверьте корректность запуска службы:

$ sudo systemctl status openvpn-server@server.service

Вывод команды должен выглядеть так:

Запуск службы OpenVPN

Конфигурация клиентов

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

Это будет полезно с точки зрения автоматизации ваших действий при организации доступа для каждого из клиентов.

Создайте структуру директорий, где будут сохраняться файлы:

$ mkdir -p ~/clients/files

Скопируйте шаблон клиентской конфигурации в папку clients:

$ cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/clients/base.conf

Откройте base.conf:

$ sudo nano ~/clients/base.conf

В строке remote замените порт 1194 на нужный вам, если меняли номер порта, который прослушивает Сервер VPN:

remote X.X.X.X 1194

Должен быть правильно указан протокол:

proto udp

Снимите комментарий со строк:

user nobody group nogroup

Закомментируйте следующие строки:

;ca ca.crt ;cert client.crt ;key client.key

А строку относящуюся к tls-auth, наоборот, нужно раскомментировать:

tls-auth ta.key 1

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

cipher AES-256-GCM
auth SHA256

Добавьте строку:

key-direction 1

Также добавьте строки, которые нужно будет раскомментировать только для Linux-клиентов:

; script-security 2
; up /etc/openvpn/update-resolv-conf
; down /etc/openvpn/update-resolv-conf

Плюс ко всему, добавьте строки настроек для клиентов, которые планируют использовать systemd-resolved:

; script-security 2
; up /etc/openvpn/update-systemd-resolved
; down /etc/openvpn/update-systemd-resolved
; down-pre
; dhcp-option DOMAIN-ROUTE

Сохраните изменения в файле, закройте его.

Теперь необходимо создать скрипт make_config.sh. Он создаст базовую клиентскую конфигурацию, которая будет сохранена в директории ~/clients/files:

$ sudo nano ~/clients/make_config.sh

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

#!/bin/bash
# First argument: Client identifier
KEY_DIR=~/clients/keys
OUTPUT_DIR=~/clients/files
BASE_CONFIG=~/clients/base.conf
cat ${BASE_CONFIG} \
<(echo -e ») \
${KEY_DIR}/ca.crt \
<(echo -e ‘\n’) \
${KEY_DIR}/${1}.crt \
<(echo -e ‘\n’) \
${KEY_DIR}/${1}.key \
<(echo -e ‘\n’) \
${KEY_DIR}/ta.key \
<(echo -e ») \
> ${OUTPUT_DIR}/${1}.ovpn

Сохраните скрипт, закройте его и назначьте ему соответствующие права:

$ chmod 700 ~/clients/make_config.sh

Создание клиента

Итак, вы создали сертификат клиента client-1.crt и файл ключа client-1.key. Теперь можно создать клиентский файл конфигурации. Для это нужно запустить на исполнение скрипт ~/clients/make_config.sh:

$ cd ~/clients $ ./make_config.sh client-1В результате скрипт создаст файл ~/clients/files/client-1.ovpn.

Такой файл необходимо передать клиенту для установки на устройство, которое он будет использовать для подключения к закрытой сети через Сервер VPN. При этом, на стороне клиента должно быть развёрнуто программное обеспечение OpenVPN, к которому нужно подключить полученнный из ЦС файл с расширением ovpn. Например, если рабочая станция клиента работает под управлением ОС Windows, достаточно с сайта OpenVPN скачать дистрибутив Windows-приложения, установить его и скопировать файл сертификата .ovpn в одну из папок, указанных приложением при первом запуске. Это позволит клиенту осуществлять извне работу с ресурсами, расположенными внутри вашей сети, без изменений в конфигурации сетевого экрана и не понижая при этом уровень защищённости сети.

Следует отметить, что в данном руководстве в качестве сервера ЦС использовалась виртуальная машина, на которой также, как и на сервере OpenVPN, развёрнута ОС Ubuntu 20.04. На самом деле, в качестве сервера ЦС вы можете использовать как и ваш VPS, на котором вы настроили серверный сегмент VPN (что не является хорошим вариантом с точки зрения соблюдения мер информационной безопасности), но и любой компьютер или сервер, находящийся за пределами вашей закрытой сети. Во втором варианте, вам нужно продумать организацию безопасного трансфера файлов ключей и сертификатов между рабочей станцией с настроенным ЦС и сервером VPN.

Шаг 1 — Установка PPTP

apt update apt install pptpd

Теперь в файле /etc/pptpd.conf необходимо найти и отредактировать следующие строки, предварительно раскомментировав их:

localip 10.100.0.1 remoteip 10.100.0.100-200

  • localip — это IP-адрес вашего сервера
  • remoteip — IP-адреса, которые будут присваиваться клиентам, который соединяются с сервером.

Затем Вам необходимо настроить авторизацию для PPTP путем добавления пользователей и их паролей. Просто добавьте их в /etc/ppp/chap-secrets:

# client server secret IP addresses user pptpd password123 *

  • сlient — это имя пользователя (логин).
  • server — тип сервиса (в нашем примере — pptpd).
  • secret — пароль.
  • IP addresses указывается, какие IP-адреса могут авторизоваться (с данным логином и паролем). Установив в поле IP-адресов звёздочку * мы указываем, что данная пара логин/пароль должна приниматься с любого IP.

Шаг 2 — Добавление DNS-серверов

В файле /etc/ppp/pptpd-options находим настройки DNS, меняем IP на сервера Google:

ms-dns 8.8.8.8 ms-dns 8.8.4.4

Теперь Вы можете запустить PPTP-демон:

service pptpd restart

Шаг 3 — Настройка форвардинга

Очень важно включить форвардинг IP на PPTP-сервере. Это позволит пересылать пакеты между публичным IP и приватными IP, которые мы настроили при помощи PPTP. Отредактируем /etc/sysctl.conf:

net.ipv4.ip_forward = 1

Для применения изменений выполните команду:

sysctl -p

Шаг 4 — Создание NAT-правил для iptables

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

ip route | grep default

Публичный интерфейс должен следовать за словом dev. Например, в нашем случае этот интерфейс называется eth0.

Далее перейдем к настройкам iptables.

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Где интерфейс eth0 нужно заменить на тот, который вы нашли в предыдущей команде.

Если Вы также хотите, чтобы Ваши PPTP-клиенты могли общаться между собой, добавьте следующие правила для iptables:

iptables —table nat —append POSTROUTING —out-interface ppp0 -j MASQUERADE iptables -I INPUT -s 10.100.0.0/8 -i ppp0 -j ACCEPT iptables —append FORWARD —in-interface eth0 -j ACCEPTДалее нужно сохранить проделанные нами изменения. Воспользуемся утилитой iptables-persistent.

apt install iptables-persistent

Во время установки в открывшихся диалогах нужно выбрать два раза Yes.

Сохраним настройки iptables

netfilter-persistent save netfilter-persistent reload

Шаг 5 — Настройка клиентов

При необходимости на клиенте нужно настроить ip адреса и назначить dns-сервера. Компьютер должен иметь выход в интернет.

5.1 Настройка с использованием графической оболочки

Заходим в Settings -> Network. В разделе VPN нажимаем на «+». В появившемся окне выбираем **Point-to-point Tunneling Protocol(PPTP).

В поле Name даем любое название VPN(к примеру «PPTP VPN»).

В поле Gateway указываем ip адрес VPN сервера.

В поле Username и Password вводим логин и пароль для пользователя, который мы указывали на сервере в файле /etc/ppp/chap-secrets. (Для ввода пароля нужно нажать на знак вопроса в поле Password и выбрать «Store the password for all users». В противном случае система будет запрашивать пароль при каждом VPN соединении).

Далее выбираем пункт Advanced…

Ставим галочку на пункте Use Point-to-point encryption(MPPE). И в поле Security выбираем 128-bit most secure.

После чего нажимаем Okey и Add.

Теперь можно попробовать подключиться.

Кликаем на ползунок и при успешном подключении в верхней строке состояния должен появиться значок с замком.

5.2 Настройка с использованием консоли

Создадим новый файл /etc/ppp/peers/vpn и добавим туда следующие строчки, заменяя имя и пароль на те, который мы указывали на сервере в файле /etc/ppp/chap-secrets.

pty «pptp ip_address —nolaunchpppd» name user_name password user_password remotename PPTP noauth require-mppe-128 ip_address — публичный IP-адрес нашего PPTP-сервера user_name и user_password — это пара логин/пароль, которые мы задали в файле /etc/ppp/chap-secrets на нашем PPTP-сервере.Далее в конце файла /etc/ppp/ip-up допишем:

route add default dev ppp0

Для подключения к VPN серверу воспользуемся командой

pon vpn

Для отключения:

poff vpn Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Текущая ситуация с конфиденциальностью в сети

Если вы много путешествуете, то наверняка используете бесплатные общественные Wi-Fi точки доступа в сеть, чтобы проверить, как там ваши дела на Forex, долить сеточки и закрыть прибыльные сделки. Иногда сделать это в другой стране невозможно. Те же Google, Facebook, Youtube, а также многие другие популярные сервисы в некоторых странах просто заблокированы, например, в Китае.

Вообще, многие интернет-сайты цензурируются рядом правительств, и больше всего в странах с «железным занавесом» не любят Google, с помощью которого можно найти практически любую информацию. Кстати, в самом Google не стесняются и подобную информацию не скрывают, давая возможность узнать, правительства каких стран блокируют доступ к их сайту или запрашивают информацию о пользователях. Узнать эту информацию можно на официальной страничке Google под названием «Отчет о доступности сервисов и данных».

Помимо недоступности сервисов в некоторых странах, в путешествиях вообще есть определенная проблема с нормальным доступом в Интернет. Не всегда удается купить местную SIM-карту, поэтому приходится подключаться к Wi-Fi сетям в отелях, аэропортах и кафе. Фактически мы ничего не знаем об этих сетях: кем они были созданы, насколько надежны, и не «слушает» ли кто-либо сейчас наш трафик.

Чтобы ваши личные данные, такие как пароли и логины от терминалов и кошельков, утекли в карманы не очень добросовестных людей (вместе с вашими деньгами), не обязательно выезжать за границу. Вы всегда можете для этого просто подключиться к бесплатной точке доступа в любимой кафешке, в метро, электричке или в любом другом месте. Вы понятия не имеете, насколько безопасны эти сети, и, вполне возможно, прямо сейчас весь ваш трафик прослушивается злоумышленниками, которые сидят за соседним столиком. Более того, находиться непосредственно рядом не обязательно, достаточно сделать довольно нехитрые настройки общественной Wi-Fi сети, чтобы получать нужные данные «с доставкой на дом».

Отсюда простое правило – всегда, когда вы подключаетесь к общественной сети, вы должны понимать, что все данные, с которыми вы работаете в рамках этой сессии, отныне тоже достояние общественности, в том числе и ваши счета, кошельки и личные переписки с фоточками котиков.

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

Кроме того, не стоит забывать и о правительстве, которое в последние годы старается взять интернет под свой контроль, ограничивая нашу свободу в сети. Законодательство обязывает интернет-провайдеров записывать весь трафик пользователей и хранить какое-то время на своих серверах (в России это система СОРМ). К этому архиву могут получить неограниченный доступ спецслужбы и с легкостью использовать эту информацию против пользователей. На сегодняшний день уже имеется немало прецедентов, когда люди за какой-то неосторожный комментарий в любимом виртуальном вконтактике отправлялись во вполне реальную тюрьму на не менее реальный срок.

Ну и, конечно же, Роскомнадзор, который блокирует не только неугодные правительству сайты, но и вместе с ними вообще любые, какие попадутся на пути. А теперь, кстати, еще и VPN-сервисы. Как видите, абсолютно никому, кроме вас самих, не выгодна ваша анонимность. Даже наоборот – гораздо удобнее знать о том, что вы думаете и чем живете, чтобы показать вам в нужный момент правильный баннер, залезая в ваш кошелек, ну или просто посадить, если вас что-то не устраивает.

Как решить эту проблему?

Если вы дочитали до этого места, то наверняка понимаете, что просто необходимо принять какие-то меры для обеспечения своей безопасности. Хотя многие могут возразить, что им нечего скрывать и они спят спокойно. Таким людям предлагаю просто выложить в комментариях к статье логины и пароли от кошельков и онлайн- кабинетов.

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

Прежде чем продолжить, я хочу подчеркнуть, что VPN не даст вам полной анонимности в сети. Но при этом он поможет вам:

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

Немного об анонимности в сети

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

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

Для того, чтобы собирать о вас информацию, нужно как-то выделить лично вас на фоне других пользователей. Для этого формируется так называемый «отпечаток» или «fingerprint». Отпечаток браузера представляет собой уникальный слепок с настроек вашего браузера и компьютера. Отпечатки браузера – это альтернатива cookies с рядом преимуществ.

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

https://whoer.net/ru

https://whatleaks.com/

https://browserleaks.com/

Теперь давайте разберемся, что же вообще такое VPN и как он работает.

Что такое VPN?

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

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

VPN – это виртуальная частная сеть (аббревиатура от virtual private network). Это зашифрованный туннель между двумя устройствами, позволяющий получить доступ к любому сайту и онлайн-сервису конфиденциально и безопасно.

С помощью вашего обычного Интернет-соединения между вашим устройством и VPN-сервером устанавливается специальное соединение – VPN-туннель. Все передаваемые и получаемые данные в этом соединении шифруются. С этого момента вся ваша сетевая активность осуществляется через данный туннель, а не через основной канал провайдера, и вы пользуетесь Интернетом как бы с самого VPN-сервера, а не с вашего устройства.

VPN-туннель представляет собой сквозное подключение, установленное между двумя устройствами – как правило, между VPN-сервером и вашим устройством. Туннелирование трафика позволяет встроить его в стандартные пакеты TCP/IP и безопасно передавать их через Интернет. Так как ваши данные зашифрованы, то ни хакеры, ни правительство, ни даже интернет-провайдеры не получат к ним доступ, пока вы подключены к VPN-серверу.

Для вашего провайдера, администратора Wi-Fi сети или же злоумышленников, которые сканируют трафик в Wi-Fi сетях, вся ваша сетевая активность выглядит как одно-единственное соединение к одному-единственному IP-адресу. Это всё, что им доступно. Что именно происходит внутри этого соединения, они не смогут узнать, поскольку просто не смогут проникнуть «внутрь» этого соединения.

Да, можно взломать сам VPN-сервер и получить доступ к вашему трафику уже на нем, но очевидно, что никто не будет этим заниматься. К тому же взломать хорошо защищенный VPN-сервер – тот еще челлендж.

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

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

Сейчас встроенные VPN-клиенты есть во всех актуальных операционных системах, в том числе в Android, iOS, Windows, macOS и Linux.

Пуская сотрудников в рабочую среду только через VPN и по учётным записям, работодатель всегда будет знать, кто и что делал и делает. Более того, владелец VPN может мониторить и контролировать вообще весь трафик, который идёт между сервером и пользователем. Сотрудники много сидят во «ВКонтакте»? Можно закрыть доступ к этому сервису. Василий Анатольевич половину рабочего дня проводит за рассматриванием котиков? Анна Петровна с обеда и до вечера сидит на сайте tlap.com? Вся активность автоматически записывается в логи и станет железным аргументом для вашего увольнения.

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

Готовые VPN-серверы в сети

В интернете есть целая куча VPN-сервисов, от бесплатных до очень даже платных. Средняя цена нормального VPN-сервиса колеблется в пределах 300-500 рублей в месяц. За эти деньги вы получаете туннель за границу, чаще всего есть возможность выбрать страну, куда будет уходить ваш трафик. Плюс вы получите еще несколько фич, полезность которых, по правде сказать, высосана из пальца. Кроме этого, вам придется доверять выбранному VPN-провайдеру. Строго говоря, у вас есть две альтернативы – купить готовый VPN-сервер (или использовать бесплатный) или же поднять свой собственный.

Недостатки VPN-сервисов:

  • ограничены в скорости;
  • нестабильность бесплатных (иногда и платных тоже) серверов (то работает нормально, то тормозит);
  • ограничения трафика (до нескольких Гигабайт в месяц);
  • ограничения периода бесплатного пользования;
  • периодически нужно искать другие сервисы;
  • передаваемые данные не будут в безопасности, совсем не стоит надеяться на анонимность. Тут как с вашим работодателем – владелец сервера будет в курсе всего, что у вас происходит, и остается только надеяться на его порядочность (я бы не стал). Более того, некоторые VPN-сервисы изначально были созданы именно для того, чтобы воровать ваши данные, и по факту это является их основной деятельностью и выгодой;
  • не всегда есть нужная страна или город;
  • заезженные IP-адреса (используются сотнями клиентов);
  • бывает просто обман без возврата денег, например, трафик не безлимитный, некоторые серверы не работают или слишком медленные.

Кроме того, платные инструменты могут в любой момент исчезнуть: закон о запрете анонимайзеров и VPN давно приняли, правда, пока еще не применяли.

Преимущества своего личного VPN

На сторонних сервисах личная анонимность низкая: владельцы VPN-сервера могут собирать о вас совершенно любую информацию – от паролей к учеткам в соцсетях до любимых роликов в pornhub.

На своем сервере все будет намного лучше, деанонимизировать вас могут только спецслужбы тех стран, от которых зависит хостинг вашего сервера (ну и вы сами, по глупости).

Скорость.

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

На своем сервере скорость не хуже, ведь сервер ваш, и канал занимаете только вы.

Анонимность для сайтов и рекламодателей.

На сторонних сервисах анонимность высокая, так как сервер настроен профессионалами.

На своем сервере при правильной настройке тоже все будет хорошо.

Личная анонимность.

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

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

Поэтому я хотел бы, чтобы вы поняли: VPN – это не для хакерства, это для защиты от злоумышленников и тоталитаризма государства, которое посягает на ваши конфиденциальные данные, ваши мысли, ценности и свободы.

Недостатки своего VPN

Конечно, даже у своего VPN есть недостатки:

  • Некоторые сайты начнут загружаться на языке страны, в которой располагается ваш VPN-сервер. Однако это легко исправить. Поскольку чаще всего мы приходим на какие-либо сайты через поиск в Google, достаточно один раз настроить его выдачу, и с этого момента вы будете направляться на сайты с нужной вам локализацией. Всегда можно выбрать локализацию на самом сайте;
  • То же самое касается и рекламы. Ее существенная часть начнет отображаться для страны, в которой находится ваш VPN-сервер;
  • Некоторые российские сервисы блокируют доступ с нероссийских IP-адресов, поэтому VPN при их использовании придется на время отключать;
  • Снизится скорость загрузки сайтов. По замерам это действительно так, но на практике падение скорости для обычного пользования Интернетом настолько незначительно и неощутимо, что данным недостатком можно пренебречь.

Чем VPN отличается от прокси?

Наверняка многие не раз использовали прокси, например, чтобы посидеть в Telegram. В чем отличие прокси от VPN-сервера?

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

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

VPN-сервис обеспечит вам все преимущества прокси-сервера, а также защитит и зашифрует трафик, которым ваше устройство обменивается с интернет-серверами. Это позволит вам работать в Интернете, не опасаясь кражи или перехвата ваших данных.

Выбираем страну для своего VPN-сервера

Выбирать страну для своего VPN-сервера стоит по следующим критериям:

  • кратчайшее расстояние до вас – это обеспечит меньший пинг и потери в скорости соединения;
  • минимальное количество запретов на свободу Интернета, доступность любых популярных сервисов;
  • наименьшая политическая напряженность между вашей страной и страной, где будет находиться VPN-сервер. В этом случае ваш трафик теперь уже с VPN-сервера, скорее всего, не будут читать спецслужбы другого государства. Но здесь палка о двух концах. Например, многие российские пользователи предпочитают располагать VPN-сервер в Великобритании именно из-за высокой напряженности между странами, ведь в случае чего, последняя ни за что не сдаст трафик российским спецслужбам. Поэтому данный подход также может быть оправданным.

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

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

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

Выбираем хостинг для своего VPN-сервера

Чтобы развернуть свой VPN, нам нужно иметь сервер. Поэтому для начала нам требуется выбрать хороший виртуальный сервер (VPS).

VPS (Virtual Private Server) или VDS (Virtual Dedicated Server) – это хостинг-услуга, где пользователю предоставляется виртуальный выделенный сервер с максимальными привилегиями. VDS или VPS эмулирует работу реального физического сервера: на одном физическом сервере может быть запущено множество виртуальных серверов, каждый из которых имеет определенный процессор, объем памяти, некоторый объем жесткого диска, root-доступ, собственные IP-адреса, порты, а также на нем возможна установка своих операционных систем и программного обеспечения. Обычно в качестве виртуального сервера используются операционные системы Linux.

Вам нужно знать, что VPS-серверы бывают нескольких видов: OpenVZ, Xen и KVM. Для работы VPN-сервера нужен KVM. Тип сервера обычно указан в тарифах хостинга. OpenVZ и Xen тоже иногда подходят, но нужно писать в техподдержку хостинга и спрашивать, подключён ли модуль TUN, и если нет, то могут ли они включить его. Не помешает также спросить, будет ли работать VPN как таковой (даже на KVM) – некоторые компании прикрывают эту возможность (уж не знаю, для чего).

Чтобы выбрать именно то, что нам нужно, давайте определим требования:

  • Поддержка TUN/TAP. Некоторые хостеры эту технологию не предоставляют вообще, некоторые включают по запросу, некоторые сразу;
  • Цена. Слишком дорогой брать не стоит, но это на ваше усмотрение;
  • Страна. Чем ближе к вам дата-центр хостера, тем меньше будет пинг. Но смотрите, чтобы он не попадал под юрисдикцию российских спецслужб и никак от них не зависел. В идеале, как я уже писал выше – Великобритания или Германия;
  • Размер жесткого диска и скорость его работы не столь важны. Для VPN места потребуется настолько мало, что этим параметром можно пренебречь;
  • Оперативной памяти не меньше 512 МБ;
  • Сетевой трафик должен быть либо не ограничен, либо иметь такое ограничение, в которое мы не упремся. Скорость должна быть не менее 100 Мб/сек.

Поднимать свой VPN-сервер мы будем на основе операционной системы Linux Debian, а не Linux Ubuntu, которая считается более популярной.

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

При настройке услуги хостер может просить указать доменное имя и DNS. Нам это в данном случае не важно, поэтому можете писать все, что угодно.

При регистрации и оплате хостер может запросить некоторые ваши данные: ФИО, е-mail, телефон, адрес, Zip code и т. п. Все это можете придумать сами, но смотрите по своему IP. Также могут запросить фото паспорта, банковской карты, с которой проводится оплата (естественно, с закрашенными начальными цифрами номера и закрашенным CVC-кодом), и прочее. Это нормальная ситуация – они хотят убедиться, что вы не мошенник и не пользуетесь чужой картой. Могут и не запросить. Тут как повезёт.

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

Из наиболее популярных на сегодняшний день глобальных хостинговых компаний можно выделить следующие:

  • Amazon Web Services
  • DigitalOcean
  • Hetzner
  • Vultr
  • Bluehost
  • Arubacloud

Мы сегодня будем настраивать Amazon Web Services (AWS) из-за известности бренда, большого количества доступных географических зон для размещения сервера и высокой стабильности. Многие популярные интернет-сервисы работают на базе AWS, арендуя там серверы для своих нужд, например, Facebook.

На мой взгляд, вряд ли сегодня кто-то может глобально конкурировать с Amazon. Компания была пионером в облачных технологиях и, по сути, открыла эту отрасль. Сегодня AWS предоставляет множество решений для облачных вычислений на любой вкус и цвет, но нам с вами нужна обычная виртуальная машина. Ее мы возьмем в одной из разработок AWS – Lightsail.

Lightsail – это упрощенное решение для создания виртуальных серверов, в отличие от своего старшего собрата EC2. Всё завернуто в очень простой интерфейс, в котором разберется даже новичок, поэтому для нашей цели AWS Lightsail подходит лучше всего.

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

Использование VPN-сервера на базе AWS Lightsail будет обходиться вам в 3.5 доллара в месяц. За эти деньги вы получаете машину с 512 Мб оперативной памяти. Подобная конфигурация легко справляется с обработкой VPN-трафика 3-4 устройств. Первый месяц у AWS будет и вовсе бесплатным.

Что касается протоколов VPN-соединения, сего

дня их существует несколько: PPTP, L2TP, IPSec, OpenVPN, IKEv2. Не думаю, что вам будет интересно про них читать, поэтому опустим эту информацию. Наиболее популярны на сегодняшний день IPsec, IKEv2 и OpenVPN.

Сегодня существуют готовые решения для развертывания своего VPN-сервера на платформе Linux, например, скрипт Algo (для IKEv2) или Streisand (для OpenVPN), которые нужно просто скачать, распаковать и запустить на сервере. Данные скрипты сами установят, настроят все необходимые пакеты и на выходе предоставят работающий VPN-сервер.

Теперь с теоретической частью покончено, и мы можем смело приступать к созданию своего VPN-сервера.

Создание VPN-сервера

После нехитрой регистрации вы сможете перейти в панель управления услугами. Чтобы не искать нужную, просто вбиваем в поиск lightsail:

Как мы уже обсудили, выбираем систему Debian:

Для работы нам понадобится статический ip-адрес, поэтому переходим на вкладку networking и ищем кнопку Create static ip:

Далее привязываем нашу машину и жмем create:

Этот статический ip-адрес появится в настройках, рекомендую его куда-нибудь записать:

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

Кликаем на вкладку SSH keys и скачиваем ключ:

Сохраните ключ в удобном для вас месте, он нужен будет для доступа через ftp-клиент.

Переходим обратно на вкладку connect:

Там мы видим кнопочку connect using SSH, жмем ее. Это браузерная ssh консоль. Сначала нам нужно в консоли получить права root юзера:

sudo su

Затем обновить систему с помощью этих двух команд:

apt-get update

apt-get upgrade

После нам нужно перезагрузить систему. Не выходя из консоли, это можно сделать командой:

reboot

После перезагрузки я предлагаю установить firewall:

sudo su

apt-get install ufw

Необходимо открыть затребованные порты, такие как SHH port 22, 80, 443 и так далее:

ufw allow 22

ufw allow 80

ufw allow 443

Для включения фаервола запустим:

ufw enable

Состояние правил фаервола:

ufw status

Теперь установим скрипт openvpn-install.sh

wget https://git.io/vpn -O openvpn-install.sh

Запустим скрипт openvpn-install.sh для установки и настройки сервера OpenVPN автоматически:

bash openvpn-install.sh

Далее:

Жмем кнопки, как указано на скриншоте. Порт вы можете указать любой, но не забудьте добавить его в firewall, как мы делали это выше.

Скрипт сгенерирует файл с расширением .ovpn – это настроечный файл для ваших клиентов (устройств, с которых вы будете пользоваться vpn). Он находится в защищенной папке, из которой его трудно достать при помощи ftp клиента. Поэтому скопируем файл в другую папку:

cp /root/имя_вашего_файла /home/admin/

Далее устанавливаем ftp клиент. У меня – filezilla. После установки запускаем. Жмем:

Настройки должны быть, как указаны тут:

Жмем Соединиться и находим папку home/admin/. Копируем оттуда наш файл с настройками куда-то себе.

У Lightsail есть встроенный firewall и нам нужно добавить в него наш порт, который мы указали при настройке VPN.

Переходим в панель управления нашей машиной, на вкладку Networking.

Жмем add rule:

Добавляем порт:

Далее установим OpenVPN клиент, скачать его можно тут.

Клиенты есть под любые операционные системы:

Заходим в клиент после установки и загружаем наш файл настроек:

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

 

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: