ServerAdmin.ru
26.9K subscribers
189 photos
27 videos
8 files
2.49K links
Авторская информация о системном администрировании.

Информация о рекламе: @srv_admin_reklama_bot
Автор: @zeroxzed

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
​​Чтобы два раза не вставать, продолжу тему Tailscale. Покажу пару конкретных примеров личного пользования на базе бесплатного тарифного плана. Оба примера могут использоваться одновременно.

1️⃣ По умолчанию Tailscale заворачивает в VPN туннель только трафик своей сети. Но вы можете сделать так, что подключенное устройство весь свой внешний трафик (например, сёрфинг в интернете) будет заворачивать на одно из устройств сети.

К примеру, у вас есть какой-то внешний сервер для обхода блокировок. Вы добавляете все свои устройства в Tailscale, а для внешней виртуалки указываете настройку exit node. Выбранные вами устройства (например, смартфоны) после подключения будут заворачивать весь свой трафик на эту виртуалку по умолчанию. Описание настройки.

2️⃣ Если вы используете блокировщики рекламы, то можно настроить свой собственный сервер Pi-hole и использовать его возможности. Для этого надо добавить машину с настроенным Pi-hole. Далее в настройках Tailscale добавить DNS сервер, указав внутренний IP адрес Pi-hole сервера. И отдельно указать, что подключенным клиентам надо заменять их локальный DNS сервер на настроенный.

При сёрфинге с подключенным Tailscale все DNS запросы будут проходить через ваш Pi-hole и очищаться от рекламных доменов. Особенно это актуально для смартфонов. Если блокировку надо отключить, то просто отключаетесь от Tailscale. Описание настройки.

Ещё больше примеров и готовых инструкций можно посмотреть в документации в разделе How-to Guides.

Показанные выше примеры без проблем можно реализовать с помощью OpenVPN. Он умеет и настройки DNS, и маршруты передавать клиенту. Я неоднократно это настраивал. Но всё это делается в консоли, а для этого нужно хорошее понимание и знание работы OpenVPN. С Tailscale всё это делается за 5-10 минут через настройки в веб интерфейсе. Единственное, что надо будет настроить — включить маршрутизацию трафика на exit node. Но есть одно очень важное принципиальное отличие. OpenVPN весь трафик пропускает через себя, а Tailscale напрямую соединяет устройства. Трафик между ними идёт минуя управляющий сервер.

#vpn #tailscale
Я долго это терпел, но не выдержал. Надоело то, что не грузятся аватарки в youtube. Для всех других сайтов обходился редким включением VPN, так как не часто хожу по запрещёнке. Но ютубом пользуюсь каждый день.

В итоге настроил:
 OpenVPN сервер на американском VPS.
 Подключил его к домашнему Микротику.
 Создал Address List со списком доменов, запросы к которым хочу заворачивать в VPN туннель.
 Промаркировал все запросы к этому списку.
 Настроил в routes маршрут через OpenVPN туннель для всех промаркированных запросов.

И о чудо, спустя почти год я постоянно вижу все картинки с ютуба.

Подробно весь процесс настройки показан вот в этом видео:

Wireguard + Mikrotik. Частичное перенаправление трафика
https://www.youtube.com/watch?v=RA8mICgGcs0

Единственное отличие — у автора уже RouterOS 7 и настроен WireGuard. Мне пока не хочется экспериментов с 7-й версией, поэтому я до сих пор везде использую 6-ю. А там поддержки WG нет, поэтому подключаюсь по OpenVPN.

#vpn #mikrotik
​​Думаю, многие из вас слышали или пользовались такими сервисами как Hamachi и Logmein. Если я не ошибаюсь, то раньше это были разные продукты. Hamachi использовался для быстрой настройки локальной сети через интернет. Я её использовал в 2000-е для сетевой игры по интернету. Например, в те же Герои 3. А Logmein — это сервис, похожий на Teamviewer, но появился раньше. Там тоже можно было подключаться к компьютеру, передавать файлы и т.д. И всё это управлялось через личный кабинет в браузере. Было удобно.

Одно время эти сервисы были с бесплатными тарифными планами. Я пользовался ими. Потом бесплатные тарифные планы убрали, пользоваться перестал. На днях решил посмотреть, как они поживают. Старая учётка сохранилась. Как оказалось, для Hamachi вернули бесплатный тарифный план на 5 устройств для каждой отдельной сети. Ограничений по количеству самих сетей не увидел.

Решил посмотреть, как это всё работает сейчас. Сервис довольно удобный. Всё управление возможно через личный кабинет. В единую сеть можно объединить Windows, Linux, MacOS машины и смартфоны на Android и iOS. Я проверил и добавил 2 виндовые машины, одну линуксовую без иксов, только с консолью (ставится консольный клиент из deb или rpm пакета), и свой смартфон на Android. Всё настроил довольно быстро. Немного повозился только со смартфоном. Там настраивается штатное VPN соединение с сервером Hamachi. Для этого надо закинуть личный сертификат на устройство и использовать его в настройки подключения через IPSEC Xauth RSA. Но можно было и попроще сделать через PPTP.

