Wireguard VPN с веб-интерфейсом без мучений

Это еще один пост про VPN на своем сервере. Сегодня мы установим Wireguard VPN с удобным веб-интерфейсом, позволяющим создавать конфиги для друзей через браузер. Я сам пользуюсь таким решением и еще 20 моих знакомых.

Основные проблемы с VPN возникают во время поиска достойного провайдера VPS, которому можно заплатить российской картой. Выбирайте какой нравится, мне понравился TimeWeb, в котором всё уже готово. Правда я видел в комментариях его ругали, поэтому как вариант использовать Firstbyte. Он стоит 300р и чуть геморройнее регистрация, но там можно указать левую почту и рандомный телефон, взяв всё из генератора личностей.

Далее будет 2 шага: аренда сервера и создание клиентов для себя и друзей.

Аренда сервера

Переходим к аренде сервера. Выбирайте любого понравившегося провайдера. Если у вас есть иностранная карта, могу порекомендовать mvps.net, у них есть готовое VPN решение.

  • Заходите на сайт и регистрируетесь
  • Выбирайте в меню слева раздел Облачные серверы > Создать > Маркетплейсы > VPN > Wireguard-GUI
  • Выбирайте регион
Я выбрал Польшу
Я выбрал Польшу
  • Отключайте бэкап в разделе Дополнительные услуги
  • Оплачиваете. Я заплатил за месяц, вышло 188 руб. По умолчанию, карта оплаты привязывается на будущее — ее можно отвязать в разделе финансы.
  • Ждем письма на почту с данными для подключения к VPN.

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

Установка сервера закончена, осталось подключить клиенты — телефоны и компьютеры. Их может быть сколько угодно, у нас неограниченный трафик. Установите Wireguard на устройства.

  • Перейдите по ссылке в письме
Письмо от хостера
Письмо от хостера
  • Авторизуйтесь по паролю из того же письма
Окно авторизации
Окно авторизации
  • Нажмите кнопку New Client и укажите произвольное название. Я использую систему Страна-имя-клиент, чтобы не путаться в людях. Для примера создадим для подруги Алины конфиг для телефона Pol-Alina-Mobile.
Созданный клиент в веб-интерфейсе
Созданный клиент в веб-интерфейсе
  • У каждого конфига есть кнопка скачать и QR-код. Нажмите на кнопку QR-кода и он появится на экране.
  • Откройте Wireguard на телефоне и нажмите кнопку плюса
  • Отсканируйте созданный в веб-интерфейсе QR-код и вуаля, всё готово. Наш впн работает. Проверить это можно на любом сервисе вроде 2ip:
Слева: активация мобильного приложения, справа — скриншот с 2ip.ru
Слева: активация мобильного приложения, справа — скриншот с 2ip.ru

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

Заключение

Это раздел для продвинутых. Тут будут необязательные настройки и мои рассуждения.

Зачем это все?

Бесплатный сыр бывает только в мышеловке. Если вы используете бесплатный VPN, то спросите себя — на чем он зарабатывает? Бесплатные VPN сервисы продают ваши данные рекламодателям. Вы вообще ничего не знаете о том, что делают с вашим трафиком и никак этим не управляете. В дополнение, правительство стремится заблокировать популярные VPN сервисы.

Свой VPN сервер гарантирует вам не только стабильный канал, но и уменьшенную вероятность блокировки. Я пишу уменьшенную вероятность, но не гарантированную защиту — так как правительство постоянно создает новые методы противодействию обходу блокировок. Wireguard — довольно популярный протокол и его легко обнаружить. Как защитить свой сервис от блокировки мы рассмотрим в следующих статьях.

Вопросы безопасности

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

Но в идеале всё-таки аутентификацию по паролю отключить и оставить только по ключу. Ключ — по сути своей, это просто длинный пароль, который хранится у нас на компьютере. Для настройки авторизации по ключу:

  • Откройте Powershell и выполните команду ssh-keygen. Нажмите Enter 3 раза
  • Система сохранит файл ключа в папке C:\Users\Ваше_Имя_пользователя\.ssh/. Откройте эту папку и найдите в ней файл id_rsa.pub.
  • Откройте файл текстовым редактором и скопируйте содержимое
  • Вернитесь на сайт хостера и выберите свой сервер в разделе Облачные серверы
  • Перейдите в раздел Доступ
  • В поле SSH-ключи нажмите кнопку Изменить и вставьте скопированный ключ
  • Ключ добавлен. Вернитесь на шаг назад и активируйте созданный ключ. Подробная инструкция про ключи есть на сайте таймвеба.
  • Готово, теперь можно авторизоваться на сервере без пароля. Осталось отключить аутентификацию по паролю. Для примера я буду использовать адрес сервера 111.111.111.11
  • Зайдите на сервер по SSH: ssh root@111.111.111.111
  • Откройте файл конфига SSH: nano /etc/ssh/sshd_config
  • Найдите строчку PasswordAuthentication Yes и вместо Yes напишите No. Сохраните изменения, нажав Ctrl+X. На серверах таймвеба есть дополнительный файл с этой директивой, там тоже нужно отключить: mv /etc/ssh/sshd_config.d/50-cloud-init.conf ~
  • Перезапустите службу SSH: systemctl restart ssh
  • Готово, теперь сервер в безопасности и авторизоваться по паролю не получится. Сервер настроен и готов к работе.
Авторизоваться по паролю не вышло
Авторизоваться по паролю не вышло

Обновления

По умолчанию, автоматические обновления (unattended upgrades) системы уже включены. Проверить их можно командой systemctl status unattended-upgrades --no-pager -l

Можно еще создать пользователя чтобы не сидеть под рутом..:)

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

2626
11 комментариев

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

4

Вперед не РКН, а ресурсы зарубежные забанят, особенно которые "только не РФ, Беларусь и Северная Корея". Меня Adobe от беты Firefly отключили только за то, что нидерланднский VPN на выделенном сервере какой-то не совсем нидерландский :) был, через который я заходил через Outline. Точнее, что он принадлежит Хосткею. Тут чую также будет. Банят уже не по IP, а по хостерам.

2

А ты молодец, хорошая статья

2

"Если у вас есть иностранная карта" то эти танцы с бубном вам не нужны.

1

А без них не так интересно будет

1

Мучался в vnc консоли пару месяцев, потом разобрался как использовать ssh, чтобы можно было копировать публичные ключи а не переписывать на глаз. Через полгода увидел открытый порт с пробросом на 80 и установленный nginx, перешел и афигел - все это время у меня был установлен веб-интерфейс wireguard. Единственное, чтобы применились изменения в конфигах, приходится подрубаться к серверу и вручную перезапускать wg

1