Русский
Русский
English
Статистика
Реклама

Пост 5319706

Пак знаний, учение свет. #3 Wireguard, поднимаем свой VPN.

Сап джой, будет много текста и картинок, но тебе это понравиться (надеюсь).

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

Предистория:

Когда я выбирал какой протокол выбрать для поднятия забугорногоVPNсервиса,я ориентировался на то, что-бы туннель обладал высокой пропускной способностьюи не бы чувствителен к небольшой потери сигнала\пакетов (привет мобильноеинтернет соединение).
Тут была инструкция по настройке OpenVPN. Ни в коем случае не хочу приуменьшить вклад анона,так как я за любое просвещение людей в компьютерной грамотности. Вот только авторумолчал что OpenVPN достаточно медлителен,и тот же IPSecAESпочтив половину производительнее.
Так же любитель пожрать ресурсы хоста.
Throughput WireGuard IPsoc (ChaPoty) IPsec (AES-GCM) OpanVPN 128 256 384 512 640 768 896 1.024 megabits per second (higher is better),реактор образовательный,самообразование,it-безопастность,мануал,vpn,сделай сам,системный администратор,it,длинный пост
Ping Time WireGuard IPsec (ChaPoly) IPsec (AES-GCM) OpenVPN 0.5 1.0 I 0.0 milliseconds (lower is better) 1.5,реактор образовательный,самообразование,it-безопастность,мануал,vpn,сделай сам,системный администратор,it,длинный пост

пруф

Да и скажу честно, в принципе это сложно было назватьинструкцией.
Так же автор забыл о защите самого хоста, а это не мало важно.
Перейдём к практике:

Допустим вы уже приобрели себе VPS (вкомментах я подкину парочку, которые я сам юзаю, если хотите) И самостоятельно установили ОС. Я обычно использую либо Debian либо Ubuntu, вданном случае второе.
Давайте обновим пакеты, и поставим нужный софт:
Unpacking Iibqrni-glib5:arnd64 (1.30.4-l~ubuntu20.04.1) ... Selecting previously unselected package libqrni-proxy. Preparing to unpack .../21-libqrni-proxy_l.30.4-l~ubuntu20.04.l_amd64.deb ... Unpacking libqrni-proxy (1.30.4-l~ubuntu20.04.1) ... Preparing to unpack ..

sudoaptupdate && sudoaptupgrade -y && sudoaptautoremove -y && sudoaptinstallgitscreenfail2banmc

Конструкция sudo apt install git screen fail2ban mc отвечает за установкунужного нам ПО:
1) git это апекуха для импортирования проектов из git-репозиториев. Просто навсякий случай.
2) screen это для того, что бы в случае обрыва sshсоединениявы могли продолжить работать с того же места, где произошёл обрыв.
3) fail2banэто для защиты второй лини нашего vpnсервиса.

4) MC (MidnightCommander)это удобный файловый менеджер в консольной среде, что бы не возится скомандами навигации.

Обновляем и ставим всё это дело, после этого можноперезагрузить хост, и подключиться по SSH.
После подключения набираем команду screen, чтобы в случае обрыва связи, мы смогли вернуться обратнок работе без потерь.


Далее скачиваем деплой-скрипт с github.
curl -Ohttps://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh

alexfwireguard: $ curl -0 https://raw.githubusGrcontGnt.coni/angristan/wirGguard-install/raaster/wirGguard-install.sh % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 15554 100 15554 0 0 46154 0 : :---------------46154 alexwireguard: $
Делаем его исполняемым (даём права на выполнение для всех пользователей)
sudo chmod+x wireguard-install.sh
Запускаеми сразу после старта нас любезно спросят важные для сервера параметры. Давай ихразберём.
alexfwireguard: $ curl -0 https://raw.githubusGrcontGnt.coni/angristan/wirGguard-install/raastGr/wirGguard-install.sh % Total % RGCGivGd % Xford Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 15554 100 15554 0 0 46154 0 : :-----: :------46154 alexwireguard: $