В итоге все 4 устройства оказались в общей локальной сети. Можно обмениваться файлами или какие-то сервисы запускать, типа Syncthing. На выходе удобный функционал в бесплатном тарифном плане. Для личного использования вполне достаточный.

Личный кабинет регистрировать на https://www.logmein.com, описание функционала Hamachi на отдельном сайте https://www.vpn.net. После регистрации в личном кабинете, вы можете добавить компьютеры в раздел Computers, это для функционала удалённого управления. Там бесплатного тарифа нет, только триал на 30 дней. А в разделе Networks можно создать свою сеть и добавить туда до 5-ти устройств бесплатно. Сетей может быть много.

Похожая функциональность есть у сервиса Tailscale, про который я несколько заметок делал. Там в бесплатном тарифном плане было 20 устройств и не было поддержки мобильных клиентов. Сейчас зашёл проверить, уже после написания этой заметки, а в бесплатном тарифном плане 100 устройств и поддержка смартфонов. Получается по всем параметрам лучше Hamachi, кроме некоторых нюансов. В Hamachi вы очень просто и быстро создаёте локальную сеть и закидываете туда клиентов. Сетей может быть несколько, клиенты будут изолированы друг от друга и видеть только участников своей сети. В Tailscale не помню, каким образом реализован этот же функционал. В таком простом и явном виде я его не помню.

#vpn #бесплатно
На днях история с неработающим OpenVPN наделала шума. Я регулярно новости не читаю, поэтому даже не сразу понял, о чём идёт речь, когда разные люди стали писать по этой теме. Для тех, кто не в курсе, о чём идёт речь, немного ссылок по теме: habr, securitylab, tproger.

У меня много где используется OpenVPN. Это основная технология для построения VPN, которую я использую, как на работе, так и в личных целях. Когда узнал про блокировки, проверил у себя, проблем не нашлось. К серверу в USA без проблем подключился. Позже вечером заметил, что дома не работает обход блокировок. Там Mikrotik подключается по TCP. Подключение не работало, хотя по UDP из этой же квартиры без проблем подключался. Подумал, что вот оно, я тоже столкнулся. Но на самом деле нет. Пошёл на сервер и увидел, что TCP туннель пару дней назад упал по какой-то причине. Буду с этим отдельно разбираться. По факту всё работает, даже через упоминаемую в новостях Yota.

Что это на самом деле было — не знаю. Может банальный сбой, может тестирование блокировки openvpn, может тестирование чего-то другого, что косвенно задело vpn. Информации нет, так что остаётся только гадать на кофейной гуще. Больше всего похоже на разовую акцию для информационного шума. Уж больно лихо все СМИ подхватили эту тему.

Я думаю, что блокировка VPN за пределы РФ, как и многих популярных иностранных сервисов типа youtube, в итоге состоится. Нарастающая логика происходящий событий такова. Это вопрос времени. Внутри РФ, думаю, что VPN работать будет. Возможно, нас ещё раньше на той стороне заблокируют. Там же свобода и рыночная экономика.

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

Как минимум у нас останется вариант с маскировкой под HTTPS. Можно будет поднять OpenConnect или SSTP, который умеет поднимать тот же SoftEther VPN. Их трафик трудноотличим от обычного web трафика. Для тех, кому жизненно важно подстраховаться, рекомендую поднять что-то подобное на случай реальной блокировки.

Много раз слышал, что плохо детектится и блокируется технология Shadowsocks. Легко и быстро настраивается, клиенты есть под все платформы. На её базе работает Outline VPN, Shadowsocks for Windows и многие другие программы. Легко гуглятся, пока гугл не заблокирован. Думаю, до него не дойдёт, хотя кто знает.

Ещё один вариант — завернуть весь VPN трафик в Udp2raw-tunnel. Он умеет маскировать трафик, добавляя фейковые заголовки пакетам. Если блокировка идёт без разбора содержимого пакетов, то может помочь.

Расскажите, столкнулись ли вы с блокировкой OpenVPN. Если да, то как это выглядело и какие параметры канала были. Какой протокол и порт использовался, включено ли сжатие трафика.

#vpn
​​Последнее время стала актуальна тема VPN. Расскажу вам по этому поводу про интересный open source проект — Nebula. Авторы называют его scalable overlay networking tool, что для меня затруднительно однозначно перевести. В общем случае это программа для построения связной виртуальной сети поверх физической, в том числе и через интернет.

Термин overlay обычно применяют для больших виртуальных сетей, построенный как бы над обычными. Есть физические сети underlay и виртуальные overlay. В Nebula используется агент, который устанавливается на каждый хост и в зависимости от своих настроек, подключается к тем или иным хостам. Соединения образуются между хостами напрямую (p2p), то есть получается mesh сеть. В этом основное отличие от традиционных VPN сетей, где используются туннели между шлюзами, а все остальные хосты общаются друг с другом посредством шлюзов.

