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=Lax cookies (не localStorage)
Термін життя маркераTTL
Максимум 1 година, кеш 60 с, примусове оновлення
Скасування сеансуREVOKE
Анулювання в пам’яті + чорний список маркерів
WebSocket AuthTICKET
Одноразовий обмін квитків (JWT ніколи не в URL-адресі)
Аутентифікація ключа APISHA-256
Хешований SHA-256, обмеження для кожного ресурсу, примусовий термін дії
Аутентифікація агента пристроюAGENT
Хешований маркер SHA-256, обмеження швидкості (2 вимоги/30 с)
МЗСMFA
TOTP (програма автентифікації) + WebAuthn/FIDO2 (ключі доступу, YubiKey)

Ізоляція даних (мультитенант)

Організація A — «ISP Гданськ»
devices (org_id=1)
metrics (org_id=1)
backups (org_id=1)
logs (org_id=1)
RLS ЗАБЛОКУВАНО
Org B — «Firma Warszawa»
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 с)

Безпека інфраструктури

компонентзахист
TLSTLSv1.2 + TLSv1.3, шифри ECDHE, попереднє завантаження HSTS
Брандмауер (UFW)Розкрито лише 80, 443, 51820/UDP. API (3001) і Redis (6379) ВІДМОВИТЬ
RedisTLS увімкнено, потрібен пароль, прив’язка лише до локального хосту
Заголовки NginxHSTS, X-Frame-Options, X-Content-Type-Options, CSP, Permissions-Policy
Обмеження швидкостіГлобально 300/15 хв, авторизація 5/хв, адміністратор 30/15 хв, агент 2/30 с
Параметри DH2048-бітний dhparam для прямої секретності

Чого ми НЕ РОБИМО

  • Ми ніколи не зберігаємо паролі у відкритому вигляді
  • Ми не використовуємо localStorage для токенів
  • Ми не надаємо внутрішні служби Інтернету
  • Ми не дозволяємо доступ до даних між клієнтами
  • Ми не реєструємо облікові та конфіденційні дані
  • Нам не потрібні відкриті порти на маршрутизаторі (режим WireGuard)
  • Ми не надсилаємо відкритий текст API-з’єднань (для прямого режиму потрібен SSL)

Відповідність

СтандартнийСтатус
HTTPS всюдиПримусово
Шифрування в спокоїAES-256-GCM для облікових даних
Шифрування під час передачіTLS + WireGuard
АутентифікаціяJWT + MFA + PKCE
АвторизаціяRBAC + RLS
Аудиторський слідПовний журнал аудиту з відстеженням IP
Видалення даних (GDPR)Кінцева точка видалення облікового запису
Управління сеансамиЧорний список токенів + примусове оновлення

Запитання щодо безпеки?

Ми раді відповісти на будь-які запитання потенційних клієнтів та аудиторів.

[email protected]