Доступ к Majordomo через бесплатный VPS на базе Oracle Cloud и Wireguard

Всё, что не подходит под вышеперечисленные разделы

Модератор: immortal

Ответить
Gasinskiy
Сообщения: 69
Зарегистрирован: Вс мар 22, 2020 12:04 pm
Откуда: Харьков
Благодарил (а): 106 раз
Поблагодарили: 4 раза

Доступ к Majordomo через бесплатный VPS на базе Oracle Cloud и Wireguard

Сообщение Gasinskiy » Ср янв 06, 2021 2:14 pm

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

Создал экземпляр виртуальной машины Ubuntu 20.04. Установил там Wireguard - имеется следующая конфигурация на wg0.conf:

Код: Выделить всё

[Interface]
Address = 10.0.0.1/24
SaveConfig = true
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE
ListenPort = 51820
PrivateKey = PrivateKey сервера

[Peer]
PublicKey = PublicKey клиента ПК с работы
AllowedIPs = 10.0.0.2/32
[Peer]
PublicKey = PublicKey смартфон на базе Android
AllowedIPs = 10.0.0.3/32 
Ну и так далее по аналогии.
На клиентах конфиг следующего вида:

Код: Выделить всё

[Interface]
PrivateKey = приватный ключ клиента
Address = 10.0.0.2/32
DNS = 8.8.8.8
[Peer]
PublicKey = публичный ключ сервера
AllowedIPs = 0.0.0.0/1, 128.0.0.0/1
Endpoint = общедоступный IP:51820
До самой Raspberry Pi еще дело не дошло. Сейчас хотя бы добиться нормального подключения к серверу со всех клиентов, чтоб был интернет, ping между всем клиентами, попасть в локальную сеть.

Почему-то SSH работает. С сайта сканера портов по общедоступному IP вижу открытый 22-й порт TCP, а вот 51820 закрыт. Wireguard по идеи работает, wg show показывает информацию о сервисе, но трафик не бегает и клиенты при подключении не получают данные.

На сервере тут /etc/sysctl.conf раскомментировал net.ipv4.ip_forward=1, сюда /proc/sys/net/ipv4/ip_forward добавил 1.

Думаю, что нужно больше ковыряться в веб-морде самого Oracle Cloud, хотя и тут вроде разрешил все входящие соединения.

Тут есть общедоступный IP-адрес, по которому получаю доступ к виртуальной. машине.
Есть основной виртуальный адаптер с частным IP-адресом 10.0.0.3. Подсеть subnet со следующими параметрами:
Блок CIDR: 10.0.0.0/24
Тип подсети: Региональная
Доступ к подсети: Общедоступная подсеть

Есть еще тут таблица маршрутизации по умолчанию, где у меня есть правила для входящего и исходящего трафика с назначением\источником: 0.0.0.0/0, со всеми IP протоколами и разрешением трафика для всех портов.

В правилах маршрутизации есть еще разные варианты типа адресата, кроме Интернет-шлюз, которые мне не совсем понятны, хоть и читал документацию.

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

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

Под спойлером 7 скриншотов с веб-интерфейса Oracle и терминал виртуальной машины для наглядности, хотел максимально подробно описать ситуацию.
СпойлерПоказать
1. виртуальная машина.JPG
1. виртуальная машина.JPG (228.93 КБ) 943 просмотра
2. Виртуальные сети.JPG
2. Виртуальные сети.JPG (132.85 КБ) 943 просмотра
3. Правила маршрутизации.JPG
3. Правила маршрутизации.JPG (113.78 КБ) 943 просмотра
4. Правила для входа.JPG
4. Правила для входа.JPG (126.96 КБ) 943 просмотра
5. wg show.JPG
5. wg show.JPG (128.54 КБ) 943 просмотра
6. ip a.JPG
6. ip a.JPG (72 КБ) 943 просмотра
7. Зарезервированные общедоступные IP-адреса.JPG
7. Зарезервированные общедоступные IP-адреса.JPG (171.07 КБ) 943 просмотра
Последний раз редактировалось Gasinskiy Ср янв 06, 2021 6:47 pm, всего редактировалось 1 раз.
За это сообщение автора Gasinskiy поблагодарил:
Taras81 (Сб янв 09, 2021 12:55 am)
Рейтинг: 1.18%
Аватара пользователя
savenko_egor
Сообщения: 703
Зарегистрирован: Вс авг 03, 2014 8:17 pm
Откуда: Украина, Запорожье
Благодарил (а): 108 раз
Поблагодарили: 143 раза
Контактная информация:

Re: Доступ к Majordomo через бесплатный VPS на базе Oracle Cloud и Wireguard

Сообщение savenko_egor » Ср янв 06, 2021 2:36 pm

Как минимум смотреть:

Код: Выделить всё

sudo ufw status
За это сообщение автора savenko_egor поблагодарил:
Gasinskiy (Ср янв 06, 2021 2:43 pm)
Рейтинг: 1.18%
Gasinskiy
Сообщения: 69
Зарегистрирован: Вс мар 22, 2020 12:04 pm
Откуда: Харьков
Благодарил (а): 106 раз
Поблагодарили: 4 раза

Re: Доступ к Majordomo через бесплатный VPS на базе Oracle Cloud и Wireguard

Сообщение Gasinskiy » Ср янв 06, 2021 2:43 pm

savenko_egor писал(а):
Ср янв 06, 2021 2:36 pm
Как минимум смотреть:

Код: Выделить всё

sudo ufw status
Вот это не смотрел - написано Status: inactive. Получается Firewall выключен.
Аватара пользователя
savenko_egor
Сообщения: 703
Зарегистрирован: Вс авг 03, 2014 8:17 pm
Откуда: Украина, Запорожье
Благодарил (а): 108 раз
Поблагодарили: 143 раза
Контактная информация:

Re: Доступ к Majordomo через бесплатный VPS на базе Oracle Cloud и Wireguard

Сообщение savenko_egor » Ср янв 06, 2021 6:09 pm

Код: Выделить всё

iptables-save
ещё посмотреть.
За это сообщение автора savenko_egor поблагодарил:
Gasinskiy (Ср янв 06, 2021 10:41 pm)
Рейтинг: 1.18%
Gasinskiy
Сообщения: 69
Зарегистрирован: Вс мар 22, 2020 12:04 pm
Откуда: Харьков
Благодарил (а): 106 раз
Поблагодарили: 4 раза

Re: Доступ к Majordomo через бесплатный VPS на базе Oracle Cloud и Wireguard

Сообщение Gasinskiy » Ср янв 06, 2021 6:54 pm

savenko_egor писал(а):
Ср янв 06, 2021 6:09 pm

Код: Выделить всё

iptables-save
ещё посмотреть.

вот такое полотенце выводит нечитабельное

Код: Выделить всё