Nebula разработали в Slack и потом выложили в открытый доступ. Авторы инструмента открыли свою компанию, saas сервис, занимаются внедрением и поддержкой. У них, кстати, есть бесплатный тарифный план.

Развернуть Nebula у себя не представляет большой сложности. Простейшая инструкция для запуска есть в самом репозитории. Аутентификация хостов происходит посредством сертификатов, как в openvpn. Так что придётся поднять свой CA и выпускать для клиентов сертификаты. У Nebula всё это есть в комплекте, так что не придётся прибегать к сторонним инструментам.

Пример выпуска CA:
# ./nebula-cert ca -name "Myorganization, Inc"
Сертификата для клиента:
# ./nebula-cert sign -name "laptop" -ip "192.168.100.2/24" \
-groups "laptop,home,ssh"

Тут сразу идёт функциональная привязка к выпущенному сертификату, так что продумать структуру сети нужно до выпуска сертификатов. Потом клиенту передаётся конфиг с сертификатом, где указан IP адрес одного или группы хостов, которые выступают в роли управляющего сервера. Точкой обмена трафиком они не будут. В зависимости от своих настроек, хосты обмениваются трафиком между собой напрямую. Даже если оба клиента находятся за NAT, управляющая нода соединит их напрямую посредством технологии UDP hole punching.

Если я правильно понял принцип работы Nebula, VPN туннели поднимаются динамически между хостами в случае необходимости. При этом используется своя технология на базе обмена ключами Диффи-Хеллмана (ECDH) и шифре AES-256-GCM. То есть это не надстройка над каким-нибудь wireguard или чем-то аналогичным. И всё это создано для построения очень больших сетей из сотен и тысяч хостов.

Nebula немного похожа на Tailscale, только у неё изначально всё готово для установки на своём железе. Нет привязки к облачному сервису. Для Tailscale тоже есть подобный сервер — Headscale. Но его развивают и поддерживают другие люди, не разработчики.

⇨ Сайт / Исходники / Документация / Обзор

#vpn
​​Популярный вопрос по поводу OpenVPN. Как на одном сервере с несколькими внешними IP адресами настроить независимую работу VPN на каждом IP адресе. Сделать это очень просто. Фактически, это штатная работа службы OpenVPN, даже ничего колхозить не придётся.

Настраиваете OpenVPN как обычно для одного IP адреса. Допустим, вся конфигурация у вас описана в /etc/openvpn/server/server1.conf. Запускаете вы этот сервер так (если установили в Debian из базовых реп):
# systemctl start openvpn-server@server1.service

Теперь добавим ещё один сервер и запустим 2 экземпляра OpenVPN, каждый на своём внешнем ip. Для этого в конфигурацию server1.conf добавляем параметр local, указав внешний IP адрес, и сразу обозначим tun интерфейс, на котором он будет работать и адресное пространство этого туннеля:
local 1.2.3.4
dev tun1
server 10.8.1.0 255.255.255.0

Копируем этот конфиг для запуска второго сервера:
# cp server1.conf server2.conf
В него добавляем свои параметры:
local 4.3.2.1
dev tun2
server 10.8.2.0 255.255.255.0

Все остальные настройки могут быть как идентичными первому серверу, в том числе использовать те же сертификаты и CA, так и совершенно разными. Они между собой никак не будут связаны. Это будут два отдельных сервера OpenVPN. Запускаем второй сервер:
# systemctl start openvpn-server@server2.service

Проверяем:
# ip a | grep 'global tun'
  inet 10.8.1.1/24 scope global tun1
  inet 10.8.2.1/24 scope global tun2

# netstat -tulnp | grep openvpn
udp    0   0 1.2.3.4:1194     0.0.0.0:*              1330/openvpn     
udp    0   0 4.3.2.1:1194   0.0.0.0:*              1321/openvpn     

Таким же образом вы можете копировать конфигурации сервера и запускать разные туннели на разных портах, с разным шифрованием, настройками и т.д. Если у вас есть возможность докупать внешние IP на VPS, то вы сможете настроить многофункциональный VPN сервер под любые запросы. Это очень удобно. К тому же просто и быстро настраивается. И так же потом обслуживается. Каждый туннель можно настроить на свой лог файл, свою статистику и т.д. Всё это мониторить, анализировать, ограничивать доступ к каким-то туннелям, настраивать для них правила файрвола, разным туннелям пушить разные маршруты, разные настройки пользователям. В общем, красота. Я не знаю, где ещё подобные вещи настраиваются так же легко и просто.

#openvpn #vpn
​​Последнее время всё чаще и чаще появляется информация о блокировках тех или иных VPN соединений. При этом я ни разу не слышал, чтобы уже реально блокировали технологию Shadowsocks. В связи с этим хочу вам напомнить об одном простом и удобном приложении для построения личных VPN сетей на базе Shadowsocks. Речь пойдёт про Outline-Server и Outline-Client. Добавил эти пояснения, так как при поиске Outline отсвечивает другой, более популярный продукт с таким же именем, который является менеджером заметок.

