mikroHUB

Arsitektur Keamanan

Bagaimana mikroHUB melindungi infrastruktur jaringan Anda

Versi dokumen: 2026-03-22 · Pertanyaan: [email protected]

Arsitektur Jaringan

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

Semua lalu lintas eksternal berakhir di Nginx dengan TLS 1.2+. Layanan internal (API port 3001, Redis port 6379) diblokir di tingkat firewall dan tidak pernah terekspos ke internet.

Otentikasi & Otorisasi

LapisanMekanisme
Otentikasi PenggunaPKCE
Supabase Auth dengan aliran PKCE (tidak implisit)
Penyimpanan TokenCOOKIE
Aman + SameSite=Cookie longgar (bukan Penyimpanan lokal)
Token Seumur HidupTTL
Maksimum 1 jam, cache 60 detik, penyegaran paksa
Pencabutan SesiREVOKE
Pembatalan dalam memori + daftar hitam token
Otentikasi WebSocketTICKET
Penukaran tiket satu kali (JWT tidak pernah ada di URL)
Otentikasi Kunci APISHA-256
SHA-256 di-hash, tercakup per sumber daya, masa berlakunya diberlakukan
Otentikasi Agen PerangkatAGENT
Token hash SHA-256, tarif terbatas (2 persyaratan/30 detik)
Kementerian Luar NegeriMFA
TOTP (aplikasi autentikator) + WebAuthn/FIDO2 (kunci sandi, YubiKey)

Isolasi Data (Multi-Penyewa)

Organisasi A — "ISP Gdansk"
devices (org_id=1)
metrics (org_id=1)
backups (org_id=1)
logs (org_id=1)
RLS DIBLOKIR
Organisasi B — "Firma Warszawa"
devices (org_id=2)
metrics (org_id=2)
backups (org_id=2)
logs (org_id=2)
  • Keamanan Tingkat Baris (RLS) pada SEMUA tabel data
  • Diberlakukan di tingkat PostgreSQL — bahkan injeksi SQL tidak dapat melewati batas penyewa
  • Middleware API memeriksa ulang keanggotaan organisasi pada setiap permintaan
  • Langganan WebSocket divalidasi terhadap org_members

Kredensial Perangkat

1

Enkripsi

AES-256-GCM dengan IV acak per entri, tag autentikasi divalidasi

2

Toko

Disimpan sebagai iv:tag:ciphertext di Supabase (tidak pernah berupa teks biasa)

3

Dekripsi di Jajak Pendapat

Didekripsi hanya pada waktu jajak pendapat, di dalam memori, tidak pernah dicatat

4

Menghubungkan

RouterOS API-SSL dengan koneksi terenkripsi TLS

  • Kunci enkripsi utama dalam variabel lingkungan (bukan dalam kode, bukan dalam DB)
  • Kredensial didekripsi hanya bila diperlukan untuk koneksi perangkat
  • Pesan kesalahan menyunting IP dan kredensial melalui regex
  • Kredensial tidak pernah muncul di log, tanggapan, atau jejak audit

Mode Koneksi

Manajemen API

Koneksi TLS langsung melalui API-SSL (port 8729). Akses manajemen penuh.

  • terenkripsi TLS
  • IP terbatas pada mikroHUB
  • Hanya port 8729

Penjaga Kawat

Terowongan terenkripsi — tidak diperlukan port terbuka di router.

  • Tidak diperlukan port publik
  • Per perangkat /32 rekan
  • Tidak ada terowongan terpisah
  • Pengaturan salin-tempel tunggal

Pemantauan API

Koneksi TLS langsung hanya-baca. Tidak ada akses tulis ke router.

  • Akses hanya baca
  • terenkripsi TLS
  • dibatasi IP

Agen

Perangkat mendorong data keluar melalui HTTPS. Tidak ada yang masuk.

  • Hanya keluar (HTTPS)
  • Tidak diperlukan port terbuka
  • Model hanya dorong
  • Tarif terbatas (2 permintaan/30 detik)

Keamanan Infrastruktur

KomponenPerlindungan
TLSTLSv1.2 + TLSv1.3, sandi ECDHE, pramuat HSTS
Dinding Api (UFW)Hanya 80, 443, 51820/UDP yang terpapar. API (3001) dan Redis (6379) MENOLAK
ulangTLS diaktifkan, diperlukan kata sandi, pengikatan khusus localhost
Tajuk NginxHSTS, Opsi-X-Frame, Opsi-Jenis-Konten-X, CSP, Kebijakan-Izin
Pembatasan NilaiGlobal 300/15mnt, Auth 5/mnt, Admin 30/15mnt, Agen 2/30dtk
Parameter DHDhparam 2048-bit untuk kerahasiaan penerusan

Apa yang TIDAK Kami Lakukan

  • Kami tidak menyimpan kata sandi dalam teks biasa — selamanya
  • Kami tidak menggunakan Penyimpanan lokal untuk token
  • Kami tidak mengekspos layanan internal ke internet
  • Kami tidak mengizinkan akses data lintas penyewa
  • Kami tidak mencatat kredensial atau data sensitif
  • Kami tidak memerlukan port terbuka pada router Anda (mode WireGuard)
  • Kami tidak mengirim koneksi API teks biasa (SSL diperlukan untuk mode langsung)

Kepatuhan

StandarStatus
HTTPS di mana-manaDitegakkan
Enkripsi saat istirahatAES-256-GCM untuk kredensial
Enkripsi dalam perjalananTLS + Penjaga Kawat
OtentikasiJWT + MFA + PKCE
OtorisasiRBAC + RLS
Jejak auditLog audit lengkap dengan pelacakan IP
Penghapusan data (GDPR)Titik akhir penghapusan akun
Manajemen sesiDaftar hitam token + penyegaran paksa

Pertanyaan tentang keamanan?

Kami dengan senang hati menjawab pertanyaan apa pun dari calon pelanggan dan auditor.

[email protected]