root@ubuntu2:/etc/wireguard# iptables-save
# Generated by iptables-save v1.8.4 on Wed Jan  6 15:50:47 2021
*nat
:PREROUTING ACCEPT [5:300]
:INPUT ACCEPT [5:300]
:OUTPUT ACCEPT [10:818]
:POSTROUTING ACCEPT [10:818]
COMMIT
# Completed on Wed Jan  6 15:50:47 2021
# Generated by iptables-save v1.8.4 on Wed Jan  6 15:50:47 2021
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [364:49183]
:InstanceServices - [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p udp -m udp --sport 123 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A OUTPUT -d 169.254.0.0/16 -j InstanceServices
-A InstanceServices -d 169.254.0.2/32 -p tcp -m owner --uid-owner 0 -m tcp --dport 3260 -m comment --comment "See the Oracle-Provided Images section in the Oracle Cloud Infrastructure documentation for security impact of modifying or removing this rule" -j ACCEPT
-A InstanceServices -d 169.254.2.0/24 -p tcp -m owner --uid-owner 0 -m tcp --dport 3260 -m comment --comment "See the Oracle-Provided Images section in the Oracle Cloud Infrastructure documentation for security impact of modifying or removing this rule" -j ACCEPT
-A InstanceServices -d 169.254.4.0/24 -p tcp -m owner --uid-owner 0 -m tcp --dport 3260 -m comment --comment "See the Oracle-Provided Images section in the Oracle Cloud Infrastructure documentation for security impact of modifying or removing this rule" -j ACCEPT
-A InstanceServices -d 169.254.5.0/24 -p tcp -m owner --uid-owner 0 -m tcp --dport 3260 -m comment --comment "See the Oracle-Provided Images section in the Oracle Cloud Infrastructure documentation for security impact of modifying or removing this rule" -j ACCEPT
-A InstanceServices -d 169.254.0.2/32 -p tcp -m tcp --dport 80 -m comment --comment "See the Oracle-Provided Images section in the Oracle Cloud Infrastructure documentation for security impact of modifying or removing this rule" -j ACCEPT
-A InstanceServices -d 169.254.169.254/32 -p udp -m udp --dport 53 -m comment --comment "See the Oracle-Provided Images section in the Oracle Cloud Infrastructure documentation for security impact of modifying or removing this rule" -j ACCEPT
-A InstanceServices -d 169.254.169.254/32 -p tcp -m tcp --dport 53 -m comment --comment "See the Oracle-Provided Images section in the Oracle Cloud Infrastructure documentation for security impact of modifying or removing this rule" -j ACCEPT
-A InstanceServices -d 169.254.0.3/32 -p tcp -m owner --uid-owner 0 -m tcp --dport 80 -m comment --comment "See the Oracle-Provided Images section in the Oracle Cloud Infrastructure documentation for security impact of modifying or removing this rule" -j ACCEPT
-A InstanceServices -d 169.254.0.4/32 -p tcp -m tcp --dport 80 -m comment --comment "See the Oracle-Provided Images section in the Oracle Cloud Infrastructure documentation for security impact of modifying or removing this rule" -j ACCEPT
-A InstanceServices -d 169.254.169.254/32 -p tcp -m tcp --dport 80 -m comment --comment "See the Oracle-Provided Images section in the Oracle Cloud Infrastructure documentation for security impact of modifying or removing this rule" -j ACCEPT
-A InstanceServices -d 169.254.169.254/32 -p udp -m udp --dport 67 -m comment --comment "See the Oracle-Provided Images section in the Oracle Cloud Infrastructure documentation for security impact of modifying or removing this rule" -j ACCEPT
-A InstanceServices -d 169.254.169.254/32 -p udp -m udp --dport 69 -m comment --comment "See the Oracle-Provided Images section in the Oracle Cloud Infrastructure documentation for security impact of modifying or removing this rule" -j ACCEPT
-A InstanceServices -d 169.254.169.254/32 -p udp -m udp --dport 123 -m comment --comment "See the Oracle-Provided Images section in the Oracle Cloud Infrastructure documentation for security impact of modifying or removing this rule" -j ACCEPT
-A InstanceServices -d 169.254.0.0/16 -p tcp -m tcp -m comment --comment "See the Oracle-Provided Images section in the Oracle Cloud Infrastructure documentation for security impact of modifying or removing this rule" -j REJECT --reject-with tcp-reset
-A InstanceServices -d 169.254.0.0/16 -p udp -m udp -m comment --comment "See the Oracle-Provided Images section in the Oracle Cloud Infrastructure documentation for security impact of modifying or removing this rule" -j REJECT --reject-with icmp-port-unreachable
COMMIT
# Completed on Wed Jan  6 15:50:47 2021
Аватара пользователя
savenko_egor
Сообщения: 703
Зарегистрирован: Вс авг 03, 2014 8:17 pm
Откуда: Украина, Запорожье
Благодарил (а): 108 раз
Поблагодарили: 143 раза
Контактная информация:

Re: Доступ к Majordomo через бесплатный VPS на базе Oracle Cloud и Wireguard

Сообщение savenko_egor » Ср янв 06, 2021 10:32 pm

Почему же не читабельное. Всё в целом понятно. Вот ответ:

Код: Выделить всё

-A INPUT -p udp -m udp --sport 123 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
Открыт только 22 и 123 порт, всё остальное реджектит.

Пробовать:

Код: Выделить всё

sudo ufw allow 51820/udp
За это сообщение автора savenko_egor поблагодарил:
Gasinskiy (Ср янв 06, 2021 10:41 pm)
Рейтинг: 1.18%
Аватара пользователя
savenko_egor
Сообщения: 703
Зарегистрирован: Вс авг 03, 2014 8:17 pm
Откуда: Украина, Запорожье
Благодарил (а): 108 раз
Поблагодарили: 143 раза
Контактная информация:

Re: Доступ к Majordomo через бесплатный VPS на базе Oracle Cloud и Wireguard

Сообщение savenko_egor » Чт янв 07, 2021 12:45 am

Причина проблемы оказалось:
1. У Oracle специфика такая что интерфейс выхода там идёт с IP 10.0.0.3 по 24-ой маске. А получается и интерфейс WG был сделан в той же подсети. Потому это в принципе не могло работать.

2. Почему не работало открытие порта через iptables? Потому что правило для его открытия было указано неправильно. Нужно было вместо --sport указывать --dport.
Пример правильного правила:

Код: Выделить всё

-A INPUT -p udp -m udp --dport 51820 -j ACCEPT
За это сообщение автора savenko_egor поблагодарил:
Gasinskiy (Пт янв 08, 2021 3:07 am)
Рейтинг: 1.18%
Gasinskiy
Сообщения: 69
Зарегистрирован: Вс мар 22, 2020 12:04 pm
Откуда: Харьков
Благодарил (а): 106 раз
Поблагодарили: 4 раза

Re: Доступ к Majordomo через бесплатный VPS на базе Oracle Cloud и Wireguard

Сообщение Gasinskiy » Пт янв 08, 2021 3:16 am

savenko_egor писал(а):
Чт янв 07, 2021 12:45 am
Причина проблемы оказалось:
1. У Oracle специфика такая что интерфейс выхода там идёт с IP 10.0.0.3 по 24-ой маске. А получается и интерфейс WG был сделан в той же подсети. Потому это в принципе не могло работать.

2. Почему не работало открытие порта через iptables? Потому что правило для его открытия было указано неправильно. Нужно было вместо --sport указывать --dport.
Пример правильного правила:

Код: Выделить всё

-A INPUT -p udp -m udp --dport 51820 -j ACCEPT
Привествую, Егор! Cпасибо большое за помощь по настройке виртуальной машины и Wireguard! Есть еще немного вопросов к тебе или кто-то еще может что подскажет, ну и заодно инфа для тех кто, будет делать что-то подобное, и описания моих экспериментов)