Основное удобство Outline в том, что его очень легко настроить и использовать. Для установки своего сервера достаточно взять в аренду любую VPS. Скачать себе на компьютер приложение Outline-Manager, которое автоматически подключит VPS и всё там настроит.

После этого вам достаточно установить клиент на любое своё устройство (Windows, Linux, MacOS, Android, iOS), прописать туда настройки своего сервера и пользоваться. Клиент будет автоматически заворачивать весь трафик в туннель. На выходе будет IP адрес вашего сервера. Можно купить несколько VPS в разных странах, развернуть там Outline Server, добавить их к себе в клиент и переключаться.

Справиться с настройкой сможет практически любой человек, который способен взять в аренду VPS и подключиться к нему по SSH. Outline можно рекомендовать разным людям, не только айтишникам.

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

1️⃣ Арендуем где угодно VPS. Я могу от себя лично порекомендовать хостеров serverspace.ru или ruvds.com. Не буду говорить, что они лучше других. Просто я сам их использую и меня они устраивают.

2️⃣ Скачиваем Outline Manager под свою систему. Я использовал Windows. После запуска приложения, установка будет выполнена автоматически в профиль текущего пользователя в AppData\Local\Programs\outline-manager.

3️⃣ После запуска приложения добавьте туда свой сервер. Для этого выберите самый последний пункт Настройте Outline где угодно. Вы увидите команду, которую нужно запустить по SSH в консоли VPS.

4️⃣ После завершения установки на сервере, в консоли увидите ключевую строку, которую нужно скопировать и вставить в Outline Manager. Сервер добавлен.

5️⃣ Скачайте и установите на другое устройство Outline Client. Создайте в Outline Manager для него ключ и скопируйте его в клиент. Он автоматически добавит ваш сервер. Теперь к нему можно подключаться и пользоваться.

Базово сервер позволяет смотреть статистику трафика для каждого клиента и настраивать для них месячные ограничения по объёму трафика.

Сайт / Исходники

#vpn #shadowsocks
​​На днях в комментариях посоветовали необычный open source проект для обхода блокировок от иранских и китайских разработчиков — Hiddify. Это набор различных инструментов и технологий для маскировки трафика в интернете. Всё это собрано и организовано в единую веб панель для управления настройками и клиентами.

Для установки есть bash скрипт под Ubuntu 20 или 22. Я воспользовался им и развернул Hiddify на своём VPS. Подробности приводить не буду, они все есть в инструкции. Всё устанавливается автоматически. После работы скрипта вам предоставят ссылку на веб интерфейс. Также в консоли будет меню управления сервисами с базовыми возможностями (посмотреть статусы, логи, перезапустить и т.д.). Установщик в том числе корректно всё настроит с вашим доменным именем, а не только с IP адресом.

Я даже не знаю, на чём конкретно остановиться, рассказывая об Hiddify. Он умеет кучу всего. В основе используется протокол XTLS и его реализация в сервере Xray. Он поддерживает все современные популярные реализации шифрованных протоколов: vmess, vless, v2ray, shadowsocks, trojan. Я так понял, это всё в основном придумано китайцами для обхода своих блокировок.

Панель удобно организована. Вы создаёте пользователя. Далее открываете его страницу. Там помимо информации о самом пользователе и его статистике, будут ссылки на клиенты под Android, iOS, Windows. Причём представлены несколько разных клиентов, которые скачать можно как из стандартных маркетов, так и напрямую с вашего сервера. Там же можно управлять настройками конфигураций и получить настройки прокси сервера для Telegram.

Пользователь на своей персональной странице может проверить скорость соединения с вашим сервером через локальный speedtest. Это сделано для того, чтобы можно было наглядно оценить разницу между прямым подключением и шифрованным. Там же есть тест работы DNS over HTTPS.

Панель как будто подготовлена для предоставления массовой услуги. Есть поддержка квот по трафику с обнулением раз в неделю или месяц. А также работа на нескольких доменах. Вы можете использовать её незаметно для пользователей на разных доменах. Одних к одному подключать, других к другому. Так же есть поддержка telegram бота, которого можно использовать для отправки персональных или массовых сообщений пользователям. Там много всяких дополнительных фишек типа этой.

Панель на вид прикольная, функциональная, удобная. Я почему-то не нашёл вообще никаких материалов на русском языке по этой части. Наверное пока ещё не было серьезных поводов для использования.

Судя по всему, все эти инструменты — последние прибежища заблокированных. Я раньше даже не знал, что существует такое количество шифрованных протоколов для обхода всевозможных блокировок и ограничений. Думаю, скоро нам всё это пригодится. Причём я не берусь судить, хорошо это или плохо. Мир распадается на сегменты. Это данность наступающего будущего, в котором некоторые уже давно живут, типа Китая или Ирана, а мы туда тоже потихоньку вкатываемся.

Сайт / Исходники / Видеообзор

#vpn #xray
​​Я много раз видел упоминание сервиса Netmaker, который служит для организации overlay сетей с помощью Wireguard. Это open source продукт, который можно развернуть у себя, либо воспользоваться облачным сервисом по подписке. Сразу скажу на кого он похож, чтобы было понятно о чём пойдёт речь: Nebula, Tailscale, ZeroTier.

