Анонимность / Безопасность
April 13, 2023

Собственный Wireguard VPN.

Бонсуар Господа 🍷

Сегодня мы будем говорить в этой статье про Wireguard и как поднять защищенный, собственный VPN на базе этого протокола. Ух чувствуется... 🔥

Начнем с того, что вообще такое Wireguard и чем его едят ?

WireGuard — коммуникационный протокол и бесплатное программное обеспечение с открытым исходным кодом, который реализует зашифрованные виртуальные частные сети. Он был разработан для простого использования технологии VPN, высокой производительности и низкой поверхности атаки. Можете сами ознакомиться с ним. Он более чем доступен для каждого пользователя. Он быстрее и симпатичнее чем тот же OpenVPN. Его можно подключить абсолютно на все современные устройства. Начиная даже от одно платный Arduino, до BSD систем. Хватит теории. Перейдем к делу. Сначала нам нужно приобрести сервер. Вам нужно срочно прочитать мою статью про настройки и повышение безопасности сервера. Я там абсолютно все разобрал и показал. После того как мы приобрели и настроили наш сервер. Перейдем к установке Wireguard на сервере. Кстати весь установка будет показан на дистрибутиве Debian 11

Установка...

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

sudo apt update && apt upgrade -y 

Потом после обновление можем перейти на установку самого Wireguard...

sudo apt install wireguard --> Поставили Wireguard.

sudo apt-get install wireguard-dkms wireguard-tools linux-headers-$(uname -r) --> Поставим модул ядра.   

sudo modprobe wireguard && lsmod | grep wireguard --> Проверяем загружен ли модуль
wireguard 94208 0 --> Если так, все отлично!

Фоточка...

unix/porn :3

Мы установили нам нужные пакет. Перейдем к конфигурации Wireguard...

sudo su --> Используем привилегии.

cd /etc/wireguard/ --> Открываем каталог.

wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey --> Генерируем ключи.

chmod 600 privatekey --> Доступ к этому файлу.

ip add --> Посмотрим,как у вас называется сетевой интерфейс. Скорее всего у вас сетевой интерфейс eth0, но возможно и другой. У меня это ens3. Это название интерфейса используется далее в конфиге /etc/wireguard/wg0.conf, который мы сейчас создадим.

nano wg0.conf --> Создаем файл для конфигурации Wireguard. 

Скопируем в наш конфиг то что внизу и сохраним.
[Interface]
PrivateKey = <privatekey>
Address = 10.0.0.1/24
ListenPort = <Ваш порт>
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE

Вставляем вместо <privatekey> содержимое файла /etc/wireguard/privatekey

Обратите внимание в строках PostUp и PostDown. Если у вас не ens3, замените на свой вариант.

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf --> Настравиваем ip forwarding. 
sysctl -p

Фоточка...

ip forwarding...


Теперь включаем systemd демон Wireguard...

systemctl enable wg-quick@wg0.service --> Включаем демон.

systemctl start wg-quick@wg0.service --> Стартуем демон Wireguard.

systemctl status wg-quick@wg0.service --> Посмотрим статус.

Фоточка...

status wireguard service...

Идем дальше...

wg genkey | tee /etc/wireguard/zxc_privatekey | wg pubkey | tee /etc/wireguard/zxc_publickey --> Генерируем ключи для клиента.

Теперь добавим следующую строчку на wg0.conf:
[Peer]
PublicKey = <zxc_publickey>
AllowedIPs = 10.0.0.2/32

Вместо <zxc_publickey>  — Заменяем на содержимое файла /etc/wireguard/zxc_publickey

Это будет выглядит так:

nano /etc/wireguard/wg0.conf

Осталось перезагрузить сервис...

systemctl restart wg-quick@wg0 --> Перезагрузим сервис.

systemctl status wg-quick@wg0 --> Посмотрим статус сервиса.
 

Клиент...

Мы закончили наши действии с сервером. Перейдем на машину клиента. (например ваш ноутбук) | Я буду показывать на своем примере. У меня сейчас на ноутбуке стоит Arch Linux. Начнем с установки пакетов:

sudo pacman -S wireguard-tools systemd-resolvconf 

sudo systemctl enable systemd-resolved.service
 
sudo systemctl start systemd-resolved.service

sudo systemctl start systemd-resolved.service

Фоточка...

systemd-resolved status service...

Идем создавать конфиг для клиента...

sudo su

cd /etc/wireguard/

nano wg0-client.conf

Скопируем то что внизу и сохраним конфиг:
[Interface]
PrivateKey = <CLIENT-PRIVATE-KEY>
Address = 10.0.0.2/32
DNS = 1.1.1.1

[Peer]
PublicKey = <SERVER-PUBKEY>
Endpoint = <SERVER-IP>:51830
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 20

Выглядит это так:

wg0-client.conf
<CLIENT-PRIVATE-KEY> заменяем на приватный ключ клиента, то есть содержимое файла /etc/wireguard/zxc_privatekey на сервере. <SERVER-PUBKEY> заменяем на публичный ключ сервера, то есть на содержимое файла /etc/wireguard/publickey на сервере. <SERVER-IP> заменяем на IP сервера.

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

"wg-quick up wg0-client" и "wg-quick down wg0-client" --> Управление...

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

nano vpnu --> Создаем первый файл для подключение.

nano vpnd --> Создаем второй файл для отключение.

Пропишем там:                                                          
#!/bin/sh

wg-quick up wg0-client

А на втором файле "vpnd", заменим значение "up" на "down". Cохраним файлы.

chmod +x vpnu && chmod +x vpnd --> Права на выполнение. 

cp vpnu /usr/bin/vpnu && cp vpnd /usr/bin/vnpd --> Скопируем наши бинарники.

Посмотрим результаты:

Perfect

Все прекрасно работает. Успех 🔥

Итоги...

Houtarou sempai...

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

С вами был Томми, подпишитесь на блог, до встречи Господа. 🍷 Я пошел кушать, хех. А ты про телеграмм не забудь.

ням-ням

Телеграмм блог.