К конфликту IP адресов я наверное пришел бы, но не скоро. Кривые руки у меня... Меня слово sport удивило, когда увидел, я вроде туда не лез, получается в образе ошибка имеется.

Еще ты упростил

Код: Выделить всё

PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE
или это просто очередная версия моего конфига, уже запутался.
короче стало так

Код: Выделить всё

PostUp = iptables -A FORWARD -i %i -j ACCEPT;
PostDown = iptables -D FORWARD -i %i -j ACCEPT;
В общем сейчас конфиг сервера имеет следующий вид

Код: Выделить всё

[Interface]
Address = 10.10.0.1/24
PostUp = iptables -A FORWARD -i %i -j ACCEPT;
PostDown = iptables -D FORWARD -i %i -j ACCEPT;
ListenPort = 51820
PrivateKey = privakey сгенерированный на сервере

[Peer]#рабочий ПК
PublicKey = publickey с клиента на Windows
AllowedIPs = 10.10.0.2/32

[Peer]#смартфон 
PublicKey = publickey смартфона на Android
AllowedIPs = 10.10.0.3/32

[Peer]#ноутбук
PublicKey = домашний ноут с виндой
AllowedIPs = 10.10.0.4/32

[Peer]#сервер УД на Raspberry Pi
PublicKey = ключ сгенерированный на малинке
AllowedIPs = 10.10.0.5/32
Полезные ссылки:
СпойлерПоказать
Сервер на Raspberry Pi настраивал по следующей инструкции:
https://www.raspberrypi.org/forums/view ... p?t=277111
Вот еще полезные материалы
https://www.youtube.com/watch?v=D7Zp2yj ... 0%BE%D0%B2 - хорошее видео "Wireguard. Настройка топологий Point to Point, Star, Mesh. Маршрутизация через Wireguard. Тесты."+ PDF.
https://losst.ru/ustanovka-wireguard-v-ubuntu - тоже норм статья.
https://sysadmin.pm/wireguard/
https://losst.ru/ustanovka-wireguard-v-ubuntu
https://wiki.calculate-linux.org/ru/wireguard
https://andreyex.ru/debian/kak-ustanovi ... ian-linux/
https://vps-community.ru/linux-guides/4 ... an-99.html
В конфигурации сервера я так понимаю все настроено, кроме как еще можно поэкспериментировать с параметры PostUp, PostDown?

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