Netmaker среди этих продуктов едва ли не самый популярный. Я последнее время много о нём слышал упоминаний. Его можно использовать и как для построения Site-to-Site соединений, так и для Mesh сетей.

Попробовать его можно в рамках бесплатного тарифного плана в SaaS сервисе. Там дают возможность добавить одну сеть и соединить с её помощью до 30-ти устройств. А если понравится, можно и у себя развернуть. Ставится автоматически с помощью готового bash скрипта.

Netmaker представляет из себя веб интерфейс, где вы добавляете хосты, формируете для них ключи, с помощью которых они объединяются в VPN сети. Настройками хостов и сетями управляете там же, в веб интерфейсе. Сервис полностью управляется через него. В консоль нужно будет лазить только на хостах, когда их будете подключать.

Перечислю несколько задач, которые можно будет решить с помощью Netmaker:

🔹У вас есть закрытая сеть с ограниченным доступом из интернета. На один из хостов ставится клиент Netmaker. С помощью настроек вы открываете доступ к закрытой сети через этот хост для какого-то набора остальных клиентов.

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

🔹С помощью Netmaker организуется Mesh VPN, где клиенты взаимодействуют друг с другом напрямую, а не через управляющий сервер, как, к примеру, в классическом openvpn.

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

Помимо этих примеров, в Netmaker есть следующая функциональность:
Мониторинг состояния сетей и хостов
Списки доступа к хостам и сетям
Управление пользователями и их правами на основе модели RBAC

Продукт известный, функциональный. В сети много руководств и роликов с описанием возможностей и настройки.

Сайт / Исходники

#vpn
​​Когда вы настраиваете VPN, встаёт вопрос выбора размера MTU (maximum transmission unit) внутри туннеля. Это размер полезного блока с данными в одном пакете. Как известно, в сетевом пакете часть информации уходит для служебной информации в заголовках. Различные технологии VPN используют разный объём служебных заголовков. А если VPN пущен поверх другого VPN канала, то этот вопрос встаёт особенно остро.

Если ошибиться с размером MTU, то пакеты начнут разбиваться на несколько, чтобы передать полезный блок с данными. Это очень сильно снижает скорость передачи данных. Минимум в 2 раза, но на деле гораздо больше.

Правильно выбрать размер MTU можно с помощью готового калькулятора - Visual packet size calculator. Его автор, кстати, Даниил Батурин, который иногда ведёт бесплатные вебинары Rebrain, которые я периодически рекламирую. Рекомендую послушать, интересно.

К сожалению, в калькуляторе нет OpenVPN. И я как-то сходу не смог найти информацию, сколько места занимают служебные заголовки этого протокола. Покажу пример для WireGuard, если я всё правильно понимаю. Если ошибаюсь, прошу поправить.

Мы устанавливаем туннель WireGuard, чтобы гонять по нему ipv4 трафик. Идём в калькулятор и выстраиваем там цепочку:

IPv4 (20 bytes) ⇨ WireGuard (40 bytes) ⇨ IPv4 (20 bytes)

Имея на родительском интерфейсе MTU 1500, внутри туннеля нам необходимо установить его 1420. Если не ошибаюсь, это как раз значение по умолчанию для WireGuard.

Тема MTU довольно сложная. Если вы не сетевой инженер и специально ей не интересовались, то вникнуть непросто. На практике я сталкивался с подобными проблемами. Решал их в меру своих сил и способностей - просто уменьшал MTU до некоторых значений, когда проблем пропадала. Если вы не разбираетесь детально в этой теме, рекомендую поступать так же. И важно знать, что если у вас PPPoE соединение от провайдера, то оно дополнительно 8 байт занимает на заголовки. Часто дефолтные значения различного софта не учитывают этого нюанса и нужно будет поправить вручную.

#vpn #network
​​Для WireGuard существует большое количество простых панелей управления, типа wg-easy (мне, кстати, нравится, я пользуюсь), либо каких-то более масштабных готовых продуктов с WG внутри. Но насколько я знаю, мало кто из них поддерживает аутентификацию через LDAP.

Для решения этой задачи существует WireGuard Portal. Я не раз видел положительные отзывы о нём, в том числе в комментариях к своим заметкам. Это полностью бесплатный, open source проект. Его ещё с какого-то времени Docker начал спонсировать.

WG портал легко устанавливается и настраивается. Это веб интерфейс для управления пользователями VPN. Особенность его в том, что он поддерживает хранение пользователей в SQLite, MySQL, MsSQL, Postgres и аутентификацию через OAuth или LDAP (Active Directory и OpenLDAP). Для бесплатного продукта это хороший набор возможностей. Обычно всё, что связано с LDAP, относится к коммерческим версиям.

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

