все проекты
02 · удалённый доступ

RustDesk Gateway

Управляемый и безопасный удалённый доступ к любым устройствам. Шлюз доступа, консоль администратора и доработанный клиент RustDesk: сотрудники поддержки и подрядчики работают с компьютерами, киосками и серверами, не зная их ID и паролей. Каждое подключение одноразовое, записано в журнал и отзывается одним нажатием.

  • Rust
  • axum
  • SQLite
  • RustDesk 1.4.9
  • Ed25519
  • X25519 · HKDF · AES-256-GCM
  • Argon2 + TOTP
  • Docker Swarm
  • Traefik / HAProxy
Консоль администратора RustDesk Gateway
≈9 000строк кода шлюза: Rust, axum, SQLite, консоль, портал, веб-сеанс
≈2 000строк новых модулей клиента: канал со шлюзом, трансляция экрана, окна
133сквозные проверки: подписи, команды, токены, шифрование, ввод
0изменений в сервере hbbs/hbbr — шлюз независимая надстройка
проблема

Обычный RustDesk: кто знает пароль — тот и подключается

В итоге подключение к терминалу клиента занимало от 1 до 50 минут, а схема доступа держалась на паролях, которые расходились по чатам.

Пароли расходятся

ID и пароли устройств уходят сотрудникам и подрядчикам, оседают в переписке. Отозвать доступ у одного человека нельзя — только сменить пароль для всех.

Нет контроля

Не видно, кто, когда и к какому устройству подключался. Нет единого реестра устройств, их состояния и настроек.

Обход и неудобство

Подключиться можно с любого клиента RustDesk. Внешнему специалисту нужно ставить ПО. Окно подключения закрывает рабочую программу.

решение

Шлюз доступа поверх собственного сервера RustDesk

Шлюз работает рядом с сервером RustDesk (hbbs/hbbr) и не меняет его. Устройства и приложения сотрудников — доработанный клиент RustDesk. Свой сервер, без облака и подписок.

Сотрудники поддержкиприложение RustDesk; пароль устройства не знают — получают одноразовый на каждое подключение
Внешние подрядчикибраузер и одноразовый токен, без установки ПО, шифрование до браузера
RustDesk Gatewayреестр устройств, подписанные команды, одноразовые пароли, веб-сеансы, журналы. Консоль — только из внутренней сети, пароль + TOTP
Управляемые устройствадоработанный клиент: выдаёт одноразовые пароли, транслирует экран, выполняет только подписанные команды
Сервер RustDeskстандартный hbbs/hbbr — без изменений
Windows-устройства браузерный доступ без установки ПО Docker / Swarm за обратным прокси реальные IP клиентов через PROXY protocol
сотрудники поддержки

Одноразовый пароль от самого устройства на каждое подключение

«Подключиться»

Сотрудник нажимает кнопку в обычном приложении RustDesk, в своей адресной книге.

Шлюз проверяет права

Группа выдана, учётная запись активна, лимит не превышен.

Устройство выдаёт пароль

24 символа, 90 секунд, одно использование; зашифрован для приложения сотрудника.

Подключение

Пароль подставляется сам и нигде не сохраняется. Шлюз его не видит.

возможности

Консоль, реестр и веб-доступ

Всё состояние — на одном экране

  • Устройства в сети, ожидающие, защищённые, активные токены, события безопасности
  • График событий за две недели
  • Открытые веб-сеансы с кнопкой «Завершить»

Реестр устройств

  • Устройство регистрируется само и ждёт подтверждения
  • Поиск и фильтры, понятные названия вместо цифровых ID
  • Группы: офис, филиалы, склады, киоски

Управление без подключения

  • Снимок экрана по запросу
  • Смена ID, пароля, адресов серверов — подписанными командами
  • Режим «только через шлюз»

Подрядчик — из браузера

  • Код браузера → токен на устройство и срок, показан один раз
  • Экран и ввод зашифрованы от устройства до браузера
  • Токен из чужого браузера не работает и фиксируется как инцидент

Полноценный веб-сеанс

  • Мышь и клавиатура удалённого устройства
  • Ctrl+Alt+Del, Win+R, Alt+Tab выполняются на устройстве
  • Общий буфер обмена; пользователь на месте может прервать сеанс

Доработанный клиент

  • Компактная карточка подключения: ✓ принять, ✕ отклонить, ▲ развернуть
  • Ключ шлюза закрепляется один раз
  • Готовый скрипт PowerShell и .bat для GPO — устройство подключается за минуту
защита по слоям

Утечка одного звена не даёт доступа

Канал шлюз ↔ устройство

Команды подписаны ключом шлюза (Ed25519), значения зашифрованы ключом устройства. Устройство подписывает каждый запрос, метки времени защищают от повтора. Зная ID устройства, выдать себя за него нельзя.

Браузер

Неизвлекаемый ключ браузера, токен хранится только хешем, часть токена никогда не покидает браузер и входит в ключ сеанса. X25519 + HKDF + AES-256-GCM.

Консоль

Отдельный адрес только для внутренней сети, пароль Argon2 + TOTP, сессия привязана к адресу, CSRF и строгий CSP, без JavaScript.

Журнал активности

Кто, когда, к какому устройству и с какого адреса подключался. Хранение 365 дней, поиск и фильтры.

Журнал безопасности

Подбор токенов, неудачные входы, попытки подмены устройства, запросы консоли извне. Автоблокировка адресов при подборе и лимиты частоты.

сравнение

Чем доработка лучше оригинального RustDesk

ЗадачаRustDesk (открытая версия)RustDesk + Gateway
Кто может подключитьсялюбой, кто знает ID и парольсотрудник с выданной группой или подрядчик с токеном
Пароль устройствапостоянный, передаётся людямодноразовый на каждое подключение
Отзыв доступа у одного человекатолько сменой пароля для всехмгновенно: отключить учётку или отозвать токен
Подключение в обходс любого клиента RustDeskрежим «только шлюз»: устройство не отвечает
Доступ без установки ПОнет (веб-клиент — в платной Pro)браузер + токен, сквозное шифрование
Управление устройствамивручную на каждом ПКреестр, команды, снимки экрана из консоли
Журнал и инцидентынетжурналы активности и безопасности, автоблокировка
Окно подключениякрупное, закрывает программуминиатюрная карточка ✓ ✕ ▲

// основа — открытый проект RustDesk (AGPL-3.0). Шлюз и консоль разработаны с нуля; клиент — доработка RustDesk 1.4.9. Доработка не связана с авторами RustDesk.

презентация

Все слайды

Нажмите на слайд, чтобы открыть его крупно. Листать — стрелками или свайпом.