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

Защита панели и доступов

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

Защита панели и доступов

Угон панели (веб-центр управления сервисом: пользователи, подписки, ноды) равносилен угону всего сервиса: всех клиентов, нод, выдач. Поэтому панель прячут и закрывают в несколько слоёв.

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

1. Не светить панель

  • Сабдомен должен быть невзрачным/случайным, не panel/admin/marzban (см. «Домены»). По очевидному имени сразу начинают перебор.
  • Адрес панели нигде не публикуется: не в подписке, не в боте, не в чате. Знаете только вы.
  • Первый зарегистрировавшийся = суперадмин. Зарегистрируйтесь сразу после установки, пока никто не перехватил.

2. Reverse-proxy: basic-auth + IP-allowlist

Перед панелью стоит Caddy/nginx, который пускает только вас. Даже зная адрес, чужой упрётся в стену.

Caddy (/etc/caddy/Caddyfile):

a7f3.your.domain {
    @allowed remote_ip 203.0.113.10 198.51.100.20   # ← ваши IP (дом/моб/офис)
    handle @allowed {
        basicauth { admin JDJhJDE0... }              # хеш: caddy hash-password
        reverse_proxy 127.0.0.1:3000
    }
    respond 403
}
caddy hash-password --plaintext 'ВАШ_ПАРОЛЬ'   # вставить хеш в basicauth
systemctl reload caddy

nginx-аналог (фрагмент server-блока):

location / {
    allow 203.0.113.10; allow 198.51.100.20; deny all;   # IP-allowlist
    auth_basic "restricted";
    auth_basic_user_file /etc/nginx/.htpasswd;            # htpasswd -c ...
    proxy_pass http://127.0.0.1:3000;
}

Если IP динамический, оставьте basic-auth + сильный пароль, а allowlist замените на доступ через свой VPN/релей. Идеальный вариант: заходить в панель только из-под своей же ноды/туннеля.

3. Закрыть порты (ufw)

ufw default deny incoming
ufw allow 22/tcp                                  # SSH
ufw allow 443/tcp                                 # reverse-proxy/панель/ноды
ufw allow from PANEL_IP to any port 2222 proto tcp  # NODE_PORT — только с IP панели
ufw --force enable
  • Панель (3000) и страница подписки (3010) слушают только 127.0.0.1, наружу выходят через reverse-proxy.
  • NODE_PORT (2222) на нодах открыт только для IP панели, иначе любой постучится в ноду.

4. SSH по ключу, без пароля

ssh-keygen -t ed25519 -C "vpn-admin"           # на своей машине, если ключа нет
ssh-copy-id root@SERVER_IP
sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin prohibit-password/' /etc/ssh/sshd_config
systemctl restart ssh

5. fail2ban (перебор пароля/SSH)

apt -y install fail2ban
cat >/etc/fail2ban/jail.d/local.conf <<'EOF'
[sshd]
enabled = true
maxretry = 4
bantime = 1h
findtime = 10m
EOF
systemctl enable --now fail2ban

Для попыток подбора basic-auth можно добавить jail на лог nginx/Caddy (фильтр на 401/403).

6. Гигиена

  • API-токены (для бота): минимально нужные, храните в .env, ротируйте; утёк токен = доступ к выдаче подписок.
  • Swagger выключен в проде: IS_DOCS_ENABLED=false (или под allowlist).
  • Обновляйте панель/ноды и систему (apt upgrade), читайте changelog Remnawave.
  • Бэкап БД до любых правок (см. «Мониторинг и бэкап»): без него угон/сбой = потеря всех клиентов.
  • 2FA на всё, где есть (почта домена, хостинг-аккаунты, регистратор): компрометация почты = угон домена.

Чек-лист

  • [ ] Панель на невзрачном сабдомене, не светится.
  • [ ] Reverse-proxy: basic-auth + IP-allowlist.
  • [ ] Панель/подписка слушают только 127.0.0.1.
  • [ ] NODE_PORT открыт только для IP панели.
  • [ ] SSH по ключу, пароль выключен, fail2ban.
  • [ ] Swagger off, токены в .env, регулярные бэкапы.

Связано: «Домены» (сабдомен панели), «Мониторинг и бэкап», «Чтобы не угнали» (базовый чек-лист хоста).