1️⃣ WG Portal использует текущую установку WireGuard в системе, сам не ставит. Так что предварительно установите WG вручную. А если он уже установлен, то забэкапьте на всякий случай свои настройки в /etc/wireguard, если она вам нужны. Портал будет их менять в процессе управления.
2️⃣ Версия v2 пока в разработке. Используйте stable v1.
3️⃣ По умолчанию, если не будет отдельно настроено хранение пользователей, они будут храниться в .data/sqlite.db, откуда вы запустите compose.
4️⃣ Пример композа и конфигурации можно посмотреть на dockerhub или в документации. Не забудьте v2 поменять на v1. Почему-то все примеры с v2, хотя это ветка для разработки.

В целом, каких-то особых сложностей в установке и настройке нет. Ниже ссылка на видео, где подробно описан весь процесс, в том числе с LDAP.

Сайт / Исходники / Видеоинструкция

#vpn #wireguard
​​Расскажу вам про один любопытный инструмент, который часто используют либо пентестеры, либо хакеры, чтобы закрепиться в чужой инфраструктуре. А так как это всё напрямую связано с системным администрированием, то инструмент может пригодиться и в обычных делах. Благо он очень простой для использования и освоения, поэтому относительно популярный. По нему много информации в англоязычном интернете.

Речь пойдёт про Chisel — это TCP/UDP туннель, который работает поверх HTTP с использованием SSH. Причём представляет он из себя один бинарник, написанный на GO. Один и тот же файл и для сервера, и для клиента, работает под всеми популярными системами. То есть вы можете поднять сервер на Windows, а подключиться клиентом с Linux и наоборот. Благодаря тому, что chisel работает поверх HTTP, вы очень быстро и просто можете поднять необходимый туннель там, где этот протокол открыт. Покажу сразу на примерах.

1️⃣ Пример, который в настоящее время очень актуален. Быстро поднимаем SOCKS5 прокси, через который будем выходить в интернет. Качаем бинарник под свою систему из репозитория:
# wget https://github.com/jpillora/chisel/releases/download/v1.9.1/chisel_1.9.1_linux_amd64.gz
Делаем его исполняемым и запускаем сервер:
# ./chisel server --port 80 --socks5
Подключаемся с Windows машины:
> chisel.exe client http://<server-ip>:80 socks
Теперь идём в браузер и настраиваем socks прокси: адрес - 127.0.0.1, порт 1080. Проверяем на любом сервисе для определения ip адреса. Браузер должен выходить в интернет через IP адрес сервера. Можно добавить аутентификацию:
# ./chisel server --port 80 --socks5 --auth user123:password321
> chisel.exe client --auth user123:password321 http://188.227.57.126:80 socks
Очень просто и быстро. Не нужны никакие VPN туннели. Оставляем отдельный браузер под эту прокси и выходим по мере нужды в интернет через него.

2️⃣ Ещё пример. Допустим, мы хотим подключиться по SSH к машине, к которой нет доступа извне, но сама она может по HTTP стучаться наружу. Очень часто HTTP протокол открыт хотя бы для того, чтобы качать обновления на сервер или для каких-то других нужд. Берём любой свой сервер, к которому есть прямой доступ через интернет и запускаем там chisel. Если свободен 80-й порт, можно прямо на нём. Если нет, то выбираем любой другой.
# ./chisel server -p 80 --reverse
Теперь идём на закрытый сервер, качаем туда бинарник под свою систему и подключаемся как клиент к серверу, где мы до этого запустили chisel:
# ./chisel client http://<server-ip>:80 R:2222:localhost:22
При подключении клиента будет создан обратный туннель с 2222 порта сервера на 22-й порт клиента. Теперь, чтобы подключиться по SSH к клиенту, достаточно выполнить на сервере:
# ssh -p 2222 root@127.0.0.1
и ввести учётные данные от клиента. Таким образом, не имея прямого доступа к клиенту, мы подключились по SSH к нему с использованием обратного туннеля по HTTP, который клиент инициировал сам.

3️⃣ Обратный пример, когда мы хотим не с сервера подключиться к клиенту, а с клиента подключиться к какому-то сервису на сервере, доступ к которому напрямую закрыт. Допустим, на сервере крутился mysql на 127.0.0.1:3306. Мы хотим к нему напрямую подключиться с клиента. Запускаем так же сервер:
# ./chisel server -p 80 --reverse
Подключаемся к нему клиентом:
# ./chisel client http://<server-ip>:80 33306:localhost:3306
Теперь с клиента вы можете подключиться к mysql серверу:
# mysql -h 127.0.0.1 -P 33306 -u root
Попадёте в консоль сервера, к которому подключились клиентом.

Те, кто активно пользуются возможностями SSH, думаю, уже поняли, что это все те же возможности протокола SSH, только обёрнутые в HTTP через chisel. Про то, как то же самое делать напрямую через SSH я писал ранее:

⇨ SOCKS-прокси через ssh и переадресация портов

Chisel умеет маскировать себя. Для этого есть ключ --backend Если на сервер приходит обычный HTTP запрос, не от клиента, он может перенаправить его на web сервер.

Исходники

