Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Рандомизация портов и подсетей #22

Open
PROger4ever opened this issue Sep 5, 2024 · 0 comments
Open

Рандомизация портов и подсетей #22

PROger4ever opened this issue Sep 5, 2024 · 0 comments

Comments

@PROger4ever
Copy link

PROger4ever commented Sep 5, 2024

Описание проблем

  1. Сейчас используются стандартные порты для сервисов, что упрощает блокировку отдельных сервисов. Более того, по набору открытых портов можно довольно точно понять, что это сервер для раздачи туннелей под управлением VpnBot;
  2. Подсеть 10.0.1.0/24 и подобные мало того, что пересекутся при наличии нескольких серверов с VpnBot, так и могут пересечься с локальными подсетями провайдеров.

Существующие решения

Сейчас предлагается вносить изменённые переменные окружения в файл override.env, но некоторые из этих параметров вшиты в другие конфигурационные файлы (в том числе порт ss в конфигурацию nginx). А маршруты до подсетей есть и в scripts/start_ad.sh. Всё это сильно усложняет рандомизацию портов и всех сетей.

Предлагаемые решения

  1. По-хорошему бы убрать некоторые depends из docker-compose.yaml и доработать VpnBot так, чтобы лишние сервисы можно было полностью не запускать (это позволит боту работать на серверах с 512 мбайт оперативы без подкачки);
  2. Нужен скрипт, который бы позволял легко и удобно менять порты и подсети сервисов на случайные во избежание лёгкого детекта раздающего сервера.

Вот некоторый набросок, который желательно сделать более устойчивым к непредвиденным ситуациям:

Скрипт рандомизации портов и подсетей сервисов VpnBot
# Не забыть до установки обновить систему: sudo apt update && sudo apt upgrade -y && sudo apt autoremove --purge -y && reboot

# TODO: Добавить проверки на то, что всё идёт нормально (на пустые значения старых портов, их доступность и прочее)

VPNBOT_TELEGRAM_BOT_KEY="YOUR_TELEGRAM_BOT_KEY";

VPNBOT_WG_NET_NEW=$(shuf -i 100-254 -n 1);
VPNBOT_TZ_NEW="Europe/Moscow"; # Europe/Samara
VPNBOT_WG_NET_PREFIX_NEW="10.$VPNBOT_WG_NET_NEW.1"; # 10.0.1 # Дабы не было пересечения с локальными подсетями провайдера по типу 10.x.0.0/16 и внутренними адресами других туннелей
VPNBOT_WG_PORT_NEW=$(shuf -i 49152-65535 -n 1); # 51820;
VPNBOT_WG1_NET_PREFIX_NEW="10.$VPNBOT_WG_NET_NEW.3"; # 10.0.3 # TODO: Что с oc на 10.0.2.0/24?
VPNBOT_WG1_PORT_NEW=$((VPNBOT_WG_PORT_NEW + 1)); # 51820
VPNBOT_SS_PORT_NEW=$(shuf -i 2000-10000 -n 1); # 8388
VPNBOT_TG_PORT_NEW=$(shuf -i 2000-10000 -n 1); # 4443

mkdir -p ~/scripts && cd ~/scripts &&
  wget -O- https://raw.githubusercontent.com/mercurykd/vpnbot/master/scripts/init.sh | sh -s "$VPNBOT_TELEGRAM_BOT_KEY" &&
  \
  cd vpnbot &&
  cp .env override.env &&
  \
  \
  VPNBOT_TZ_OLD=$(grep -P '^TZ=' override.env | sed -E 's~^TZ=(.*)$~\1~') &&
  VPNBOT_WG_NET_PREFIX_OLD=$(grep -P '^WGADDRESS=' override.env | sed -E 's~^WGADDRESS=([0-9]+\.[0-9]+\.[0-9]+)\.[0-9]+/24$~\1~') &&
  VPNBOT_WG_PORT_OLD=$(grep -P '^WGPORT=' override.env | sed -E 's~^WGPORT=([0-9]+)$~\1~') &&
  VPNBOT_WG1_NET_PREFIX_OLD=$(grep -P '^WG1ADDRESS=' override.env | sed -E 's~^WG1ADDRESS=([0-9]+\.[0-9]+\.[0-9]+)\.[0-9]+/24$~\1~') &&
  VPNBOT_WG1_PORT_OLD=$(grep -P '^WG1PORT=' override.env | sed -E 's~^WG1PORT=([0-9]+)$~\1~') &&
  VPNBOT_SS_PORT_OLD=$(grep -P '^SSPORT=' override.env | sed -E 's~^SSPORT=([0-9]+)$~\1~') &&
  VPNBOT_TG_PORT_OLD=$(grep -P '^TGPORT=' override.env | sed -E 's~^TGPORT=([0-9]+)$~\1~') &&
  \
  sed -Ei.bak1 "s~$VPNBOT_TZ_OLD~$VPNBOT_TZ_NEW~g" override.env &&
  sed -Ei.bak2 "s~(^|[^0-9])$VPNBOT_WG_NET_PREFIX_OLD\.([0-9]+)([^0-9]|$)~\1$VPNBOT_WG_NET_PREFIX_NEW\.\2\3~g" override.env config/* scripts/start_ad.sh &&
  sed -Ei.bak3 "s~(^|[^0-9])$VPNBOT_WG_PORT_OLD([^0-9]|$)~\1$VPNBOT_WG_PORT_NEW\2~g" override.env config/* &&
  sed -Ei.bak4 "s~(^|[^0-9])$VPNBOT_WG1_NET_PREFIX_OLD\.([0-9]+)([^0-9]|$)~\1$VPNBOT_WG1_NET_PREFIX_NEW\.\2\3~g" override.env config/* scripts/start_ad.sh &&
  sed -Ei.bak5 "s~(^|[^0-9])$VPNBOT_WG1_PORT_OLD([^0-9]|$)~\1$VPNBOT_WG1_PORT_NEW\2~g" override.env config/* &&
  sed -Ei.bak6 "s~(^|[^0-9])$VPNBOT_SS_PORT_OLD([^0-9]|$)~\1$VPNBOT_SS_PORT_NEW\2~g" override.env config/* &&
  sed -Ei.bak7 "s~(^|[^0-9])$VPNBOT_TG_PORT_OLD([^0-9]|$)~\1$VPNBOT_TG_PORT_NEW\2~g" override.env config/* &&
  \
  \
  IP=$(curl https://ipinfo.io/ip) VER=$(git describe --tags) docker compose --env-file ./.env --env-file ./override.env up -d --force-recreate

# После полной проверки работоспособности можно удалить резервные копии изменённых файлов: find -name '*.bak?' -delete
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant