Архитектура сервера

Архитектура сервера — описание состава компонентов сервера 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, OpenLDAP

  • SMTP-сервер — внешний почтовый сервер для отправки уведомлений (приглашения, сброс паролей, события аудита) и одноразовых паролей для двухфакторной аутентификации по электронной почте. Подробнее: Настройки SMTP

  • SMS-шлюз — внешний сервис для отправки одноразовых паролей по SMS при двухфакторной аутентификации. Поддерживается провайдер sms.ru. Подробнее: Двухфакторная аутентификация по SMS

  • Telegram-бот — отправка одноразовых паролей через бот в мессенджере 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. Подробнее: Мониторинг и метрики

Схема компонентов сервера

Схема внешних интегрируемых систем

Передача файлов на устройства

При выполнении политики, использующей файлы из хранилища, данные проходят по цепочке главный сервер → точка распространения → конечное устройство:

  1. Главный сервер → точка распространения. Точка распространения загружает файл из хранилища главного сервера в свой локальный кэш по протоколу HTTPS. Если файл уже кэширован и его контрольная сумма актуальна, повторная загрузка не выполняется. Подробнее: Кэшированные файлы

  2. Точка распространения → устройство. Устройство загружает файл напрямую с той точки распространения, которая выполняет задачу, также по HTTPS. Если нужного файла на точке не оказалось, она догружает его с главного сервера в момент выполнения

  3. Управляющий канал. Команды на устройство (запуск задач и получение результата) передаются по протоколу RuDesktop через сервер подключений главного сервера — тем же WebSocket-каналом, что используется для сессий удалённого доступа, и отдельно от передачи самих файлов

Примечание

Сетевые соединения и порты, которые требуется открыть на межсетевом экране, приведены в разделе Настройка точек распространения

Схема географически распределённого отказоустойчивого кластера

Для развёртывания нескольких узлов сервера с общими PostgreSQL и Redis см. Развёртывание отказоустойчивого кластера