А вот пинга клинт-клиент нет. Наверное нужно еще настраивать таблицы маршрутизации и т.п. на сервере поскольку мне нужно попадать в локальную сеть и на сервер УД. Скорей всего нужно правильно еще и клиентов настроить.

Главная задача это веб-интерфейс Majordomo и доступ как у себя дома :D

Не совсем понимаю какие правильно использовать DNS в интерфейсе и разрешенные IP-адреса/маски в настройках пира на клиенте. Пробовал разные варианты AllowedIPs, но все не то. По идее если у клиента прописать 0.0.0.0/0 в AllowedIPs, то весь трафик должен ходить через сервер. Но ни доступа в инет, ни клиенты друг друга не видят. Попробовал еще в конфиге сервера добавить там где IP клиента 0.0.0.0/0, после этого отваливается SSH по общедоступному IP, но зато теперь знаю что подключится к WG можно и по адресу 10.10.0.1 по SSH. По SSH так же получилось зайти с VPS на Малинку. Установил консольный браузер и смог зайти в веб по IP WG, надо было ставить образ в OCI c GUI, уже б можно было как никак удаленно что-то делать)
Gasinskiy
Сообщения: 69
Зарегистрирован: Вс мар 22, 2020 12:04 pm
Откуда: Харьков
Благодарил (а): 106 раз
Поблагодарили: 4 раза

Re: Доступ к Majordomo через бесплатный VPS на базе Oracle Cloud и Wireguard

Сообщение Gasinskiy » Сб янв 09, 2021 8:41 pm

Короче вроде как победил, поизучал еще WireGuard, правда там на оф. сайте не так уж и много, того что нужно. Но ведь протокол считается простейшим в настройке.

Еще изучил что такое iptables и с чем его едят, штука сложная, но если захотеть, то разобраться можно в базовых вещах.

Не знаю так ли настроил, надеюсь дыр не наделал. а то тогда защищенный WG тунель не имеет смысла...

В общем прописал следующие правила:

Код: Выделить всё

iptables -A FORWARD -p icmp -j ACCEPT  #для icmp пакетов - хотел начать с пингов, возможно это и не особо нужно.

iptables -I FORWARD 1 -p icmp -j ACCEPT #добавил на 1-е место, все те же пинги

iptables -I FORWARD 2 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT #трафик для всех уже установленных соединений 

iptables -I FORWARD 3 -s 10.10.0.3/32 -p tcp -m conntrack --ctstate NEW -m multiport --dports 80,443 -j ACCEPT #открытие портов 80 и 443

iptables -I FORWARD 4 -s 10.10.0.2/32 -p tcp -m conntrack --ctstate NEW -m multiport --dports 80,443 -j ACCEPT #http для MajprDoMo и https за компанию

iptables -t nat -A POSTROUTING -o wg0 -s 10.10.0.2/32 -j MASQUERADE   #для доступа к серверу УД, но если в разрешенных добавить 10.10.0.5/32, 0.0.0.0/0, то будет выход и в инет.

iptables -I FORWARD 5 -p tcp -m conntrack --ctstate NEW -m tcp --dport 53 -j ACCEPT #для DNS, хз нужно ли
iptables -I FORWARD 6 -p udp -m conntrack --ctstate NEW -m udp --dport 53 -j ACCEPT #тоже самое для udp

sudo netfilter-persistent save сохранение, чтоб  после перезагрузки все осталось 
В общем теперь имею доступ с телефона и рабочего ПК по IP адресу 10.10.0.5 =) и в туннеле могу по SSH к 10.10.0.5 (УД) и 10.10.0.1 (сервер Oracle).

Это так работает, но поправьте, если фигню в iptables прописал :D
Ответить