VPN·HUB·CRACK Чек-лист безопасности сервиса · VPN HUB CRACK
Все статьи
Инфраструктура и защита PRO

Чек-лист безопасности сервиса

Обновлено 11 августа 2026 Проверено

Безопасность сервиса

Безопасность VPN-бизнеса это три фронта: панель (веб-центр управления сервисом; угон = потеря всех клиентов), ноды (серверы, к которым подключаются клиенты; взлом/деанон), антиабуз (мультиаккаунты/слив = минус деньги). Пройдитесь по всему чек-листу.

📖 Незнакомые слова? Термины простыми словами смотрите в Словаре терминов.

1. Панель Remnawave

  • Только localhost + reverse-proxy. Панель/БД/Redis/sub-page слушают 127.0.0.1. Наружу торчит только nginx/caddy с TLS (шифрование HTTPS, «замочек» в браузере). Никогда не публикуйте 3000/6767/3010.
  • Зарегистрируйте супер-админа сразу после первого старта: первый регистрант становится админом. Окно «кто угодно может зарегистрироваться» = риск захвата.
  • Сильные уникальные секреты: JWT_AUTH_SECRET, JWT_API_TOKENS_SECRET (64 байта hex), POSTGRES_PASSWORD, METRICS_PASS: генерируйте через openssl rand. Никаких change_me/postgres/admin.
  • Swagger выключен в проде: IS_DOCS_ENABLED=false (или за авторизацией/allowlist).
  • Cloudflare перед панелью: ограничьте origin IP-адресами Cloudflare + секретный заголовок; либо Cloudflare Zero Trust / Tunnel (не светить публичный IP). Админ-путь держите в IP-allowlist на свои адреса.
  • Метрики (3001): basic-auth (METRICS_USER/PASS), не выносить в публичный proxy.
  • Любые правки секретов/.env требуют down && up -d, а не restart.

2. Ноды

  • NODE_PORT (2222) должен быть доступен только с IP панели. Закройте порт ноды фаерволом для всех, кроме панели:
ufw default deny incoming
ufw allow 22/tcp
ufw allow 443/tcp                 # рабочий порт inbound
ufw allow from PANEL_IP to any port 2222 proto tcp
ufw --force enable
  • Нода работает в network_mode: host + cap_add: NET_ADMIN → контролируете фаерволом хоста.
  • SSH только по ключу, fail2ban, BBR (см. «Инфраструктура»).
  • Минимум на ноде: только Xray + (опц.) nginx для CDN. Ничего лишнего: меньше поверхность атаки.
  • Не держите клиентские ключи на «расходных» входах, используйте каскад (тупой релей, подход B): вход ничего не расшифровывает.

2а. Маскировка: что реально прячет, а что косметика

Совет «поменяйте стандартные порты и переименуйте каталоги» ходит по чатам как защита. Работает он только против одного — автосканера, который ищет установку по сигнатуре. Против того, у кого уже есть доступ к серверу (хостер через консоль, снапшот диска, саппорт), не помогает вовсе: docker images покажет реальный образ remnawave/backend при любом имени контейнера, а процессы и миграции БД выдают продукт за секунды. Разделяйте два уровня и не путайте их.

Косметика (замедляет только поверхностный автоскан): - Смена дефолтных портов: панель 3000, метрики 3001, sub-page 3010. По штатной установке они и так за 127.0.0.1 — сначала проверьте, что порт вообще не смотрит наружу (ss -tlnp), это важнее смены номера. - Переименование /opt/remnawave, /opt/remnanode, имён контейнеров. Против человека с root — бесполезно, против скрипта — чуть тормозит.

Настоящие меры (снижают риск и от сканера, и от целевого анализа): - Нода за selfsteal/Reality с валидным TLS и реальным доменом-донором — снимает главные внешние признаки (self-signed сертификат, отсутствие сайта). Разбор в «Self-steal с nginx». - NODE_PORT (по умолчанию 2222) открыт только для IP панели. Это канал управления нода↔панель, снаружи ему делать нечего. Меняете порт — синхронно в .env ноды и в карточке ноды в панели, иначе связь отвалится. - Панель не на публичном порту — Cloudflare Access или доступ только по SSH-туннелю без публичной DNS-записи (см. §1 выше). Помните: сертификат панели виден в Certificate Transparency (crt.sh), по нему поддомен находят и без сканирования — держите её на непримечательном домене отдельно от бренда. - Панель и ноды — на разных IP. Панель самый палевный компонент: форма логина, JWT, характерный API опознаются массовым сканером мгновенно, и маскировки под сайт у неё нет. Один IP на панель и ноду = единая точка блокировки и утечки адресов всех нод разом. - Чистый egress — не абузить, закрыть исходящий SMTP (см. «Чистый egress»): жалоба на спам валит сервер независимо от того, как названы каталоги.

