Cum mikroHUB vă protejează infrastructura de rețea
Versiunea documentului: 2026-03-22 · Întrebări: [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 │
└────────┘ └────────┘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.
| Strat | Mecanism |
|---|---|
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) |
AES-256-GCM cu IV aleatoriu per intrare, etichetă de autentificare validată
Stocat ca iv:tag:ciphertext în Supabase (niciodată text simplu)
Decriptat numai în timpul sondajului, în memorie, niciodată înregistrat
RouterOS API-SSL cu conexiune criptată TLS
Conexiune TLS directă prin API-SSL (port 8729). Acces de management complet.
Tunel criptat — nu sunt necesare porturi deschise pe router.
Conexiune TLS directă numai pentru citire. Fără acces de scriere la router.
Dispozitivul trimite datele la ieșire prin HTTPS. Nimic de intrare.
| Componentă | Protecţie |
|---|---|
| ✓TLS | TLSv1.2 + TLSv1.3, cifruri ECDHE, preîncărcare HSTS |
| ✓Firewall (UFW) | Doar 80, 443, 51820/UDP expuse. API (3001) și Redis (6379) DENY |
| ✓Redis | TLS activat, parolă necesară, legare doar localhost |
| ✓Anteturi Nginx | HSTS, X-Frame-Options, X-Content-Type-Options, CSP, Permisiuni-Politica |
| ✓Limitarea ratei | Global 300/15min, Auth 5/min, Admin 30/15min, Agent 2/30s |
| ✓Parametrii DH | dhparam pe 2048 de biți pentru secretul direct |
| Standard | Stare |
|---|---|
| HTTPS peste tot | ✅Aplicat |
| Criptare în repaus | ✅AES-256-GCM pentru acreditări |
| Criptare în tranzit | ✅TLS + WireGuard |
| Autentificare | ✅JWT + MFA + PKCE |
| Autorizare | ✅RBAC + RLS |
| Pista de audit | ✅Jurnal complet de audit cu urmărire IP |
| Ștergerea datelor (GDPR) | ✅Punct final de ștergere a contului |
| Managementul sesiunii | ✅Lista neagră de jetoane + reîmprospătare forțată |
Suntem bucuroși să răspundem la orice întrebări din partea clienților potențiali și a auditorilor.