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