Первая строка выводит нам твой внешний (белый) ip-шник к которому мы будемцепляться. Его не меняем, как бы не хотелось. Далее.
Public interface имя сетевой платы (если по простому) через который будетработать сервер.
Wireguard interface имя виртуальной сетевой платы. (имя вашего соединения,егонужно запомнить)
Следующие две стоки, внутренние ip-адреса.Здесь вы можете указать удобный для вас диапазон адресов, которое будутприсваиваться вашим устройствам при подключении к серверу.
Далее указываем внешний порт соединения к вашему серверу.
Стандартный порт: 57141.Я бы рекомендовал его сменить и\или запомнить, он пригодится очень скоро.
Последнее два вопроса, это dns сервера. Вы можете указать свои (если знаете какие) у меняже это адреса adguard. Что-бы блокировать рекламу.
Нажимаем Enterи ждём завершенияустановки\настройки. Скрипт начнёт скачивать нужные файлы для сервера.

По завершению тебя попросят ввести имя. Это имя твоегопервого соединения. Далее тебе предложат набрать ip-адрес.Лучше оставь его как есть. И в принципе всё. Тебе сгенерируется qr-коддля настройки соединения на твоём мобильном устройстве и путь к файлуконфигурации для других платформ. Сделай скрин, он нам потом пригодится. Что бысоздать ещё одного клиента просто запусти скрипт ещё раз и пройди все шагиснова заполняя данные. Под каждое устройство лучше иметь отдельную конфигурацию.
s. Client name: Alex Client's WireGuard IPv4: 10.66.66.2 Client's WireGuard IPv6: fd42:42:42::2 Here is your client config file as a QR Code: It is also available in /home/alex/wg0-client-Alex.conf If you want to add more clients, you simply need to run this script another time!

Длянастройки клиента на Winows\Mac\Linux тебепонадобится файл конфигурации. Он будет находится в директории указанной нижу qr-кода.Вот тут нам и понадобится MC. Запускаем его просто набрав MC (илиsudo mc, если хотите запустить с правами суперпользователя, нотогда придётся прогуляться по папкам)
В появившемся окне находим файл .conf именемкоторый мы давали конфигурации, нажимаем F4. Всписке текстовых редакторов лучше выбрать nano. Простоставим цифру, на против которой имя редактора и клацаем enter. Переднами конфигурационные данные, которые мы уже видели при создании пользователя.Скачиваем клиент для вашей ОС (в моём случае это Windows)
Клацаем на треугольник рядом с кнопкой добавить туннель Добавитьпустой туннель. В открывшаяся окно копируем из ssh сессииданные из файла, сохраняем. Ctrl+x выйтииз редактора и F10 выйти из MC. И впринципе с создание туннеля всё. Весь ваш трафик теперь перенаправляется на вашVPN. На этом можно было бы и закончить, но как я говорил,нужно обезопасить ваш сервер. Но сначала добавим возможность автоматическогозапуска туннеля, так как при перезагрузке сервер не запустится.
sudo systemctl enable wg-quick@имя_вашего соединения (wg0)
Готово.
Tabby alex@192.168.31.15:22 - С Переподключение \ш SFTP V Порты GNU nano 4.8_______________________________/home/alex/wg9-client-Alex.conf [Interface] PrivateKey = IGKlMNzNBCMd4nkcMbepratCVM7lOn4GD7KYfqitumV0= Address = 10.66.66.2/32,fd42:42:42::2/128 DNS = 94.140.14.14,94.140.15.15

