RustDesk Gateway
Управляемый и безопасный удалённый доступ к любым устройствам. Шлюз доступа, консоль администратора и доработанный клиент RustDesk: сотрудники поддержки и подрядчики работают с компьютерами, киосками и серверами, не зная их ID и паролей. Каждое подключение одноразовое, записано в журнал и отзывается одним нажатием.
- Rust
- axum
- SQLite
- RustDesk 1.4.9
- Ed25519
- X25519 · HKDF · AES-256-GCM
- Argon2 + TOTP
- Docker Swarm
- Traefik / HAProxy
Обычный RustDesk: кто знает пароль — тот и подключается
В итоге подключение к терминалу клиента занимало от 1 до 50 минут, а схема доступа держалась на паролях, которые расходились по чатам.
Пароли расходятся
ID и пароли устройств уходят сотрудникам и подрядчикам, оседают в переписке. Отозвать доступ у одного человека нельзя — только сменить пароль для всех.
Нет контроля
Не видно, кто, когда и к какому устройству подключался. Нет единого реестра устройств, их состояния и настроек.
Обход и неудобство
Подключиться можно с любого клиента RustDesk. Внешнему специалисту нужно ставить ПО. Окно подключения закрывает рабочую программу.
Шлюз доступа поверх собственного сервера RustDesk
Шлюз работает рядом с сервером RustDesk (hbbs/hbbr) и не меняет его. Устройства и приложения сотрудников — доработанный клиент RustDesk. Свой сервер, без облака и подписок.
Одноразовый пароль от самого устройства на каждое подключение
«Подключиться»
Сотрудник нажимает кнопку в обычном приложении 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.
Все слайды
Нажмите на слайд, чтобы открыть его крупно. Листать — стрелками или свайпом.