mikroHUB

Turvaarhitektuur

Kuidas mikroHUB teie võrguinfrastruktuuri kaitseb

Dokumendi versioon: 2026-03-22 · Küsimused: [email protected]

Võrgu arhitektuur

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

Kogu väline liiklus lõpeb Nginxis TLS 1.2+-ga. Siseteenused (API port 3001, Redise port 6379) on tulemüüri tasemel blokeeritud ega puutu kunagi kokku Internetti.

Autentimine ja autoriseerimine

Kihtmehhanism
Kasutaja autentiminePKCE
Supabase Auth PKCE vooga (mitte kaudne)
Tokenite salvestusruumCOOKIE
Secure + SameSite=Lax küpsised (mitte localStorage)
Token LifetimeTTL
1 tund max, 60s vahemälu, sunnitud värskendus
Seansi tühistamineREVOKE
Mälusisene kehtetuks tunnistamine + märgi must nimekiri
WebSocket AuthTICKET
Ühekordne piletivahetus (JWT mitte kunagi URL-is)
API võtme autentimineSHA-256
SHA-256 räsitud, ulatus ressursi kohta, aegumine jõustatud
Seadme agendi autentimineAGENT
SHA-256 räsimärk, kiirusega piiratud (2 nõuet/30 s)
MFAMFA
TOTP (autentimisrakendus) + WebAuthn/FIDO2 (pääsmed, YubiKey)

Andmete eraldamine (mitme üürnikuga)

Organisatsioon A – "ISP Gdansk"
devices (org_id=1)
metrics (org_id=1)
backups (org_id=1)
logs (org_id=1)
RLS BLOKEERITUD
Org B – "Firma Warszawa"
devices (org_id=2)
metrics (org_id=2)
backups (org_id=2)
logs (org_id=2)
  • Reataseme turvalisus (RLS) KÕIGIL andmetabelitel
  • Jõustatakse PostgreSQL-i tasemel – isegi SQL-i süstimine ei saa ületada rentniku piire
  • API vahevara kontrollib iga taotluse korral organisatsiooni liikmesust
  • WebSocketi tellimused, mis on valideeritud org_membersi suhtes

Seadme mandaadid

1

Krüptida

AES-256-GCM juhusliku IV-ga kirje kohta, autentimismärgend kinnitatud

2

Kauplus

Salvestatud kui iv:tag:šifreeritud tekst Supabase'is (mitte kunagi lihttekstina)

3

Dekrüpteerige küsitluses

Dekrüpteeritud ainult küsitluse ajal, mälus, mitte kunagi logitud

4

Ühendage

RouterOS API-SSL TLS-krüptitud ühendusega

  • Peamine krüpteerimisvõti keskkonnamuutujas (mitte koodis, mitte DB-s)
  • Mandaat dekrüpteeritakse ainult siis, kui see on seadme ühendamiseks vajalik
  • Veateated redigeerivad IP-d ja mandaadid regexi kaudu
  • Mandaati ei kuvata kunagi logides, vastustes ega kontrolljälgedes

Ühendusrežiimid

API haldus

Otsene TLS-ühendus API-SSL-i kaudu (port 8729). Täielik juurdepääs haldusele.

  • TLS krüpteeritud
  • IP-piiratud mikroHUB-iga
  • Ainult port 8729

WireGuard

Krüpteeritud tunnel – ruuteril pole vaja avatud porte.

  • Avalikke sadamaid pole vaja
  • Seadme kohta /32 peer
  • Pole jagatud tunnelit
  • Ühe kopeerimise ja kleepimise seadistus

API jälgimine

Kirjutuskaitstud otsene TLS-ühendus. Ruuterile pole kirjutusõigust.

  • Kirjutuskaitstud juurdepääs
  • TLS krüpteeritud
  • IP-ga piiratud

Agent

Seade edastab andmed välja HTTPS-i kaudu. Mitte midagi sissetulevat.

  • Ainult väljaminev (HTTPS)
  • Avatud porte pole vaja
  • Ainult surutav mudel
  • Piiratud kiirus (2 nõuet / 30 s)

Infrastruktuuri turvalisus

KomponentKaitse
TLSTLSv1.2 + TLSv1.3, ECDHE šifrid, HSTS-i eellaadimine
Tulemüür (UFW)Ainult 80, 443, 51820/UDP on eksponeeritud. API (3001) ja Redis (6379) KEELATA
RedisTLS on lubatud, nõutav parool, sidumine ainult kohaliku hostiga
Nginxi päisedHSTS, X-Frame-Options, X-Content-Type-Options, CSP, Permissions-Policy
Rate LimitingGlobaalne 300/15 min, autentimine 5/min, administraator 30/15 min, agent 2/30 s
DH parameetrid2048-bitine dhparam edasisaladuse tagamiseks

Mida me EI TEE

  • Me ei salvesta paroole lihttekstina – mitte kunagi
  • Me ei kasuta žetoonide jaoks kohalikku salvestusruumi
  • Me ei avalda siseteenuseid Internetti
  • Me ei luba rentnikevahelist juurdepääsu andmetele
  • Me ei logi mandaate ega tundlikke andmeid
  • Me ei nõua teie ruuteril avatud porte (WireGuardi režiim)
  • Me ei saada lihtteksti API-ühendusi (otserežiimi jaoks on vajalik SSL)

Vastavus

StandardneOlek
HTTPS kõikjalJõustatakse
Krüpteerimine puhkeolekusAES-256-GCM mandaatide jaoks
Krüpteerimine edastamiselTLS + WireGuard
AutentimineJWT + MFA + PKCE
AutoriseerimineRBAC + RLS
KontrolljälgTäielik auditi logi koos IP-jälgimisega
Andmete kustutamine (GDPR)Konto kustutamise lõpp-punkt
Seansi juhtimineMärgi must nimekiri + sundvärskendus

Kas teil on küsimusi turvalisuse kohta?

Vastame hea meelega potentsiaalsete klientide ja audiitorite küsimustele.

[email protected]