#vpn #ssh
​​Познакомлю вас интересной VPN системой на базе Wireguard, которую недавно посоветовали в комментариях - DefGuard. Это open source проект с очень привлекательными возможностями, который можно развернуть полностью у себя. Это аналог таких продуктов, как firezone, pritunl, netbird.

📌 Что в первую очередь привлекает внимание:
▪️ многофакторная (MFA) или двухфакторная (2FA) аутентификация на базе TOTP/Email и pre-shared keys;
▪️ интеграция с OpenID
▪️ возможность объединения нескольких VPN шлюзов с разными настройками в едином веб интерфейсе;
▪️ возможность подтягивать пользователей из LDAP;
▪️ система прав доступа к туннелям на базе пользователей и паролей;
▪️ свой десктопный клиент для реализации MFA;

Набор возможностей для бесплатного self-hosted продукта внушительный. При этом по стурктуре он не очень сложный. Я почитал описание, документацию, развернул у себя и в целом разобрался с его концепцией. Но сразу скажу, что быстро настроить и всё попробовать не получилось. Где-то часа два провозился, часть возможностей настроил, но не всё. MFA не сделал. Попробовал только создание пользователей, заведение VPN шлюза, подключение клиента.

Расскажу оснвную идею, как это работает. DefGuard упакован в Docker. Развернуть монжо как вручную через docker compose, так и автоматически через bash скрипт. Вся информация в репозитории и документации.

Далее вы идёте в веб интерфейс, добавляете новый Location. Это сущность, которая представялет из себя настроенный сервер Wireguard. Он может быть установлен как локально вместе с веб интерфейсом, так и вынесен куда-то в другое место. Таких Location может быть много. У каждого свои настройки, маршруты, которые он обслуживает, группы пользователей, которым можно к нему подключаться.

Далее создаёте пользователя со своими параметрами. Можно настроить сервер так, что после создания пользователя, он будет отправлять email со всеми ссылками и паролями. Пользователь может зайти в веб интерфейс под своей учёткой, посмотреть свои настройки, WG туннели, которые ему доступны, статистику подключений. Может скачать настройки отдельных туннелей, чтобы использовать их в любых других клиентах WireGuard, если у него не включена MFA.

Родное приложение позволяет реализовать возмжоность MFA при подключении к серверам DefGuard, а так же использовать его как обычный WG клиент для подключения к любым другим VPN туннелям. У меня не получилось настроить MFA. Либо что-то не допонял по последовательности действий, либо где-то ошибся. Думаю, что там всё работает нормально, так как в Issues не заметил каких-то вопросов по этой теме. Думаю, надо просто больше времени потратить на настройку.

Помимо всего описанного, DefGuard поддерживает YubiKeys. У меня, кстати, есть такой. Любопытная штука, но я так и не стал им пользоваться. Также реализованы Webhooks на некоторые действия с пользователями: создание, удаление, смена пароля, добавление YubiKey. В осноном это для того, чтобы настроить те или иные введомления для пользователя.

Благодаря интеграции с OpenID, можно настроить сквозную аутентификацию через DefGuard в друиге сервисы, которые тоже его поддерживают. Например, Proxmox. Пример, как это выглядит, показан в документации. Там же есть примеры интеграции с Portainer, Grafana, MinIO, Vault, Django, Matrix.

В целом, продукт очень привлеактельный. Из бесплатных self-hosted аналогов не много. Netbird.io разве что. Расскажу про него на днях отдельно.

Сайт / Исходники

#vpn #wireguard
​​На базе Wireguard есть очень крутая, частично бесплатная, open source платформа для построения VPN сетей - netbird.io. Это платный SaaS сервис, который имеет бесплатный тарифный план, а так же бесплатную self-hosted версию. Расскажу кратко своими словами, что она из себя представляет и как работает.

Вы разворачиваете у себя серверную часть из пакетов или готового docker compose файла. Далее на любую популярную десктопную или мобильную систему устанавливаете агента. Причём установка максимально простая. Достаточно при установке указать url сервера и специальный ключ. Установленный агент появляется в панели управления сервером.

Теперь все настройки выполняются через веб интерфейс на сервере. Вы можете пользователей и подключенные сервера объединять в различные группы и настраивать политики доступа на уровне файрвола и маршрутов. Можно, к примеру, создать группу пользователей и группу тестовых серверов. И разрешить этим пользователям пинговать, подключаться по SSH и HTTP к этим серверам. И больше ничего. Настройки очень гибкие.

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

Таким образом, с помощью netbird можно покрыть всю существующую инфраструктуру и централизованно управлять доступом. Причём политики доступа могут быть очень гибкие. Например, можно запретить подключаться клиентам с какой-то определённой версией системы. Например, Windows 7 или iOS, если у ваших сотрудников их нет вообще. То же самое можно делать по географическому признаку - запретить подключаться из каких-то стран.

Подключения между агентами устанавливаются напрямую, если это возможно. Если нет - используется технология STUN и TURN. Пиры VPN сети связаны между собой на базе Wireguard. Для тех, кто будет писать, что WG блокируют, сразу скажу, что это не инструмент для обхода блокировок. Не надо его пытаться использовать в этом ключе. Это система для построения mesh сети разнородных узлов с централизованным управлением доступа.

