mikroHUB

معماری امنیتی

چگونه 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
امن + SameSite = کوکی‌های ضعیف (نه محلی ذخیره‌سازی)
طول عمر رمزTTL
حداکثر 1 ساعت، کش 60 ثانیه، به‌روزرسانی اجباری
لغو جلسهREVOKE
باطل شدن در حافظه + لیست سیاه نشانه
WebSocket AuthTICKET
تعویض بلیط یکباره (JWT هرگز در URL)
API Key AuthSHA-256
SHA-256 هش شده، محدوده به ازای هر منبع، انقضا اجرا شده است
Device Agent AuthAGENT
رمز هش SHA-256، با نرخ محدود (2 req/30s)
وزارت امور خارجهMFA
TOTP (برنامه احراز هویت) + WebAuthn/FIDO2 (کلیدهای عبور، YubiKey)

جداسازی داده ها (چند مستاجر)

سازمان A - "ISP Gdansk"
devices (org_id=1)
metrics (org_id=1)
backups (org_id=1)
logs (org_id=1)
RLS مسدود شده است
سازمان B - "Firma Warszawa"
devices (org_id=2)
metrics (org_id=2)
backups (org_id=2)
logs (org_id=2)
  • امنیت در سطح ردیف (RLS) در تمام جداول داده
  • در سطح PostgreSQL اجرا می شود - حتی تزریق SQL نیز نمی تواند از مرزهای مستاجر عبور کند
  • میان‌افزار API در هر درخواست عضویت سازمان را دوبار بررسی می‌کند
  • اشتراک‌های WebSocket در برابر org_members تأیید شده است

اعتبار دستگاه

1

رمزگذاری کنید

AES-256-GCM با IV تصادفی در هر ورودی، برچسب تأیید اعتبار

2

فروشگاه

ذخیره شده به صورت iv:tag:ciphertext در Supabase (هرگز متن ساده)

3

رمزگشایی در نظرسنجی

رمزگشایی فقط در زمان نظرسنجی، در حافظه، هرگز وارد سیستم نشده است

4

اتصال

RouterOS API-SSL با اتصال رمزگذاری شده TLS

  • کلید رمزگذاری اصلی در متغیر محیطی (نه در کد، نه در DB)
  • اعتبارنامه ها فقط در صورت نیاز برای اتصال دستگاه رمزگشایی می شوند
  • پیام های خطا، IP ها و اعتبارنامه ها را از طریق regex حذف می کنند
  • اعتبارنامه هرگز در گزارش‌ها، پاسخ‌ها یا دنباله حسابرسی ظاهر نمی‌شود

حالت های اتصال

مدیریت API

اتصال مستقیم TLS از طریق API-SSL (پورت 8729). دسترسی کامل مدیریتی

  • TLS رمزگذاری شده است
  • IP محدود به mikroHUB است
  • فقط پورت 8729

WireGuard

تونل رمزگذاری شده - صفر پورت باز مورد نیاز در روتر.

  • بدون نیاز به بنادر عمومی
  • هر دستگاه /32 همتا
  • بدون شکاف تونل
  • راه اندازی تک کپی-پیست

مانیتورینگ API

اتصال TLS مستقیم فقط خواندنی. دسترسی نوشتن به روتر وجود ندارد.

  • دسترسی فقط خواندنی
  • TLS رمزگذاری شده است
  • IP محدود شده است

عامل

دستگاه داده‌ها را از طریق HTTPS به بیرون هدایت می‌کند. هیچ چیز ورودی نیست.

  • فقط خروجی (HTTPS)
  • بدون نیاز به پورت باز
  • مدل فقط فشار
  • با نرخ محدود (2 تکرار/30 ثانیه)

امنیت زیرساخت

جزءحفاظت
TLSTLSv1.2 + TLSv1.3، رمزهای ECDHE، بارگذاری اولیه HSTS
فایروال (UFW)فقط 80، 443، 51820/UDP در معرض دید قرار گرفت. API (3001) و Redis (6379) DENY
ردیسTLS فعال است، رمز عبور لازم است، فقط برای لوکال هاست الزام آور است
هدرهای NginxHSTS، X-Frame-Options، X-Content-Type-Options، CSP، Permissions-Policy
محدود کردن نرخGlobal 300/15min، Auth 5/min، Admin 30/15min، Agent 2/30s
پارامترهای DHdhparam 2048 بیتی برای محرمانگی فوروارد

کاری که ما انجام نمی دهیم

  • ما رمزهای عبور را در متن ساده ذخیره نمی کنیم - هرگز
  • ما از localStorage برای توکن ها استفاده نمی کنیم
  • ما خدمات داخلی را در معرض اینترنت قرار نمی دهیم
  • ما اجازه دسترسی به داده های متقابل مستاجر را نمی دهیم
  • ما اعتبارنامه یا داده های حساس را ثبت نمی کنیم
  • ما به پورت های باز روتر شما نیاز نداریم (حالت WireGuard)
  • ما اتصالات API متن ساده را ارسال نمی کنیم (SSL برای حالت مستقیم لازم است)

انطباق

استانداردوضعیت
HTTPS در همه جااجرا شد
رمزگذاری در حالت استراحتAES-256-GCM برای اعتبارنامه
رمزگذاری در حمل و نقلTLS + WireGuard
احراز هویتJWT + MFA + PKCE
مجوزRBAC + RLS
دنباله حسابرسیگزارش حسابرسی کامل با ردیابی IP
حذف داده ها (GDPR)نقطه پایان پاک کردن حساب
مدیریت جلسهلیست سیاه رمز + تازه سازی اجباری

سوال در مورد امنیت؟

ما خوشحالیم که به هرگونه سوال مشتریان و حسابرسان بالقوه پاسخ دهیم.

[email protected]