mikroHUB

Архитектура безопасности

Как mikroHUB защищает вашу сетевую инфраструктуру

Версия документа: 2026-03-22 · Вопросы: [email protected]

Сетевая архитектура

                              INTERNET
         ┌────────────────────┬──────────────────────┐
         │ HTTPS/443          │ WSS/443              │ WG/UDP 51820
         │ (TLS 1.2+)        │ (WebSocket)          │ (WireGuard)
         ▼                    ▼                      ▼
┌─────────────────────────────────────────────────────────────────┐
│  NGINX REVERSE PROXY  (mikrohub.io)                             │
│  ┌──────────────┐  ┌──────────────┐  ┌────────────────────────┐ │
│  │ Let's Encrypt │  │ HSTS Preload │  │ CSP + Security Headers │ │
│  │ ECDSA cert    │  │ max-age=2yr  │  │ X-Frame, X-Content     │ │
│  └──────────────┘  └──────────────┘  └────────────────────────┘ │
│  Ports open : 80 (→301), 443, 51820/UDP                         │
│  Ports BLOCKED: 3001 (API), 6379 (Redis)                         │
└──────────┬──────────────────────┬───────────────────┬───────────┘
           │ :3001               │ :3001/ws          │ :51820
           ▼                     ▼                    ▼
┌──────────────────┐  ┌──────────────┐  ┌──────────────────────────┐
│ EXPRESS API      │  │ WebSocket    │  │ WireGuard (wg0)          │
│ (Node.js)        │  │ Server       │  │ 10.99.0.1/16             │
│                  │  │ One-time     │  │ Per-device /32 peer      │
│ JWT validation   │  │ ticket auth  │  │ No split tunnel          │
│ 60s session cache│  │ (no JWT      │  │                          │
│ 1h max token age │  │  in URL)     │  │ Devices: 10.99.x.y      │
└────────┬─────────┘  └──────────────┘  └──────────────────────────┘
         │
   ┌─────┴──────┐
   ▼            ▼
┌────────┐  ┌────────┐
│Supabase│  │ Redis  │
│Postgres│  │ TLS    │
│(cloud) │  │(local) │
│RLS on  │  │ Auth   │
│all tbl │  │ reqd   │
└────────┘  └────────┘

Весь внешний трафик завершается в Nginx с TLS 1.2+. Внутренние службы (порт API 3001, порт Redis 6379) блокируются на уровне брандмауэра и никогда не доступны из Интернета.

Аутентификация и авторизация

СлойМеханизм
Аутентификация пользователяPKCE
Supabase Auth с потоком PKCE (не неявный)
Хранение токеновCOOKIE
Secure + SameSite=Слабые файлы cookie (не localStorage)
Срок действия токенаTTL
Максимум 1 час, кэш 60 с, принудительное обновление
Отзыв сеансаREVOKE
Аннулирование в памяти + черный список токенов
Веб-сокет-аутентификацияTICKET
Одноразовый обмен билетов (JWT никогда не указывается в URL)
API-ключ аутентификацииSHA-256
Хеширование SHA-256, область действия определена для каждого ресурса, срок действия ограничен.
Аутентификация агента устройстваAGENT
Хешированный токен SHA-256, с ограничением скорости (2 запроса/30 с)
МИДMFA
TOTP (приложение для аутентификации) + WebAuthn/FIDO2 (ключи доступа, YubiKey)

Изоляция данных (многопользовательская среда)

Организация А — «Интернет-провайдер Гданьск»
devices (org_id=1)
metrics (org_id=1)
backups (org_id=1)
logs (org_id=1)
РЛС ЗАБЛОКИРОВАН
Организация Б — «Фирма Варшава»
devices (org_id=2)
metrics (org_id=2)
backups (org_id=2)
logs (org_id=2)
  • Безопасность на уровне строк (RLS) для ВСЕХ таблиц данных
  • Принудительно на уровне PostgreSQL — даже внедрение SQL не может пересекать границы арендаторов.
  • Промежуточное программное обеспечение API дважды проверяет членство в организации при каждом запросе.
  • Подписки WebSocket проверены на соответствие org_members

Учетные данные устройства

1

Шифровать

AES-256-GCM со случайным IV для каждой записи, тег аутентификации проверен

2

Магазин

Хранится как iv:tag:ciphertext в Supabase (никогда в виде открытого текста).

3

Расшифровать в опросе

Расшифровывается только во время опроса, в памяти, никогда не протоколируется.

4

Соединять

RouterOS API-SSL с зашифрованным соединением TLS

  • Главный ключ шифрования в переменной среды (не в коде, не в БД)
  • Учетные данные расшифровываются только тогда, когда это необходимо для подключения устройства.
  • Сообщения об ошибках редактируют IP-адреса и учетные данные через регулярное выражение.
  • Учетные данные никогда не отображаются в журналах, ответах или контрольном журнале.

Режимы подключения

Управление API

Прямое TLS-соединение через API-SSL (порт 8729). Полный доступ к управлению.

  • TLS зашифровано
  • IP-адрес ограничен mikroHUB
  • Только порт 8729

WireGuard

Зашифрованный туннель — на маршрутизаторе не требуется открытых портов.

  • Общественные порты не нужны
  • Для каждого устройства/32 узла
  • Нет разделенного туннеля
  • Настройка одиночного копирования

API-мониторинг

Прямое соединение TLS только для чтения. Нет доступа на запись к маршрутизатору.

  • Доступ только для чтения
  • TLS зашифровано
  • с ограничением по IP

Агент

Устройство отправляет данные через HTTPS. Ничего входящего.

  • Только исходящий (HTTPS)
  • Никаких открытых портов не требуется
  • Модель только с нажатием
  • Ограничено по скорости (2 запроса/30 с)

Безопасность инфраструктуры

КомпонентЗащита
ТЛСTLSv1.2 + TLSv1.3, шифры ECDHE, предварительная загрузка HSTS
Брандмауэр (UFW)Открыты только 80, 443, 51820/UDP. API (3001) и Redis (6379) ЗАПРЕЩЕНО
РедисTLS включен, требуется пароль, привязка только к локальному хосту
Заголовки NginxHSTS, параметры X-Frame, параметры типа X-контента, CSP, политика разрешений
Ограничение скоростиГлобально 300/15 мин, аутентификация 5/мин, администратор 30/15 мин, агент 2/30 с
Параметры ЦТ2048-битный параметр dhparam для прямой секретности

Чего мы НЕ делаем

  • Мы никогда не храним пароли в открытом виде
  • Мы не используем localStorage для токенов
  • Мы не раскрываем внутренние сервисы в Интернете
  • Мы не разрешаем доступ к данным между арендаторами
  • Мы не регистрируем учетные данные или конфиденциальные данные
  • Нам не требуются открытые порты на вашем маршрутизаторе (режим WireGuard)
  • Мы не отправляем соединения API в виде открытого текста (для прямого режима требуется SSL).

Согласие

СтандартныйСтатус
HTTPS вездеПринудительный
Шифрование в состоянии покояAES-256-GCM для учетных данных
Шифрование при передачеTLS + WireGuard
АутентификацияJWT + МИД + ПКСЕ
АвторизацияРБАК + РЛС
Аудиторский следПолный журнал аудита с отслеживанием IP
Удаление данных (GDPR)Конечная точка удаления учетной записи
Управление сеансамиЧерный список токенов + принудительное обновление

Вопросы о безопасности?

Мы будем рады ответить на любые вопросы потенциальных клиентов и аудиторов.

[email protected]