Приоритет: выбор лояльного хостера и разделение ролей по IP → selfsteal без self-signed → панель не на публичном порту + firewall NODE_PORT → чистый egress → и только в самом низу смена портов и переименование каталогов.

3. Параметры Reality (от этого зависит, заметит ли DPI)

  • dest/serverNames («донор» это чужой реальный сайт, под который Reality маскирует ноду): сайт с TLS 1.3 + HTTP/2, вне РФ/GFW, не за CDN, не редирект, не ваш. Желательно IP донора рядом с IP ноды. Wildcards * нельзя.
  • Для РФ берите популярные, которые РКН не станет блокировать «пачкой» (крупные SaaS). Не копируйте заезженные дефолты на все ноды.
  • shortId: hex, длина кратна 2, ≤16 символов. Пустой "" пускает клиентов без shortId, поэтому используйте разные непустые shortId на тариф/клиента для отзыва доступа.
  • fingerprint (uTLS): по умолчанию firefox (другой TLS-стек, реже под массовыми фильтрами); chrome не ставьте: самый палевный, и на части сборок нода с ним не стартует. randomized/random подходят для ротации, но осторожно: нестабильный отпечаток сам по себе сигнал.
  • flow: xtls-rprx-vision нужен на сервере и клиенте: без него внутренний HTTPS даёт детектируемый паттерн TLS-in-TLS.
  • Один SNI (имя сайта, видное в начале соединения ещё до шифрования) / донор + свой ключ Reality на ноду. Если заблокировали один SNI, умирает одна нода, не весь флот. Переиспользование одного SNI на всех = единая точка отказа и сигнал корреляции.

4. Hysteria2 / QUIC

  • ⚠️ Опции ниже (masquerade, obfs: salamander, port hopping) предназначены для standalone-демона Hysteria (config.yaml). В Remnawave Hysteria2 это xray-инбаунд (входная точка на ноде: протокол + порт) protocol: hysteria (см. «Профили подключений» §7), там этих YAML-полей нет.
  • Маскарад под реальный сайт (masquerade: type proxy), obfs: salamander если QUIC фингерпринтят, port hopping (listen: :20000-50000): даже если один порт зарезали, сервис жив.
  • В РФ QUIC/UDP часто душат → держите Hysteria2 как быстрый второй транспорт, TCP Reality основной fallback.

5. Подписки

  • Подписка защищена только неугадываемым shortUuid → поднимайте SHORT_UUID_LENGTH (до 64) и держите sub-page на отдельном домене/сервере.
  • Отдавайте в подписке сырые IP (или DoH/DoT в клиенте): РКН спуфит DNS, домен можно отравить.
  • is_hidden для служебных/транспортных хостов: не светить лишнее в выдаче.

6. Антиабуз и деньги

  • Лимит устройств (hwidDeviceLimit=1): ограничивает массовое расшаривание, но x-hwid подделывается — это учёт, не защита (см. «Абуз подписок»).
  • Антиабуз пробного периода: лимит триалов на устройство/номер, бан мультиаккаунтов (иначе бесконечные бесплатники).
  • Лимит трафика на тариф (trafficLimit): против майнеров/торрентов на вашем канале; bittorrent → block в роутинге ноды.
  • Не теряйте деньги на инфраструктуре: удаляйте брошенные/лишние серверы при паузах и лимитах (классическая утечка: Timeweb/RUVDS оставляют включённые VPS, за них капает).
  • Бэкапы БД панели и бота вне сервера, регулярно. Шифруйте бэкапы.

7. Гигиена секретов и доступов

  • Токены/ключи/пароли держите только в .env/секрет-хранилище, никогда в git/чат.
  • На доступ к панели по API заведите отдельный токен с минимальными правами; ротация при утечке.
  • Логи доступа храните, но редактируйте секреты перед выводом/пересылкой.
  • Разные пароли на разные серверы; менеджер паролей; 2FA где можно.

Быстрый аудит «всё ли закрыто»

  • [ ] Панель не отвечает по публичному IP на 3000/6767/3010.
  • [ ] Супер-админ создан, дефолтных секретов нет, Swagger выключен.
  • [ ] На каждой ноде 2222 открыт только для IP панели.
  • [ ] SSH по ключу, fail2ban, ufw на всех серверах.
  • [ ] Свой SNI/ключ Reality на ноду, flow=vision, fingerprint=firefox.
  • [ ] Подписка на отдельном домене, длинный shortUuid, в выдаче сырые IP.
  • [ ] hwid-лимит, антиабуз триалов, лимит трафика, bittorrent→block.
  • [ ] Бэкапы БД панели и бота вне сервера.

Дальше превращаем всё это в доход: бот, оплата, автоматизация (премиум).