Когда вы совершаете любые действия в интернете, информация о них может попасть к третьим лицам. Это могут быть не только злоумышленники, но и браузеры, сервисы, приложения или государственные структуры на законных основаниях. VPN (Virtual Private Network, виртуальная частная сеть) позволяет повысить уровень вашей конфиденциальности.

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

Как VPN защищает данные о ваших действиях в сети

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

Благодаря VPN вы сможете:

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

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

Платные VPN-сервисы

Коммерческие VPN-сервисы предоставляют возможность подключения к VPN-серверам за абонентскую плату. По данным мобильного оператора Yota, количество пользователей VPN-сервисов растет с конца февраля. В апреле 2022 года их стало в 53 раза больше, чем в январе этого же года. Также растет объем трафика, который проходит через VPN. Чаще всего люди заходят в интернет с помощью OpenVPN (рост трафика — почти 56%), WireGuard (32%) и Surfshark VPN (6%).

Результаты исследований Appfigures говорят о том, что с 24 февраля по 1 марта российские пользователи скачали свыше 1,3 миллиона VPN-приложений.

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

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

Собственный VPN-сервер

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

Сервер с установленным ПО

Один из способов получить готовый к работе VPN — арендовать сервер с предустановленным программным обеспечением. Пользователь экономит около двух часов на настройке и получает собственный VPN-сервер.

Недавно такая услуга появилась в Serverspace. Компания позволяет арендовать настроенный сервер с SoftEther VPN.

Благодаря интуитивно понятному интерфейсу панели управления, выбор конфигурации сервера занимает меньше минуты. За счет того, что интернет-канал сервера не нужно делить с другими пользователями, как это происходит в VPN-сервисах, вы используете максимальную пропускную способность — 50 Мбит/с.

Вы можете выбрать IP-адрес в одной из пяти локаций. ЦОД расположены в Нидерландах, США, Казахстане, России и Беларуси. Подключиться можно с любого устройства и из любой страны. В Serverspace доступна возможность пополнения счета с помощью российских рублевых карт.

Самостоятельная настройка VPN-сервера

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

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

При создании VPN-сервера предлагаем использовать:

  • Amazon Web Services и решение для создание виртуальных серверов Lightsail (можно заменить на любой сервис аренды виртуальных серверов, например, Serverspace);
  • IKEv2 в качестве протокола VPN;
  • Linux Debian в роли серверной ОС;
  • strongSwan как VPN-сервер.

После успешной регистрации у провайдера нужно выбрать гео-зону в которой будет располагаться VPN-сервер. Далее создайте новый инстанс, и выберите «OS Only» и ОС Debian. Добавьте в него Static IP в разделе «Networking», чтобы сервер использовал статический IP-адрес. Скачайте сгенерированный системой приватный ключ для доступа по SSH в разделе «Account > SSH keys» и добавьте его в папку Downloads. Ограничьте права скачанному ключу.

Зайдите в настройки Terminal в macOS и снимете галочку с “Set locale environment variables on startup” в Profiles. После этого терминал нужно закрыть и перезапустить.

Подключитесь к Lightsail и замените YOUR_LIGHTSAIL_IP на статический IP-адрес из раздела Static IP, а YOURD_DOWNLOADED_KEY — на название ключа:

ssh -i YOUR_DOWNLOADED_KEY.pem admin@YOUR_LIGHTSAIL_IP

Следующим шагом станет обновление Debian. Для этого нужно зайти в систему как пользователь root:

sudo su

На всякий случай обновите индекс пакетов в репозиториях:

apt-get update

Если есть обновления, установите их:

apt-get upgrade

Установите strongSwan:

apt-get install strongswan

И следом — стандартные плагины:

apt-get install libstrongswan-standard-plugins

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

apt-get install strongswan-pki

Создайте корневой сертификат “CA” (Certificate Authority) в ca.pem. Вместо YOUR_SERVER_IP подставьте внешний IP-адрес AWS Lightsail:

cd /etc/ipsec.d
ipsec pki —gen —type rsa —size 4096 —outform pem > private/ca.pem
ipsec pki —self —ca —lifetime 3650 —in private/ca.pem \
—type rsa —digest sha256 \
—dn «CN=YOUR_SERVER_IP» \
—outform pem > cacerts/ca.pem

Внутри корневого сертификата создайте сертификат для VPN-сервера в debian.pem и так же поставьте нужный IP:

ipsec pki —gen —type rsa —size 4096 —outform pem > private/debian.pem
ipsec pki —pub —in private/debian.pem —type rsa |
ipsec pki —issue —lifetime 3650 —digest sha256 \
—cacert cacerts/ca.pem —cakey private/ca.pem \
—dn «CN=YOUR_SERVER_IP» \
—san YOUR_SERVER_IP \
—flag serverAuth —outform pem > certs/debian.pem

Далее создайте сертификат для устройств в файле me.pem, ничего не меняя в записи:

ipsec pki —gen —type rsa —size 4096 —outform pem > private/me.pem
ipsec pki —pub —in private/me.pem —type rsa |
ipsec pki —issue —lifetime 3650 —digest sha256 \
—cacert cacerts/ca.pem —cakey private/ca.pem \
—dn «CN=me» —san me \
—flag clientAuth \
—outform pem > certs/me.pem

Теперь можно удалить файл ca.pem, так как он вам больше не нужен:

rm /etc/ipsec.d/private/ca.pem

Следующим шагом нужно настроить strongSwan. Для этого очистите дефолтный конфиг strongSwan командой:

> /etc/ipsec.conf

И создайте собственный:

nano /etc/ipsec.conf

Замените YOUR_SERVER_IP на внешний IP-адрес машины в AWS Lightsail и вставьте текст в созданный вами конфиг, после чего сохраните файл:

config setup
uniqueids=never
charondebug=»ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2, mgr 2″

conn %default
keyexchange=ikev2
ike=aes128gcm16-sha2_256-prfsha256-ecp256!
esp=aes128gcm16-sha2_256-ecp256!
fragmentation=yes
rekey=no
compress=yes
dpdaction=clear
left=%any
leftauth=pubkey
leftsourceip=YOUR_SERVER_IP
leftid=YOUR_SERVER_IP
leftcert=debian.pem
leftsendcert=always
leftsubnet=0.0.0.0/0
right=%any
rightauth=pubkey
rightsourceip=10.10.10.0/24
rightdns=8.8.8.8,8.8.4.4

conn ikev2-pubkey
auto=add

Добавьте указатель на сертификат сервера в файл ipsec.secrets:

nano /etc/ipsec.secrets

Туда же последней строкой добавьте указатель на сертификат сервера:

: RSA debian.pem

Готово, осталось нажать рестарт:

ipsec restart

На этом этапе ваш сервер должен запуститься:


Starting strongSwan 5.7.2 IPsec [starter]…

Следующий этап — настройка сетевых параметров ядра. Для начала добавьте изменения в файл /etc/sysctl.conf:

nano /etc/sysctl.conf

С помощью горячих клавиш Ctrl+W найдите переменные, в которые нужно внести изменения:

#Раскомментируем (уберем решетку перед параметром) данный параметр, чтобы включить переадресацию пакетов
net.ipv4.ip_forward=1

#Раскомментируем данный параметр, чтобы предотвратить MITM-атаки
net.ipv4.conf.all.accept_redirects = 0

#Раскомментируем данный параметр, чтобы запретить отправку ICMP-редиректов
net.ipv4.conf.all.send_redirects = 0

#В любом месте файла на новой строке добавьте этот параметр, запретив поиск PMTU
net.ipv4.ip_no_pmtu_disc = 1

Сохраните и загрузите новые значения. Настройка параметров завершена:

sysctl -p

Настройте iptables — утилиту для управления файрволом netfilter. Для этого вначале установите iptables-persistent:

apt-get install iptables-persistent

Ответьте “No” на вопрос “нужно ли сохранить текущие правила IPv4 и IPv6” и очистите цепочки:

iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F
iptables -Z

Далее нужно добавить несколько разрешений (ACCEPT). Для соединения по SSH на 22 порту:

iptables -A INPUT -m state —state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp —dport 22 -j ACCEPT

Для соединений на loopback-интерфейсе:

iptables -A INPUT -i lo -j ACCEPT

Для входящих соединений на UDP-портах 500 и 4500:

iptables -A INPUT -p udp —dport 500 -j ACCEPT
iptables -A INPUT -p udp —dport 4500 -j ACCEPT

Для переадресации ESP-трафика:

iptables -A FORWARD —match policy —pol ipsec —dir in —proto esp -s 10.10.10.0/24 -j ACCEPT
iptables -A FORWARD —match policy —pol ipsec —dir out —proto esp -d 10.10.10.0/24 -j ACCEPT

Задайте настройки для маскирования трафика:

iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -m policy —pol ipsec —dir out -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE

И максимальный размер сегмента пакетов:

iptables -t mangle -A FORWARD —match policy —pol ipsec —dir in -s 10.10.10.0/24 -o eth0 -p tcp -m tcp —tcp-flags SYN,RST SYN -m tcpmss —mss 1361:1536 -j TCPMSS —set-mss 1360

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

iptables -A INPUT -j DROP
iptables -A FORWARD -j DROP

Осталось сохранить все созданные правила, после чего настройку iptables можно считать завершенной:

netfilter-persistent save
netfilter-persistent reload

Перезагружаемся:

reboot

И проверяем корректность работы правил iptables:

sudo su
iptables -S


root@XX.X
X.XX.XX:/home/admin# iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -m state —state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp —dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p udp -m udp —dport 500 -j ACCEPT
-A INPUT -p udp -m udp —dport 4500 -j ACCEPT
-A INPUT -j DROP
-A FORWARD -s 10.10.10.0/24 -m policy —dir in —pol ipsec —proto esp -j ACCEPT
-A FORWARD -d 10.10.10.0/24 -m policy —dir out —pol ipsec —proto esp -j ACCEPT
-A FORWARD -j DROP

Работает ли strongSwan:

ipsec statusall


root@XX.XX.XX.XX:/home/admin# ipsec statusall
Status of IKE charon daemon (strongSwan 5.7.2, Linux 4.19.0-14-amd64, x86_64):
uptime: 71 seconds, since Mar 05 23:22:16 2022

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

Выберите инстанс в Lightsail, перейдите в “Networking” и добавьте эти порты. Заодно удалите 80-й порт.

Теперь создайте единый VPN-профайл .mobileconfig для устройств iPhone, iPad и Mac. Конфиг автоматически устанавливает VPN-соединение при выходе выйти в Интернет.

Для этого загрузите скрипт, который генерирует данный конфиг:

wget https://gist.githubusercontent.com/borisovonline/955b7c583c049464c878bbe43329a521/

raw/b2d9dba73da633fcfcca6a03d877517c5b2d9485/mobileconfig.sh

Установите пакет zsh для корректной работы скрипта:

apt-get install zsh

Выберите название сервера на свое усмотрение и пропишете внешний IP-адрес Lightsail:

nano mobileconfig.sh

SERVER=»AWS Frankfurt»
FQDN=»YOUR_LIGHTSAIL_IP»

После запуска скрипта сгенерируется файл iphone.mobileconfig:

chmod u+x mobileconfig.sh
./mobileconfig.sh > iphone.mobileconfig

Чтобы забрать файл с сервера, подключитесь по SFTP, используя ключ от Lightsail, внешний IP-адрес сервера и имя пользователя admin.

Отправьте файл iphone.mobileconfig на все ваши устройства через Airdrop и подтвердите установку конфигурации. В macOS профайл устанавливается из System Preferences > Profiles. В iOS он появится в Settings > Profile Downloaded

Теперь соединения с VPN-сервером будут создаваться автоматически. Временно отключить VPN можно в System Preferences > Network. Выберите VPN-соединение, уберите галочку “Connect on Demand” и нажмите Apply.

В iOS: Settings > General > VPN & Device Management > VPN > кликните по “i” у установленной VPN конфигурации и выключите тумблер “Connect On Demand”.

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