Безопасность:
Небуду описывать сколько в интернете ботов и всякого другого дерьма, просто скажу,что их много и надо уметь постоять за себя и свою инфраструктуру. Этом мы ибудем заниматься.
Для начала сменим порт ssh-соединения.Открываем файл конфигурации ssh-сервера. (да, без оболочки. Так быстрее.) Запускаемобязательно с правами суперпользователя (sudo)
sudo nano /etc/ssh/sshd_config
Ищем в файле sshd_config строку port 22 Она обычно сверху. Убираем #, и меняем цифру на вашпорт, допустим 4422. Не забудьте его! Выходим предварительно сохранивизменения.
GNU nano 4.8 /etc/ssh/sshd_config # $OpenBSD: sshd_config,v 1.103 2018/04/09 20:41:22 tj Exp $ # This is the sshd server system-wide configuration file. See # sshd_config(5) for more information. # This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin # The strategy used for options

Перезапускаем службу ssh, что бы она получила новые параметры из файла.
sudo systemctl restart ssh.service

Перезапускаем ssh-сессию,не забывая сменить порт в подключении и при подключении снова набираем screen. Далеенастраиваем firewall. По умолчанию он выключен в ubuntu. Что бы проверить этонабираем sudo ufo status.И ответом нам будет Status: inactive. Прежде чем включать firewall настроим нужные правила, иначе удалённый хост станетнедоступен для нас по ssh. Вот список команд, просто вставляйте их в консоль:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 4422 <--
наш ssh
sudo ufw allow 57141 <--
наш Wireguard туннель

В двух словах что мы сделали: разрешили весь исходящий трафик, запретиливесь входящий кроме нашего ssh и нашего Wireguard сервера.
Включаем наш firewall командой:
sudo ufw enable
Вы получите предупреждение:
Command may disruptexisting ssh connections.Proceed with operation(y|n)?
Это означает, что запуск этого сервиса может разорвать текущее ssh соединение.

Но, так как мы его уже добавили ssh вправила, этого не произойдет. Поэтому просто нажмите (y).
Можно перезагрузится :)


Так же мы качали такую замечательную вещь как Fail2Ban, еёможно не настраивать так как она прекрасно работает из коробки. Я оставлю всессылки на все полезные ресурсы в конце, если захотите покопаться.

Заключение:
Отсылаяськ началу этой статьи я бы хотел сказать, что OpenVPN неплохой протокол, как это могло показаться. У Wireguard есть 2существенных минуса:

1) При подключении к хосту, клиенты могут видеть друг-друга. То есть вы можетепропинговать ваше соседнее устройство. Это можно исправить настройками firewallaи не так критично, но из коробки OpenVPNсразуотрезает подобное.
2) У Wireguard легко детектится его трафик, а именно момент обмена хендшейков(handshake) то есть в сам туннель попасть сложно, но вот определитьи прикрыть его можно легко. Нужно делать обфускацию трафика что-бы было сложнееего заметить. Сам я ещё не опробовал, но хочу заюзать socks5 дляпередачи первичной передачи хендшейка. У OpenVPNестьже готовая приблуда так же из коробки
Так же стоит упомянуть что я не настроил авторизацию на сервере через ключ-файл потому что мне лень, но я осталю на это линк ниже.
В принципе на этом всё, спасибо что прочитали, все ссылки на полезные ресурсы прилагаю.
Пост написан исключительно для любимого Джояи для тебя анон лично.
Занимайтесь самообразованием, остаюсь с вами на связи в комментах, если что то забыл - дополню там, пока.
реактор образовательный,самообразование,it-безопастность,мануал,vpn,сделай сам,системный администратор,it,длинный пост

Полезные сслки:
настройка Fail2ban
Wireguard клиенты
Мой ssh клиент
Git-репозиторий скрипта


Понравилось?
Да, хочу ещё! :)
52 (55.9%)
Нет, пшёл вон :(
3 (3.2%)
Я картошка
38 (40.9%)
Источник: joyreactor.cc
К списку статей
Опубликовано: 04.09.2022 22:46:20
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Реактор образовательный

Самообразование

It-безопастность

Мануал

Vpn

Сделай сам

Системный администратор

It

Длинный пост

Последние комментарии

© 2006-2024, ebanoeit.ru