Архитектура сервера¶
Архитектура сервера — описание состава компонентов сервера RuDesktop и схемы взаимодействия между ними. Раздел полезен при первичном развёртывании, диагностике и проектировании отказоустойчивой инсталляции.
Описание сервера¶
Сервер обеспечивает удалённые подключения к рабочим столам, управление политиками, задачами и правами доступа. Управление выполняется через веб-интерфейс, доступный по адресу сервера.
Примечание
По умолчанию сервер слушает на локальном IP-адресе и порту 443. Адрес и порт можно изменить — см. Смена и установка IP и Смена стандартного порта
Подсказка
Управление сервером описано в Руководстве пользователя
Стек¶
Компоненты сервера¶
PostgreSQL — основная СУБД сервера. Хранит пользователей, группы, устройства, политики, задачи и события аудита
Redis — кеш и канал для WebSocket-соединений (см. Настройка Redis)
NGINX — фронтальный веб-сервер: терминирует TLS, проксирует запросы к веб-интерфейсу, серверной части и серверу подключений через unix-сокеты
rudesktop-server — сервер подключений, выполняет две роли: рандеву — координирует установление прямых соединений между клиентами (служит точкой первичного обращения, через которую клиенты находят друг друга); ретранслятор (relay) — передаёт трафик через сервер, когда прямое соединение между клиентами невозможно (например, из-за NAT). Подбор ближайшего ретранслятора (моста) для клиента выполняется по географическим координатам
rudesktop-pxe — PXE-сервер для установки ОС по сети. Содержит встроенные TFTP и DHCP серверы (см. Настройка PXE)
Ansible — выполнение политик и задач на удалённых устройствах. Запуск плейбуков выполняется в фоновом режиме
Django — административная панель и серверная часть веб-API, включая обработку WebSocket-соединений с клиентами
YAML — формат описания политик и инвентаря Ansible
TLS — шифрование трафика между сервером, клиентами и веб-интерфейсом
Распределённая инфраструктура¶
Мост — отдельный сервер RuDesktop, развёрнутый в географически удалённой точке. Главный сервер по координатам подбирает ближайший к клиенту мост и направляет через него подключение, что сокращает сетевую задержку для удалённых филиалов. Подробнее: Настройка мостов
Точка распространения — отдельный сервер RuDesktop, развёрнутый в режиме исполнителя. Забирает у главного сервера фоновые задачи (например, выполнение политик), выполняет их у себя и хранит локальный кэш файлов, чтобы не загружать их с главного сервера повторно. Позволяет вынести нагрузку с главного сервера и приблизить раздачу файлов к удалённым устройствам. Подробнее: Настройка точек распространения
Клиент RuDesktop — кроссплатформенное приложение для конечного устройства (на схеме обозначен как «Агент»). Обеспечивает удалённое подключение к серверу, применение политик и инвентаризацию. Подробнее: Клиент RuDesktop
Внешние интегрируемые системы¶
Keycloak — внешний сервис проверки подлинности пользователей. Используется для единого входа и объединения учётных записей из разных источников. Подробнее: Настройка Keycloak
Службы каталогов — интеграция с внешними каталогами пользователей по протоколу LDAP (в том числе по защищённой версии LDAPS):
Active Directory,FreeIPA,OpenLDAPSMTP-сервер — внешний почтовый сервер для отправки уведомлений (приглашения, сброс паролей, события аудита) и одноразовых паролей для двухфакторной аутентификации по электронной почте. Подробнее: Настройки SMTP
SMS-шлюз — внешний сервис для отправки одноразовых паролей по SMS при двухфакторной аутентификации. Поддерживается провайдер
sms.ru. Подробнее: Двухфакторная аутентификация по SMSTelegram-бот — отправка одноразовых паролей через бот в мессенджере Telegram при двухфакторной аутентификации. Подробнее: Двухфакторная аутентификация через Telegram
Мессенджер MAX — отправка одноразовых паролей через бот в мессенджере MAX при двухфакторной аутентификации. Подробнее: Двухфакторная аутентификация через MAX
Yandex SmartCaptcha — внешний сервис проверки, защищающий веб-интерфейс от ботов при входе и регистрации. Подробнее: Настройки авторизации
SIEM-системы — пересылка событий аудита во внешние системы управления событиями безопасности через локальный syslog-демон (
rsyslogилиsyslog-ng) в формате CEF. Подробнее: Отправка событий в SIEMСистемы мониторинга — внешние системы (
Zabbix,Prometheus,Grafana) подключаются к серверу через эндпоинт/api/healthcheck/, командыrude status/rude profи стандартные средстваsystemdи PostgreSQL. Подробнее: Мониторинг и метрики
Схема компонентов сервера¶
Схема внешних интегрируемых систем¶
Передача файлов на устройства¶
При выполнении политики, использующей файлы из хранилища, данные проходят по цепочке главный сервер → точка распространения → конечное устройство:
Главный сервер → точка распространения. Точка распространения загружает файл из хранилища главного сервера в свой локальный кэш по протоколу HTTPS. Если файл уже кэширован и его контрольная сумма актуальна, повторная загрузка не выполняется. Подробнее: Кэшированные файлы
Точка распространения → устройство. Устройство загружает файл напрямую с той точки распространения, которая выполняет задачу, также по HTTPS. Если нужного файла на точке не оказалось, она догружает его с главного сервера в момент выполнения
Управляющий канал. Команды на устройство (запуск задач и получение результата) передаются по протоколу RuDesktop через сервер подключений главного сервера — тем же WebSocket-каналом, что используется для сессий удалённого доступа, и отдельно от передачи самих файлов
Примечание
Сетевые соединения и порты, которые требуется открыть на межсетевом экране, приведены в разделе Настройка точек распространения
Схема географически распределённого отказоустойчивого кластера¶
Для развёртывания нескольких узлов сервера с общими PostgreSQL и Redis см. Развёртывание отказоустойчивого кластера