Когда вы совершаете любые действия в интернете, информация о них может попасть к третьим лицам. Это могут быть не только злоумышленники, но и браузеры, сервисы, приложения или государственные структуры на законных основаниях. 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.4conn 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 сетям без риска потерять данные и заходить на любые ресурсы.