mikroHUB

Arhitectura de securitate

Cum mikroHUB vă protejează infrastructura de rețea

Versiunea documentului: 2026-03-22 · Întrebări: [email protected]

Arhitectura de rețea

                              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   │
└────────┘  └────────┘

Tot traficul extern se termină la Nginx cu TLS 1.2+. Serviciile interne (portul API 3001, portul Redis 6379) sunt blocate la nivel de firewall și nu sunt niciodată expuse internetului.

Autentificare și autorizare

StratMecanism
Autentificare utilizatorPKCE
Supabase Auth cu flux PKCE (nu implicit)
Stocare de jetoaneCOOKIE
Securizat + SameSite=Cookie-uri lax (nu localStorage)
Token LifetimeTTL
Maxim 1 oră, cache de 60 de secunde, reîmprospătare forțată
Revocarea sesiuniiREVOKE
Invalidare în memorie + lista neagră de simboluri
WebSocket AuthTICKET
Schimb unic de bilete (JWT niciodată în URL)
API Key AuthSHA-256
Hash SHA-256, acoperit per resursă, expirare impusă
Device Agent AuthAGENT
Indicativ SHA-256 cu hash, cu o rată limitată (2 solicitări/30 secunde)
MAEMFA
TOTP (aplicație de autentificare) + WebAuthn/FIDO2 (chei de acces, YubiKey)

Izolarea datelor (cu mai multe locatari)

Org A — „ISP Gdansk”
devices (org_id=1)
metrics (org_id=1)
backups (org_id=1)
logs (org_id=1)
RLS BLOCAT
Org B - „Firma Warszawa”
devices (org_id=2)
metrics (org_id=2)
backups (org_id=2)
logs (org_id=2)
  • Securitate la nivel de rând (RLS) pe TOATE tabelele de date
  • Aplicat la nivel PostgreSQL — chiar și injecția SQL nu poate depăși granițele chiriașilor
  • Middleware-ul API verifică de două ori apartenența la organizație la fiecare solicitare
  • Abonamentele WebSocket au fost validate împotriva org_members

Acreditările dispozitivului

1

Criptează

AES-256-GCM cu IV aleatoriu per intrare, etichetă de autentificare validată

2

Magazin

Stocat ca iv:tag:ciphertext în Supabase (niciodată text simplu)

3

Decriptați la sondaj

Decriptat numai în timpul sondajului, în memorie, niciodată înregistrat

4

Conectați-vă

RouterOS API-SSL cu conexiune criptată TLS

  • Cheia principală de criptare în variabila de mediu (nu în cod, nu în DB)
  • Acreditările sunt decriptate numai atunci când sunt necesare pentru conectarea dispozitivului
  • Mesajele de eroare elimină IP-urile și acreditările prin regex
  • Acreditările nu apar niciodată în jurnalele, răspunsurile sau urmările de audit

Moduri de conectare

Management API

Conexiune TLS directă prin API-SSL (port 8729). Acces de management complet.

  • TLS criptat
  • IP-restricționat la mikroHUB
  • Numai portul 8729

WireGuard

Tunel criptat — nu sunt necesare porturi deschise pe router.

  • Nu sunt necesare porturi publice
  • Per-dispozitiv/32 peer
  • Nici un tunel divizat
  • Configurare unică copiere-lipire

Monitorizare API

Conexiune TLS directă numai pentru citire. Fără acces de scriere la router.

  • Acces numai în citire
  • TLS criptat
  • IP-restricționat

Agent

Dispozitivul trimite datele la ieșire prin HTTPS. Nimic de intrare.

  • Numai ieșire (HTTPS)
  • Nu sunt necesare porturi deschise
  • Model doar cu apăsare
  • Rată limitată (2 solicitări/30 secunde)

Securitatea infrastructurii

ComponentăProtecţie
TLSTLSv1.2 + TLSv1.3, cifruri ECDHE, preîncărcare HSTS
Firewall (UFW)Doar 80, 443, 51820/UDP expuse. API (3001) și Redis (6379) DENY
RedisTLS activat, parolă necesară, legare doar localhost
Anteturi NginxHSTS, X-Frame-Options, X-Content-Type-Options, CSP, Permisiuni-Politica
Limitarea rateiGlobal 300/15min, Auth 5/min, Admin 30/15min, Agent 2/30s
Parametrii DHdhparam pe 2048 de biți pentru secretul direct

Ceea ce NU FACEM

  • Nu stocăm parolele în text simplu – niciodată
  • Nu folosim localStorage pentru jetoane
  • Nu expunem serviciile interne la internet
  • Nu permitem accesul la date între chiriași
  • Nu înregistrăm acreditările sau datele sensibile
  • Nu avem nevoie de porturi deschise pe routerul dvs. (mod WireGuard)
  • Nu trimitem conexiuni API text simplu (SSL este necesar pentru modul direct)

Conformitate

StandardStare
HTTPS peste totAplicat
Criptare în repausAES-256-GCM pentru acreditări
Criptare în tranzitTLS + WireGuard
AutentificareJWT + MFA + PKCE
AutorizareRBAC + RLS
Pista de auditJurnal complet de audit cu urmărire IP
Ștergerea datelor (GDPR)Punct final de ștergere a contului
Managementul sesiuniiLista neagră de jetoane + reîmprospătare forțată

Întrebări despre securitate?

Suntem bucuroși să răspundem la orice întrebări din partea clienților potențiali și a auditorilor.

[email protected]