У Netbird нет собственной системы хранения учётных записей. Используется внешний IdP (identity provider). Это может быть Authentik, Keycloak или Zitadel. Для self-hosted установки есть готовый docker compose, где автоматически разворачивается Netbird в связке с Zitadel. Есть готовый bash скрипт для установки этой связки. Необходимо подготовить VPS с внешним IP и настроенной DNS записью. Далее просто запускаем:

# export NETBIRD_DOMAIN=netbird.example.com; curl -fsSL https://github.com/netbirdio/netbird/releases/latest/download/getting-started-with-zitadel.sh | bash

Подробно подобная установка и управление этой связкой описано в соответствующем разделе документации.

По возможностям Netbird очень сильно похож на Tailscale, только у последнего нет официального self-hosted сервера с подобной функциональностью. Тут мне что-то подсказывает, что со временем тоже не будет. Слишком хорош он в подобной редакции. Скорее всего по мере роста популярности, возможности self-hosted версии будут уменьшаться. Так же его можно сравнить с Netmaker или Nebula, но по возможностям и удобству он их превосходит.

Подробный обзор установки и использования Netbird можно посмотреть в свежем видео:

▶️ Install a self-hosted VPN platform // Netbird

Я ничего похожего по возможностям и забесплатно не знаю. Выглядит всё очень удобно и функционально для объединения и инфраструктуры, и внешних пользователей для работы с ними. Попробовать всё это можно на бесплатном тарифном плане в облаке. Ограничение там - 5 пользователей и 100 устройств.

⇨ Сайт / Исходники

#vpn #wireguard
​​Один подписчик поделился со мной информацией о необычном и полезном программном продукте. Изначально он обратился ко мне с просьбой подсказать, какой веб сервер под Windows можно использовать для быстрого запуска локально с флешки размещённого там небольшого проекта. Первое, что мне пришло в голову - Caddy. Это максимально простой веб сервер, состоящий из одного бинарника на Go, который всю конфигурацию хранит в едином конфиге. Версия под Windows тоже есть.

Он в итоге нашёл для себя вариант ещё проще и лучше - Small HTTP server. Пошёл, посмотрел, что это такое. Очень заинтересовала программа. Раньше про неё не слышал. Она из далёкого прошлого. Написана изначально была под Windows 95 и NT, но развивается до сих пор. Свежий релиз от 24.03.24. Код, как я понял, написан на С++ и очень хорошо оптимизирован. Установщик занимает примерно 1 мегабайт (❗️). При этом программа имеет следующие возможности:

HTTP сервер. Поддерживает CGI и FastCGI интерфейсы для скриптов (запуск исполняемых файлов; Perl, PHP, и других внешних интерпретаторов), ISAPI (Internet Server API — API для веб-сервера IIS) интерфейс, виртуальные хосты и каталоги.

Почтовый сервер POP3 и SMTP. Анти-спам фильтры. Белый, чёрный, и серый списки общие для всех и персональные для каждого пользователя. Переотправка и возможности запускать скрипты для входящих сообщений. Запуск внешнего антивируса.

FTP сервер с виртуальными каталогами.

HTTP proxy сервер. Поддерживаются HTTP, FTP, HTTPS запросы
Сохранение большого объема трафика, быстрый доступ. Внутренняя докачка при разрывах соединения. Сервер может запрашивать сжатый контент и распаковывать ответ на лету (с использованием внешней Zlib библиотеке).

DNS сервер. 🔥Опция динамической проверки сервиса на удаленном хосту и если сервис не работает, автоматическая замена одного IP адреса на другой во всех запросах. Рекурсивный поиск имен от корневых DNS серверов или от DNS серверов провайдера. Кеширование. Опция автоматического ответа на запросы IPv6 адреса. (для сетей, не использующих Internet по IPv6). DNSBL сервер (работает совместно с SMTP). DNS через HTTP(S) известный как DoH (RFC8484).

DHCP сервер.

HTTP TLS VPN сервер и клиент! Используется OpenVPN Windows TAP драйвер. Описание, как это работает и для чего.

Всё это собрано под Windows и Linux, в том числе ARM. Для Debian есть готовый пакет. Хорошее решение для маломощных одноплатников.

По работе всех служб есть статистика в веб интерфейсе. Я попробовал работу на Windows. Всё работает чётко, запустил без каких-либо проблем. Конфигурация хранится в текстовом файле. Управлять можно как в нём, так и через интерфейс программы. Для запуска достаточно запустить экзешник. По умолчанию веб сервер работает в режиме листинга файлов директории, которая указана, как корень веб сервера. Можно настроить работу как служба.

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

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

Мне кажется, сейчас программистов С++ уже можно по профильным школам и вузам водить, как ветеранов, и рассказывать от их лица, что программы могут быть маленькими, оптимизированными и работать быстро. А то скоро все вообще забудут, что такое в принципе может быть.

Сайт / Исходники / TG канал

#webserver #dns #dhcp #ftp