Как 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) |
AES-256-GCM со случайным IV для каждой записи, тег аутентификации проверен
Хранится как iv:tag:ciphertext в Supabase (никогда в виде открытого текста).
Расшифровывается только во время опроса, в памяти, никогда не протоколируется.
RouterOS API-SSL с зашифрованным соединением TLS
Прямое TLS-соединение через API-SSL (порт 8729). Полный доступ к управлению.
Зашифрованный туннель — на маршрутизаторе не требуется открытых портов.
Прямое соединение TLS только для чтения. Нет доступа на запись к маршрутизатору.
Устройство отправляет данные через HTTPS. Ничего входящего.
| Компонент | Защита |
|---|---|
| ✓ТЛС | TLSv1.2 + TLSv1.3, шифры ECDHE, предварительная загрузка HSTS |
| ✓Брандмауэр (UFW) | Открыты только 80, 443, 51820/UDP. API (3001) и Redis (6379) ЗАПРЕЩЕНО |
| ✓Редис | TLS включен, требуется пароль, привязка только к локальному хосту |
| ✓Заголовки Nginx | HSTS, параметры X-Frame, параметры типа X-контента, CSP, политика разрешений |
| ✓Ограничение скорости | Глобально 300/15 мин, аутентификация 5/мин, администратор 30/15 мин, агент 2/30 с |
| ✓Параметры ЦТ | 2048-битный параметр dhparam для прямой секретности |
| Стандартный | Статус |
|---|---|
| HTTPS везде | ✅Принудительный |
| Шифрование в состоянии покоя | ✅AES-256-GCM для учетных данных |
| Шифрование при передаче | ✅TLS + WireGuard |
| Аутентификация | ✅JWT + МИД + ПКСЕ |
| Авторизация | ✅РБАК + РЛС |
| Аудиторский след | ✅Полный журнал аудита с отслеживанием IP |
| Удаление данных (GDPR) | ✅Конечная точка удаления учетной записи |
| Управление сеансами | ✅Черный список токенов + принудительное обновление |
Мы будем рады ответить на любые вопросы потенциальных клиентов и аудиторов.