البنية الأمنية
تصف هذه الصفحة تصميم التحكم في الوصول وإدارة المفاتيح في RemCam لفرق الأمن التي تقيّم النشر. وهي تعكس التنفيذ الفعلي المطروح، لا الطموحات؛ وحيثما يحيد خيار تصميمي عن الممارسة الشائعة (مثل تثبيت الشهادات بدلًا من تسلسل هرمي لسلطة إصدار الشهادات) يُذكر مسوِّغه.
نموذج النشر والتعرّض
- RemCam ملف Go تنفيذي واحد يُثبَّت كخدمة نظام على الخادم المُدار، ويعمل بحساب خدمة مخصص غير جذري (non-root). لا يوجد في المسار مرحّل سحابي ولا شبكة وكلاء ولا مورّد خارجي للوصول عن بُعد: تبقى كل حركة العرض والتحكم بين نظام VMS/المشغّل والخادم.
- فور التثبيت، ترتبط وحدة تحكم الويب بالعنوان
127.0.0.1فقط. بث سطح المكتب عبر RTSP وواجهة ONVIF مقصوران بشكل دائم على واجهة الاسترجاع المحلي (loopback) - يستهلكهما خادم VMS الموجود على الجهاز نفسه ولا يُعرَضان على الشبكة أبدًا. الطريقة الوحيدة لعرض وحدة التحكم على شبكة هي مفتاح الربط الصريح لكل واجهة، وهو دائمًا عبر HTTPS. - تقتصر الاتصالات الصادرة على خدمة الترخيص (التفعيل، وإلغاء التفعيل، والتحقق من التحديثات الموقَّعة) عبر HTTPS.
الوصول بالمصادقة الثنائية
كل مستمع (واجهة الاسترجاع المحلي وكل واجهة مربوطة) قابل للتهيئة على حدة لفرض المصادقة الثنائية. مع تمكين المصادقة الثنائية على مستمع:
- العامل الأول - الحيازة، في طبقة TLS. يشغّل المستمع TLS متبادلًا (mTLS). يجب أن يقدّم العميل شهادة عميل مسجَّلة أثناء المصافحة؛ ومن دونها تُرفض المصافحة قبل أي تبادل HTTP - لا صفحة تسجيل دخول، ولا صفحة خطأ، ولا أي سطح تطبيقي على الإطلاق. لا يرى المهاجم غير المصادَق عليه على تلك الشبكة سوى جلسة TLS فاشلة، لا أكثر.
- العامل الثاني - المعرفة، في طبقة التطبيق. الاتصال المتحقَّق منه بالشهادة يظل يتطلب كلمة مرور الحساب لإنشاء جلسة. تحدد الشهادة هوية الحساب؛ ولا يكتمل تسجيل الدخول إلا بعد التحقق من كلمة المرور.
مع تعطيل المصادقة الثنائية، يكفي أي من العاملين وحده لتسجيل الدخول (الشهادة أو كلمة المرور) - وهو ما يناسب مستمع الاسترجاع المحلي وشبكات الإدارة الموثوقة. تمنع وحدة التحكم تمكين المصادقة الثنائية قبل أن يحوز المسؤول شهادة عميل صالحة للعمل، فلا يمكن لتغيير الفرض أن يُغلق النظام على المشغّل الذي يفعّله.
تثبيت شهادات العملاء
لا يشغّل RemCam عمدًا تسلسلًا هرميًا لسلطة إصدار شهادات (CA). شهادات العملاء مثبَّتة فرديًا، لا مُتحقَّق منها عبر سلسلة:
- تُولَّد كل شهادة على الخادم (بتشفير مكتبة Go القياسية فقط - لا CA خارجية، ولا خدمة شهادات، ولا استدعاء شبكي)، موقَّعةً ذاتيًا، وتُسجَّل ببصمتها SHA-256، مربوطةً بحساب مسؤول واحد وموسومةً لكل جهاز.
- في طبقة TLS يفحص المتحقق بصمة الشهادة الطرفية المقدَّمة مقابل مجموعة الشهادات المسجَّلة. لا يوجد مرتكز ثقة CA يمكن سرقته، ولا سلسلة يمكن التحقق منها خطأً، وتسجيل شهادة واحدة يمنح هوية واحدة بالضبط - فاختراق شهادة لا يسكّ أبدًا سلطة على غيرها.
- للشهادات دورة حياة صريحة: من صادرة إلى نشطة، مع عمليات تعليق وإعادة تمكين وإبطال لكل شهادة. حذف حساب يبطل جميع شهاداته. ويُعامل تقديم شهادة مبطَلة بوصفه إشارة أمنية: تُرفض عند المصافحة ويُرفع حدث إنذار إلى نظام VMS.
- حزمة
.p12القابلة للتنزيل تحتوي فقط على المفتاح الخاص للعميل وشهادته الطرفية، محميةً بكلمة مرور تُحدَّد عند التوليد. ولا تتضمن أبدًا شهادة CA - فاستيرادها لا يمكن أن يضيف مرتكز ثقة إلى متصفح المشغّل. - يُتتبَّع استخدام الشهادات (آخر تقديم / آخر استخدام)، وأول استخدام لشهادة بديلة يبطل تلقائيًا الشهادة التي تحل محلها.
TLS على الخادم
- تُولَّد شهادة الخادم محليًا عند أول تشغيل (مكتبة Go القياسية؛ دون اعتماد على CA خارجية أو ACME - إذ يجب أن تعمل وحدة التحكم على الشبكات المعزولة عن الإنترنت). يضعها المثبِّت في مخازن ثقة نظام التشغيل والمتصفح على الخادم؛ ويتحقق منها المشغّلون على أجهزتهم عبر بصمة SHA-256 المنشورة (نقطة نهاية بمبدأ الثقة عند أول استخدام).
- الحد الأدنى TLS 1.2، وقد اختير لتوافقه مع المتصفح المدمج في NX Witness.
تخزين بيانات الاعتماد والمفاتيح
- كلمات مرور الحسابات تُخزَّن كتجزئات bcrypt بعامل جهد 12. والتحقق متساوي التوقيت: تُقارَن الحسابات غير المعروفة بتجزئة تمويهية كي لا يكشف توقيت الاستجابة عن وجود الحساب. لا تُكتب كلمات المرور الصريحة أبدًا إلى القرص أو السجلات.
- الأسرار الساكنة (Linux): تُحفظ بيانات الاعتماد (مخزن
الحسابات وبيانات اعتماد RTSP وما شابه) في مخزن ملفات مشفَّر تحت
/etc/vmsmc/credentials(وضع المجلد 0700، مملوك لحساب الخدمة). كل مدخل مشفَّر بـ AES-256-GCM؛ ويُشتق المفتاح عبر HKDF-SHA256 من هوية الجهاز وملح عشوائي لكل تثبيت، فلا تكون ملفات بيانات الاعتماد قابلة للنقل إلى جهاز آخر، ولا تكشف صورة قرص منسوخة وحدها بيانات الاعتماد من دون هوية الجهاز المرافقة. - الأسرار الساكنة (Windows): يُستخدم مخزن بيانات الاعتماد الخاص بالمنصة عبر الآلية الأصلية لنظام التشغيل.
- المفاتيح الخاصة: يُحفظ مفتاح TLS الخاص بالخادم ومواد
شهادات العملاء المسجَّلة تحت
/etc/vmsmc(الوضع 0700، حساب الخدمة فقط). لا توجد المفاتيح الخاصة للعملاء على الخادم إلا بشكل عابر عند التوليد وداخل حزمة.p12المحمية بكلمة مرور والمسلَّمة إلى المسؤول. - الجلسات تُحفظ في الذاكرة فقط - إعادة تشغيل الخدمة تُبطل كل رموز الجلسات.
سياسة الجلسات والإغلاق
- تحمل الجلسات عمرًا مطلقًا قدره 24 ساعة وسقف خمول قدره 8 ساعات؛ وتُطرد الرموز المنتهية عند أول رفض.
- إغلاق الحماية من هجمات القوة الغاشمة شامل، لا لكل مصدر ولا لكل حساب: تتشارك محاولات تسجيل الدخول الفاشلة من أي مصدر عدّادًا تصاعديًا واحدًا، فلا يؤدي تدوير عناوين المصدر أو أسماء المستخدمين إلى إعادة ضبط العتبة. بعد العتبة النهائية تُغلق وحدة التحكم نهائيًا حتى تُعاد الخدمة على الخادم نفسه - خاصية مقصودة قوامها «الحضور المادي شرط الاسترداد».
سجل التدقيق
- كل إجراء ذي صلة بالأمن - تسجيل الدخول وفشله، والإغلاق، وبدء الجلسة،
والاستحواذ على تحكم وحدة التحكم وتحريره وانتزاعه، وتغييرات الحسابات
والتهيئة، وانتقالات دورة حياة الشهادات، وبدء الخدمة وإيقافها - يُكتب في
سجل الأحداث المحلي ويُنشر كأحداث ONVIF ضمن شجرة المواضيع
tns1:RemCam(القائمة الكاملة في دليل الاستخدام). يمكن لنظام VMS إطلاق الإنذارات عليها ووضع الإشارات المرجعية والاحتفاظ بها وفق سياسة الاحتفاظ الخاصة به، على بنية تحتية يتحكم فيها فريق الأمن أصلًا. - جلسة الإدارة نفسها دليل: سطح مكتب الخادم بث كاميرا مسجَّل، فأثر كل ضغطة مفتاح موجود في أرشيف نظام VMS إلى جانب الأحداث.
سلسلة توريد البرمجيات
- التحديثات موقَّعة بخوارزمية Ed25519. يُتحقق من التوقيع مقابل مفتاح مثبَّت داخل الملف التنفيذي، ويُعاد التحقق منه داخل خطوة التطبيق ذات الامتيازات - فيُرفض أي ملف بُدِّل بعد التحقق الأولي (ثغرة TOCTOU بين التنزيل والتثبيت). وترفض تنزيلات التحديث HTTP غير المشفَّر إلى مضيفين غير محليين.
- المنتج ملف Go تنفيذي واحد مبني بشكل ساكن: لا مفسّرات مضمَّنة، ولا عمليات فرعية لـ FFmpeg أو محوّلات ترميز، ولا تحميل إضافات. تُفوَّض العمليات ذات الامتيازات (تحديثات مخزن ثقة نظام التشغيل وما شابهها) إلى مساعد واحد مدقَّق بوسائط متحقَّق منها بدلًا من تشغيل الخدمة بصلاحيات الجذر؛ وتطبّق وحدة systemd عزلًا لسطح النواة (حماية متغيرات النواة ووحداتها وسجلاتها، وقفل personality، وتقييد realtime وإنشاء SUID/SGID).
الإبلاغ عن ثغرة أمنية
راسل support@remcam.software مع التفاصيل. نُقرّ باستلام البلاغات فورًا، وتُعلَّم الإصلاحات الحرجة أمنيًا لوحدات التحكم المنشورة عبر قناة التحديثات الموقَّعة مع نافذة تطبيق محددة زمنيًا.