-
Notifications
You must be signed in to change notification settings - Fork 79
Open
Description
Описание проблем
- Сейчас используются стандартные порты для сервисов, что упрощает блокировку отдельных сервисов. Более того, по набору открытых портов можно довольно точно понять, что это сервер для раздачи туннелей под управлением VpnBot;
- Подсеть 10.0.1.0/24 и подобные мало того, что пересекутся при наличии нескольких серверов с VpnBot, так и могут пересечься с локальными подсетями провайдеров.
Существующие решения
Сейчас предлагается вносить изменённые переменные окружения в файл override.env, но некоторые из этих параметров вшиты в другие конфигурационные файлы (в том числе порт ss в конфигурацию nginx). А маршруты до подсетей есть и в scripts/start_ad.sh. Всё это сильно усложняет рандомизацию портов и всех сетей.
Предлагаемые решения
- По-хорошему бы убрать некоторые depends из docker-compose.yaml и доработать VpnBot так, чтобы лишние сервисы можно было полностью не запускать (это позволит боту работать на серверах с 512 мбайт оперативы без подкачки);
- Нужен скрипт, который бы позволял легко и удобно менять порты и подсети сервисов на случайные во избежание лёгкого детекта раздающего сервера.
Вот некоторый набросок, который желательно сделать более устойчивым к непредвиденным ситуациям:
Скрипт рандомизации портов и подсетей сервисов 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?' -deletetabakovsasha
Metadata
Metadata
Assignees
Labels
No labels