> ## Content Index
> Fetch the complete content index at: https://arabroot.io/llms.txt
> Use this file to discover other available public pages before exploring further.

# تأمين كاميرات المراقبة: عزلها في شبكة VLAN ومنعها من الإنترنت
- URL: https://arabroot.io/articles/تأمين-كاميرات-المراقبة-وعزلها-في-vlan/
- Published: 2026-10-28T11:41:04.000Z
- Updated: 2026-10-28T12:45:29.000Z
- Description: كيف تغلق الأبواب التي يدخل منها المخترق إلى الكاميرات، من كلمة المرور الافتراضية إلى العزل في شبكة منفصلة وتشفير البث.
- Author: فريق عرب رووت
- Tags: الأدلة التقنية, مجالات متخصصة, هوم لاب, الأمن السيبراني

لنفرض أن شركتك الناشئة التي تبيع قطع غيار السيارات انتهت من تركيب ثماني كاميرات في المستودع والمكتب، وجاء الفني بجهاز تسجيل NVR، ووصل كل شيء بال Switch الموجود، ثم فتح منفذاً في ال Router «حتى يشاهد المدير الكاميرات من جواله»، وثبت تطبيق الشركة المصنعة بمسح رمز QR، وترك كلمة مرور الكاميرات كما جاءت من المصنع لأنه «سيغيرها لاحقاً». وبعد أسبوع جرب أحد المطورين في الفريق أداة فحص على شبكة المكتب من حاسوبه، فوجد الكاميرات الثماني ترد عليه، وكل واحدة تفتح خمسة منافذ، ووجد أنه يستطيع أن يشاهد بث الكاميرا الموجهة إلى غرفة الحسابات دون أي كلمة مرور، من نفس الشبكة التي يتصل بها كل زائر يطلب كلمة سر Wi-Fi.

وهذه ليست قصة غريبة، وإنما الشكل الافتراضي لأغلب التركيبات، والسبب أن الكاميرا الشبكية حاسوب صغير بنظام تشغيل وخادم ويب وخدمات بث، يركبها شخص هدفه أن تظهر الصورة على الشاشة، لا أن تكون آمنة. وقد ذكرنا في مقال [أنواع كاميرات المراقبة](https://arabroot.io/articles/%D8%A7%D9%86%D9%88%D8%A7%D8%B9-%D9%83%D8%A7%D9%85%D9%8A%D8%B1%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%B1%D8%A7%D9%82%D8%A8%D8%A9-%D9%88%D9%83%D9%8A%D9%81-%D8%AA%D8%AE%D8%AA%D8%A7%D8%B1-%D8%A8%D9%8A%D9%86%D9%87%D8%A7/#security) لماذا الكاميرا من أخطر الأجهزة في شبكتك، ووعدنا بمقال يفصل الحماية، وهذا هو. وسوف نبني فيه نفس الكاميرا ثلاث مرات على Docker: كما ركبها الفني، ثم بكلمة مرور، ثم بعد التقوية، ونفحص كل مرة بأدوات المخترق نفسه ماذا يرى.

وسوف نناقش في هذا المقال ما يلي:

- الأبواب الستة التي يدخل منها المخترق إلى الكاميرا، مع حادثتين حقيقيتين موثقتين.
- كلمة المرور الافتراضية والحسابات، ومنها الحسابات التي لا تظهر في الصفحة الأولى، والخدمات التي لا تحتاجها، والبرنامج الثابت Firmware وتحديثه.
- تجربة على كاميرا كما ركبت: فحص المنافذ بأداة nmap، ومشاهدة البث دون كلمة مرور، وخروج الكاميرا إلى الإنترنت.
- لماذا لا تكفي كلمة المرور وحدها: نلتقط كلمة مرور الكاميرا من الشبكة بأداة tcpdump.
- عزل الكاميرات في شبكة منفصلة VLAN، ومنعها من الإنترنت، وقواعد الجدار الناري Firewall بين الشبكات.
- تشفير البث RTSPS، والوصول من الخارج عبر VPN بدل فتح المنافذ والسحابة P2P.
- تجربة على الكاميرا بعد التقوية، وقائمة تحقق لكل كاميرا جديدة.

## ستة أبواب إلى الكاميرا

قبل أن نغلق أي شيء، لنعرف ما الذي نغلقه، فأغلب الهجمات الحقيقية على الكاميرات لا تحتاج مهارة خاصة، وإنما تمر من أحد الأبواب التي تبينها الصورة التالية:

![كاميرا Dome في الوسط على شبكة المكتب كما ركبها المورد، وحولها ست بطاقات مرقمة متصلة بها بخطوط متقطعة: 1 كلمة مرور افتراضية أو بلا كلمة مرور وMirai دخل الكاميرات بقائمة من 62 اسماً وكلمة مرور، 2 خدمات لا تحتاجها مثل HTTP وRTMP وHLS وفي التجربة 5 منافذ TCP، 3 برنامج ثابت قديم بثغرات معروفة مثل CVE-2021-36260 بدرجة 9.8، 4 منفذ مفتوح على الإنترنت عبر Port Forward أو UPnP، 5 اتصال دائم بالسحابة P2P يخرج إلى خوادم الشركة، 6 RTSP غير مشفر تمر فيه كلمة المرور بنص واضح](https://arabroot.io/content/images/2026/10/camera-security-01-threats.webp)

كل باب منها مر منه مخترقون حقيقيون، وأغلبها لا يحتاج أي مهارة

1. **كلمة المرور الافتراضية Default Password:** كثير من الكاميرات تأتي باسم مستخدم وكلمة مرور معروفة منشورة في دليلها، أو دون كلمة مرور أصلاً، وأول ما يجربه أي برنامج خبيث هو هذه القائمة.
2. **الخدمات غير الضرورية:** الكاميرا تفتح عادة خادم ويب للإعدادات، وخدمة RTSP، وأحياناً Telnet أو SSH للصيانة، وخدمات بث أخرى، وكل منفذ مفتوح برنامج يستمع للشبكة وقد يكون فيه خطأ.
3. **البرنامج الثابت القديم Firmware:** نظام التشغيل داخل الكاميرا، وكثير من الكاميرات لا يحدثه أحد بعد تركيبها، فتبقى الثغرات المنشورة فيها سنوات.
4. **المنفذ المفتوح على الإنترنت:** عندما يفتح الفني منفذاً في ال Router Port Forwarding، أو تفتحه الكاميرا بنفسها عبر بروتوكول UPnP دون أن تعرف، تصبح الكاميرا في متناول كل ماسح يجوب الإنترنت.
5. **الاتصال السحابي P2P:** الكاميرا تفتح اتصالاً دائماً إلى خوادم الشركة المصنعة حتى يعمل التطبيق، فيصبح أمان بيتك أو مكتبك معلقاً بأمان تلك الخوادم وبأمان حسابك عندها.
6. **RTSP غير المشفر:** حتى مع كلمة مرور قوية، فإن RTSP العادي يرسلها مع كل طلب بطريقة يقرؤها أي جهاز في الطريق، كما سنرى في التجربة.

📌

في أكتوبر 2016 نشرت وكالة الأمن السيبراني الأمريكية CISA [تحذيراً عن البرنامج الخبيث Mirai](https://www.cisa.gov/news-events/alerts/2016/10/14/heightened-ddos-threat-posed-mirai-and-other-botnets?ref=arabroot.io)، وذكرت فيه أنه يمسح الإنترنت بحثاً عن أجهزة إنترنت الأشياء IoT ويدخلها بقائمة من 62 اسم مستخدم وكلمة مرور افتراضية شائعة، وأن الأجهزة المصابة كانت أساساً Router منزلية وكاميرات شبكية ومسجلات DVR، وأنها استخدمت في هجوم حجب خدمة DDoS على موقع الصحفي Brian Krebs تجاوز 620 جيجابت في الثانية. والدرس أن الهجوم لم يحتج أي ثغرة، فكلمة المرور الافتراضية كانت كافية.

📌

في سبتمبر 2021 نشرت قاعدة الثغرات الأمريكية NVD الثغرة [CVE-2021-36260](https://nvd.nist.gov/vuln/detail/CVE-2021-36260?ref=arabroot.io) في خادم الويب في بعض منتجات Hikvision، ووصفتها بأنها حقن أوامر Command Injection بسبب عدم كفاية التحقق من المدخلات، وأعطتها درجة 9.8 من 10، ونشرت الشركة [إشعاراً أمنياً](https://www.hikvision.com/en/support/cybersecurity/security-advisory/security-notification-command-injection-vulnerability-in-some-hikvision-products/?ref=arabroot.io) بالإصدارات المصححة، ثم أضافتها CISA في 10 يناير 2022 إلى [قائمة الثغرات المستغلة فعلاً](https://www.cisa.gov/known-exploited-vulnerabilities-catalog?ref=arabroot.io) مع الإجراء المطلوب: «Apply updates per vendor instructions». والدرس أن الكاميرا التي لا تحدث برنامجها، وخادم الويب فيها في متناول المهاجم، قد تقع حتى مع كلمة مرور قوية.

### لماذا تختلف الكاميرا عن الحاسوب؟

قد يتساءل البعض: الكاميرا جهاز على الشبكة مثل الطابعة والحاسوب، فلماذا نخصها بمقال؟ والإجابة أن الكاميرا تجمع أربع صفات قلما تجتمع في جهاز واحد. فهي تعمل طوال الوقت، أربعاً وعشرين ساعة في اليوم لسنوات، دون أن يعيد أحد تشغيلها أو ينظر في سجلاتها. وهي حاسوب Linux صغير لا تستطيع أن تثبت عليه برنامج حماية Antivirus أو أداة كشف واستجابة EDR كما تفعل مع الحواسيب، لأن مساحته وذاكرته صغيرة ونظامه مغلق. وهي آخر جهاز يفكر فيه فريق التحديثات، لأنها «تعمل» ولا يشتكي منها أحد. وهي أخيراً ترى ما يحدث داخل المكان، فاختراقها ليس خسارة جهاز فقط، وإنما خسارة خصوصية كل من في المكان. لذلك المهاجم الذي دخل شبكتك لا يبحث عن الحاسوب المحمي، وإنما عن هذا الجهاز الذي لا يراقبه أحد.

📌

في مارس 2025 نشرت شركة الاستجابة للحوادث S-RM [تحليلاً لحادثة](https://www.s-rminform.com/latest-thinking/camera-off-akira-deploys-ransomware-via-webcam?ref=arabroot.io) استجابت لها مع مجموعة برنامج الفدية Akira: دخل المهاجمون الشبكة من حل وصول عن بعد مكشوف على الإنترنت، وحاولوا تشغيل برنامج الفدية على سيرفر Windows فاكتشفته أداة EDR وعزلته، فبحثوا في الشبكة عن أجهزة إنترنت الأشياء، ووجدوا كاميرا ويب فيها ثغرات حرجة وتعمل بنظام Linux خفيف ولا توجد عليها أي أداة EDR، فشغلوا منها نسخة Linux من برنامج الفدية، وشفروا الملفات على السيرفرات عبر الشبكة بحركة SMB لم ينتبه إليها أحد لأن الكاميرا لم تكن مراقبة. والدرس الذي تذكره الشركة أن أجهزة إنترنت الأشياء كثيراً ما تفلت من المراجعات الأمنية، ولو كانت الكاميرا في شبكة معزولة لا تصل إلى السيرفرات لما وجد المهاجم هذا الطريق.

## كلمات المرور والحسابات

أول خطوة وأرخصها أن تغير كلمة المرور الافتراضية لكل كاميرا قبل أن توصلها بأي شبكة، وأن تفعل ذلك بطريقة صحيحة، والطريقة البسيطة هي كلمة مرور واحدة قوية لكل الكاميرات، وهي أفضل من الافتراضية بكثير، ولكن عيبها أن تسرب كلمة مرور كاميرا واحدة، أو التقاطها من الشبكة كما سنرى، يفتح كل الكاميرات معاً. والطريقة الأنسب كما يلي:

- **كلمة مرور مختلفة لكل كاميرا:** عشوائية وطويلة، محفوظة في مدير كلمات مرور Password Manager للفريق كما شرحنا في [إدارة كلمات المرور في المؤسسة](https://arabroot.io/articles/%D8%A7%D8%AF%D8%A7%D8%B1%D8%A9-%D9%83%D9%84%D9%85%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%B1%D9%88%D8%B1-%D9%81%D9%8A-%D8%A7%D9%84%D9%85%D8%A4%D8%B3%D8%B3%D8%A9/)، لا في ملف Excel على سطح المكتب.
- **حساب للمسجل بصلاحية المشاهدة فقط:** أغلب الكاميرات تسمح بأكثر من مستخدم بصلاحيات مختلفة، فالمسجل لا يحتاج حساب المدير الذي يغير الإعدادات، وإنما حساباً يقرأ البث فقط، فإذا سرق من المسجل لا يستطيع صاحبه تغيير شيء في الكاميرا.
- **حساب المدير لا يستخدم يومياً:** يستخدم فقط لتغيير الإعدادات وتحديث البرنامج الثابت، ولا يحفظ في المسجل ولا في تطبيق الهاتف.
- **واجهة المسجل نفسها:** حساب شخصي لكل من يشاهد، كما يذكر [توثيق المصادقة في Frigate](https://docs.frigate.video/configuration/authentication?ref=arabroot.io) الذي يدعم مستخدمين بأدوار مختلفة، وليس حساب admin مشتركاً بين الحارس والمدير والفني.

والسؤال الذي يطرحه الناس: ماذا لو نسيت كلمة مرور الكاميرا؟ والإجابة أن أغلب الكاميرات فيها زر إعادة ضبط المصنع Factory Reset، وهذا سبب إضافي لأن تكون الكاميرا الخارجية مركبة في مكان لا تصل إليه اليد بسهولة، لأن من يصل إلى الزر يستطيع أن يعيدها إلى كلمة المرور الافتراضية.

### الحسابات التي لا تراها في الصفحة الأولى

تغيير كلمة مرور المدير في صفحة الإعدادات لا يعني دائماً أنك أغلقت كل طرق الدخول، فكثير من الكاميرات تحتفظ بأكثر من قائمة مستخدمين: قائمة لصفحة الويب، وقائمة لخدمة ONVIF قد تكون منفصلة عنها، وحساب لتطبيق السحابة، وأحياناً حساب صيانة للشركة. والنتيجة الشائعة أن يغير الفني كلمة مرور الويب، ويبقى حساب ONVIF بكلمة المرور الافتراضية، فيستطيع أي برنامج يتكلم ONVIF أن يقرأ إعدادات الكاميرا ويحصل منها على عنوان البث. لذلك بعد أن تغير كلمة المرور، اذهب إلى كل صفحة فيها كلمة «User» أو «Account» في إعدادات الكاميرا، واحذف أو عطل كل حساب لا تعرف لماذا يوجد، وجرب الدخول بالكلمة الافتراضية من كل طريق: الويب، وRTSP، وONVIF من برنامج المسجل نفسه. والقاعدة التي تحكم كل هذا هي نفسها في السيرفرات: الحساب الذي لا تعرفه لا تستطيع أن تحميه، والحساب الذي لا تحتاجه يجب ألا يوجد. وإذا كانت الكاميرا تدعم قفل الحساب بعد عدد من المحاولات الفاشلة، ففعله، لأنه يوقف أدوات التخمين Cracking التي تجرب آلاف كلمات المرور، مع الانتباه إلى أن القفل نفسه قد يستخدمه مهاجم ليقفل حساب المسجل فيتوقف التسجيل، وهذا سبب آخر لأن يكون الوصول إلى الكاميرا من المسجل وحده.

## الخدمات التي لا تحتاجها، والبرنامج الثابت

كل كاميرا تأتي بخدمات أكثر مما يحتاجه أي تركيب، والمبدأ الذي نعمل به في [تقوية السيرفرات Hardening](https://arabroot.io/articles/%D8%AA%D9%82%D9%88%D9%8A%D8%A9-%D8%A7%D9%84%D8%B3%D9%8A%D8%B1%D9%81%D8%B1-hardening-%D9%88%D9%82%D9%8A%D8%A7%D8%B3%D9%87%D8%A7-%D9%85%D8%B9-lynis-%D9%88-cis/) ينطبق هنا تماماً: كل خدمة لا تحتاجها تعطلها، والسبب أن الخدمة المعطلة لا يمكن أن تستغل. وفي صفحة إعدادات الكاميرا ابحث عن هذه الأشياء وعطل ما لا تستخدمه:

- **UPnP:** يسمح للكاميرا أن تطلب من ال Router فتح منفذ على الإنترنت دون أن تعرف، فعطله في الكاميرا وفي ال Router معاً.
- **خدمة السحابة P2P وتطبيق الشركة:** إذا كنت تسجل محلياً وتصل من الخارج عبر VPN، فلا تحتاجها.
- **Telnet وSSH وواجهات الصيانة:** إذا وجدتها مفعلة فعطلها.
- **HTTP غير المشفر:** إذا كانت الكاميرا تدعم HTTPS لصفحة الإعدادات ففعله وعطل HTTP، أو اجعل الصفحة لا يصل إليها إلا جهاز الإدارة كما سيأتي في العزل.
- **بروتوكولات البث التي لا يستخدمها المسجل:** إذا كان المسجل يقرأ RTSP فقط، فلا حاجة لخدمات بث أخرى مثل RTMP أو HLS إن وجدت.
- **الاكتشاف التلقائي:** اكتشاف ONVIF مفيد عند الإعداد الأول، ويمكن تعطيله بعد إضافة الكاميرات إذا كانت الكاميرا تسمح بذلك.

أما البرنامج الثابت Firmware فهو مثل نظام تشغيل السيرفر تماماً: يحتاج تحديثاً منتظماً من موقع الشركة الرسمي، وسجلاً يقول أي إصدار على كل كاميرا ومتى حدث، واشتراكاً في صفحة الإشعارات الأمنية للشركة. وقبل الشراء اسأل عن سياسة الشركة في التحديثات: كم سنة تصدر تحديثات أمنية لهذا الطراز؟ وهل تنشر إشعاراتها الأمنية؟ فالكاميرا الرخيصة التي لا تحدث أبداً ليست رخيصة إذا حسبت ثمن عزلها ومراقبتها.

## تجربة: نفس الكاميرا ثلاث مرات

الآن نرى كل ما سبق بأعيننا، دون أن نخترق كاميرا أحد. والفكرة أن نشغل خادم البث المفتوح المصدر [MediaMTX](https://github.com/bluenviron/mediamtx?ref=arabroot.io) ليلعب دور الكاميرا، فهو مثل كاميرا حقيقية يفتح عدة خدمات بث، ويقبل في إعداده الافتراضي أي مستخدم دون كلمة مرور، ويرسل نفس الفيديو الذي سجلته كاميرا مراقبة حقيقية لموقف سيارات، وهو ملف ضغطناه مقدماً بدقة 1080p ومعدل 4 ميجابت. ثم نشغل بجانبه حاسوباً على شبكة المكتب، ومسجلاً، وكلها Containers على شبكات Docker تمثل شبكات المكتب.

### أدوات التجربة

نحتاج أدوات المخترق نفسها: `nmap` لفحص المنافذ، و`tcpdump` لالتقاط حركة الشبكة، و`openssl` للشهادات، مع ffprobe الذي يتكلم RTSP، لذلك نبني Image صغيرة من نفس Image الكاميرا الوهمية ونضيف إليها هذه الأدوات، في ملف `Dockerfile.tools`:

```dockerfile
# A small toolbox for the lab: the same ffmpeg/ffprobe as the fake camera, plus nmap, tcpdump, openssl and curl.
FROM bluenviron/mediamtx:1.21.1-ffmpeg
RUN apk add --no-cache nmap nmap-scripts tcpdump openssl curl
ENTRYPOINT []
```

```bash
docker build -q -t scv-tools:1 -f Dockerfile.tools .
docker run --rm scv-tools:1 sh -c 'nmap --version | head -1; tcpdump --version 2>&1 | head -1; openssl version; cat /etc/alpine-release'
```

والمخرج سوف يكون كما يلي:

```text
sha256:63b78bb1d74bbaf842e85ff35b8bc198e66c21088bec3235987cf16b22aa5fc4
Nmap version 7.99 ( https://nmap.org )
tcpdump version 4.99.6
OpenSSL 3.5.9 29 Sep 2026 (Library: OpenSSL 3.5.9 29 Sep 2026)
3.24.2
```

### المرة الأولى: الكاميرا كما ركبها الفني

الكاميرا الأولى بالإعداد الافتراضي تماماً، وملفها `cam-default.yml` لا يحدد إلا مصدر الفيديو:

```yaml
# Camera A, "as installed": every service on, and the default rule of MediaMTX lets anyone read or publish.
paths:
  main:
    runOnInit: ffmpeg -re -stream_loop -1 -i /samples/cam-main-h264.mp4 -c copy -f rtsp rtsp://localhost:8554/main
    runOnInitRestart: yes
```

ونضعها على شبكة واحدة مسطحة Flat Network تمثل شبكة المكتب، كما يفعل أغلب الفنيين، حيث الكاميرات والحواسيب والهواتف وشبكة الضيوف في مكان واحد:

```bash
docker network create --subnet 10.10.0.0/24 scv-lan
docker run -d --name scv-cam-a --network scv-lan --ip 10.10.0.21 \
  -v "$PWD/cam-default.yml:/mediamtx.yml:ro" -v "$PWD/media:/samples:ro" \
  bluenviron/mediamtx:1.21.1-ffmpeg
```

ثم نفعل من «حاسوب» على نفس الشبكة ما يفعله أي فضولي أو مخترق دخل شبكة المكتب: نفحص المنافذ المفتوحة في الكاميرا، ثم نحاول مشاهدة البث، ثم نسأل هل تستطيع الكاميرا الخروج إلى الإنترنت:

```bash
docker run --rm --name scv-laptop --network scv-lan scv-tools:1 nmap -sT -p 1-10000 --open -n 10.10.0.21
docker run --rm --name scv-laptop --network scv-lan --cap-add NET_RAW --cap-add NET_ADMIN scv-tools:1 \
  nmap -sU -p 8000,8001,8890 -n 10.10.0.21
docker run --rm --name scv-laptop --network scv-lan scv-tools:1 ffprobe -v error -rtsp_transport tcp \
  -show_entries stream=codec_name,width,height -of csv=p=0 rtsp://10.10.0.21:8554/main
docker run --rm --name scv-laptop --network scv-lan scv-tools:1 sh -c \
  'curl -s -L -c /tmp/c -b /tmp/c http://10.10.0.21:8888/main/index.m3u8 | head -6'
docker exec scv-cam-a sh -c 'wget -q -T 5 -O /dev/null https://example.com && echo "camera -> https://example.com: reachable" || echo "camera -> internet: blocked"'
```

والمخرج سوف يكون كما يلي:

```text
Nmap scan report for 10.10.0.21
Host is up (0.00028s latency).
Not shown: 9995 closed tcp ports (conn-refused)
PORT     STATE SERVICE
1935/tcp open  rtmp
8554/tcp open  rtsp-alt
8888/tcp open  sun-answerbook
8889/tcp open  ddi-tcp-2
8892/tcp open  seosload
MAC Address: FE:DE:E5:8C:FD:29 (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 1.11 seconds
8000/udp open|filtered irdmi
8001/udp open|filtered vcom-tunnel
8890/udp open|filtered ddi-udp-3
h264,1920,1080
#EXTM3U
#EXT-X-VERSION:10
#EXT-X-INDEPENDENT-SEGMENTS

#EXT-X-STREAM-INF:BANDWIDTH=4678148,AVERAGE-BANDWIDTH=3798657,CODECS="avc1.4d4028",RESOLUTION=1920x1080,FRAME-RATE=15.000
video1_stream.m3u8?session=3308e0ce-20cb-4468-a71f-cf4fc263cec2
camera -> https://example.com: reachable
```

في المخرج أعلاه لاحظ التالي:

- الكاميرا تفتح خمسة منافذ TCP في أول عشرة آلاف منفذ: 1935 لبروتوكول RTMP، و8554 ل RTSP، و8888 لبث HLS عبر HTTP، و8889 ل WebRTC، و8892 لخدمة MoQ الأحدث، ومنافذ UDP لنقل RTP وSRT. والاسم الذي يكتبه nmap في عمود SERVICE مثل `sun-answerbook` ليس الخدمة الحقيقية، وإنما الاسم المسجل لرقم المنفذ في قائمته، لأننا لم نطلب منه اكتشاف الخدمة، وهذه ملاحظة مهمة عند قراءة أي فحص. وكما يشرح [توثيق nmap](https://nmap.org/book/man-port-scanning-techniques.html?ref=arabroot.io)، الحالة `open|filtered` في UDP تعني أن nmap لم يستطع التمييز بين منفذ مفتوح لا يرد ومنفذ يحجبه جدار ناري.
- الحاسوب شاهد البث بدقة 1920×1080 دون أي كلمة مرور، وهذا ما يحدث في الكاميرات التي تأتي دون كلمة مرور، أو بكلمة مرور افتراضية يعرفها الجميع.
- خدمة HLS أعطت نفس الفيديو عبر HTTP عادي لكل من يطلبه، أي أن تغيير كلمة مرور RTSP وحده لا يكفي إذا بقيت خدمة أخرى مفتوحة، وهذا معنى «كل خدمة باب».
- الكاميرا تستطيع الوصول إلى الإنترنت، أي أنها تستطيع أن ترسل بثها أو بياناتها إلى أي خادم، أو أن تكون جزءاً من شبكة مثل Mirai إذا اخترقت، أو أن يتحكم فيها مهاجم من الخارج عبر اتصال تفتحه هي.

### المرة الثانية: كلمة مرور، ولكن RTSP عادي

الخطوة التي يقف عندها أغلب الناس أن يضيفوا كلمة مرور للمشاهدة، فنفعل ذلك في الكاميرا الثانية بملف `cam-password.yml`، مستخدمين [المصادقة الداخلية في MediaMTX](https://mediamtx.org/docs/features/authentication?ref=arabroot.io)، حيث يسمح للنشر من داخل الكاميرا نفسها فقط، والمشاهدة بالمستخدم `viewer` وكلمة مروره:

```yaml
# Camera B: a password for viewers, but still plain RTSP (and the other services still on).
authInternalUsers:
  - user: any
    ips: ["127.0.0.1", "::1"]
    permissions: [{action: publish}]
  - user: viewer
    pass: Warehouse-Cam-2026
    permissions: [{action: read}]
paths:
  main:
    runOnInit: ffmpeg -re -stream_loop -1 -i /samples/cam-main-h264.mp4 -c copy -f rtsp rtsp://localhost:8554/main
    runOnInitRestart: yes
```

ولاحظ السطر `ips`، ففي محاولتنا الأولى كتبنا `127.0.0.1` وحده، فرفضت الكاميرا نشر الفيديو من داخلها بالرد `401 Unauthorized`، لأن ffmpeg اتصل بها عبر عنوان IPv6 المحلي `::1`، فأضفناه. ثم نشغل الكاميرا، ونجرب المشاهدة دون كلمة مرور، ثم نجعل «المسجل» يدخل بكلمة المرور بينما أداة tcpdump تلتقط حركة الشبكة على واجهته، بالسكربت `sniff.sh`:

```bash
# On the recorder's own network interface: capture the RTSP conversation while the recorder logs in
# to the camera, then print the lines of the capture that carry the login.
URL=$1
tcpdump -i any -A -s 0 -w /tmp/rtsp.pcap "tcp port 8554 or tcp port 8322" 2>/dev/null &
sleep 2
ffprobe -v error -rtsp_transport tcp -show_entries stream=codec_name -of csv=p=0 "$URL"
sleep 1; kill %1; sleep 1
echo "### captured packets: $(tcpdump -r /tmp/rtsp.pcap 2>/dev/null | wc -l)"
tcpdump -r /tmp/rtsp.pcap -A 2>/dev/null | grep -aE "^(DESCRIBE|RTSP/1.0 [0-9]+|Authorization|WWW-Authenticate)" | head -6
```

```bash
docker run -d --name scv-cam-b --network scv-lan --ip 10.10.0.22 \
  -v "$PWD/cam-password.yml:/mediamtx.yml:ro" -v "$PWD/media:/samples:ro" bluenviron/mediamtx:1.21.1-ffmpeg
docker run --rm --name scv-nvr2 --network scv-lan scv-tools:1 ffprobe -v error -rtsp_transport tcp rtsp://10.10.0.22:8554/main
docker run --rm --name scv-nvr2 --network scv-lan --cap-add NET_RAW --cap-add NET_ADMIN -v "$PWD:/lab" scv-tools:1 \
  sh /lab/sniff.sh rtsp://viewer:Warehouse-Cam-2026@10.10.0.22:8554/main
echo dmlld2VyOldhcmVob3VzZS1DYW0tMjAyNg== | base64 -d
```

والمخرج سوف يكون كما يلي:

```text
[rtsp @ 0x7fef4237c380] method DESCRIBE failed: 401 (Unauthorized)
rtsp://10.10.0.22:8554/main: Server returned 401 Unauthorized (authorization failed)
h264
### captured packets: 1739
WWW-Authenticate: Basic realm="ipcam"
Authorization: Basic dmlld2VyOldhcmVob3VzZS1DYW0tMjAyNg==
Authorization: Basic dmlld2VyOldhcmVob3VzZS1DYW0tMjAyNg==
Authorization: Basic dmlld2VyOldhcmVob3VzZS1DYW0tMjAyNg==
Authorization: Basic dmlld2VyOldhcmVob3VzZS1DYW0tMjAyNg==
viewer:Warehouse-Cam-2026
```

في المخرج أعلاه لاحظ التالي:

- دون كلمة المرور رفضت الكاميرا الطلب `DESCRIBE` بالرد `401 Unauthorized`، وهذا تحسن حقيقي عن المرة الأولى.
- عندما دخل المسجل بكلمة المرور، ردت الكاميرا أولاً بالسطر `WWW-Authenticate: Basic`، أي أنها تطلب المصادقة الأساسية Basic Authentication، وهي الطريقة المعرفة في [RFC 7617](https://datatracker.ietf.org/doc/html/rfc7617?ref=arabroot.io)، وفيها يرسل العميل اسم المستخدم وكلمة المرور مرمزين بترميز Base64 فقط، والترميز ليس تشفيراً.
- السطر `Authorization` تكرر مع كل طلب في الجلسة، وأمر `base64 -d` البسيط أعاد كلمة المرور كما هي: `viewer:Warehouse-Cam-2026`. أي أن أي جهاز في الطريق بين المسجل والكاميرا، مثل Switch مخترق أو منفذ مراقبة Port Mirror أو جهاز في نفس شبكة Wi-Fi غير محمية، يستطيع أن يقرأ كلمة المرور.
- بعض الكاميرات تستخدم المصادقة Digest التي لا ترسل كلمة المرور نفسها وإنما هاشاً منها، وهي أفضل من Basic، ولكنها تبقى معرضة لتخمين Cracking كلمة المرور الضعيفة بعد التقاط الهاش، والفيديو نفسه يبقى غير مشفر في الحالتين.

والتقطنا هنا على واجهة المسجل نفسه، لأن شبكات Docker لا تسمح لحاوية بأن ترى حركة حاوية أخرى، وهذا بالضبط ما يراه أي جهاز يمر عليه الاتصال في شبكة حقيقية.

## العزل: شبكة خاصة بالكاميرات VLAN

كل ما رأيناه حتى الآن ممكن لأن الكاميرا والحاسوب الفضولي في شبكة واحدة، والحل الأقوى ليس في الكاميرا وإنما في الشبكة: أن تضع الكاميرات في شبكة منفصلة لا يصل إليها إلا المسجل، ولا تخرج منها إلى أي مكان. وهذا ما يسمى تقسيم الشبكة Network Segmentation، وأداته في الشبكات المحلية الشبكة الافتراضية VLAN، وقد شرحناه بالتفصيل وجربناه في [تقسيم الشبكة Network Segmentation](https://arabroot.io/articles/%D8%AA%D9%82%D8%B3%D9%8A%D9%85-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D8%A9-network-segmentation-vlan-%D9%88-vpc/)، وهنا نطبقه على الكاميرات. وتحتاج لذلك Switch مداراً Managed أو ذكياً Smart يدعم VLAN، مثل ال Switch الصغير التالي بثمانية منافذ PoE:

![Switch صغير من Cisco بغطاء رمادي ومقدمة سوداء على مكتب خشبي، مكتوب عليه Cisco Small Business SG 200-08P Gigabit PoE Smart Switch، ومصابيح لثمانية منافذ مرقمة ومصباح System، وبجانبه سلك هاتف ملفوف](https://arabroot.io/content/images/2026/10/camera-security-02-poe-switch.webp)

Switch ذكي بثمانية منافذ PoE يدعم VLAN، يكفي لتغذية الكاميرات وعزلها معاً. الصورة: Антон Пищулин، بترخيص CC BY-SA 4.0، المصدر: [Wikimedia Commons](https://commons.wikimedia.org/wiki/File:Cisco%5FSG%5F200-08P%5Ffront.jpg?ref=arabroot.io) (تم تصغيرها وتحويلها إلى WebP).

والتصميم الذي ننصح به ثلاث شبكات على الأقل، والصورة التالية تبينها مع قواعد الجدار الناري بينها:

![ثلاث مناطق: شبكة الكاميرات VLAN 30 بعنوان 10.30.0.0/24 لا إنترنت ولا وصول إلى المكتب ولا يصلها إلا المسجل وفيها ثلاث كاميرات، وشبكة السيرفرات VLAN 20 بعنوان 10.20.0.0/24 فيها المسجل Frigate أو NVR يصل إلى الكاميرات على 8322 أو 554 ويخرج للتحديثات فقط، وشبكة المكتب VLAN 10 بعنوان 10.10.0.0/24 فيها الحواسيب والهواتف تصل إلى واجهة المسجل 443 ولا ترى أي كاميرا. وتحتها جدول قواعد الجدار الناري بالترتيب: 1 من المسجل إلى الكاميرات TCP 8322 و554 سماح، 2 من المكتب إلى المسجل TCP 443 سماح، 3 من الكاميرات إلى أي مكان منع وتسجيل، 4 من المكتب إلى الكاميرات منع، 5 من الإنترنت إلى أي شبكة داخلية منع والوصول عبر VPN](https://arabroot.io/content/images/2026/10/camera-security-03-network.webp)

الكاميرات لا ترى إلا المسجل، والناس لا يرون إلا المسجل

في التصميم أعلاه لاحظ التالي:

- المسجل هو الجهاز الوحيد الذي يعبر بين الشبكات، فهو الذي يطلب الفيديو من الكاميرات، وهو الذي يعرضه للناس، لذلك يصبح أهم جهاز في التصميم، ويستحق كل ما شرحناه في [تقوية السيرفر](https://arabroot.io/articles/%D8%AA%D9%82%D9%88%D9%8A%D8%A9-%D8%A7%D9%84%D8%B3%D9%8A%D8%B1%D9%81%D8%B1-hardening-%D9%88%D9%82%D9%8A%D8%A7%D8%B3%D9%87%D8%A7-%D9%85%D8%B9-lynis-%D9%88-cis/).
- القاعدة الثالثة تمنع الكاميرات من الخروج إلى أي مكان، وتسجل المحاولات، وهذا السجل مفيد جداً: فإذا رأيت كاميرا تحاول الاتصال بعنوان على الإنترنت كل دقيقة، فإما أن خدمة السحابة ما زالت مفعلة فيها، أو أنها اخترقت.
- الكاميرات تحتاج غالباً إلى الوقت الصحيح حتى تكون الطوابع الزمنية في التسجيلات صحيحة، فبدل أن تسمح لها بالخروج إلى خوادم NTP على الإنترنت، اجعل المسجل أو ال Router خادم NTP داخلياً لها، واسمح بهذا المنفذ وحده.
- ترتيب القواعد مهم، فالجدار الناري يطبق أول قاعدة تطابق الحزمة، والقاعدة الأخيرة في أي تصميم صحيح هي المنع الافتراضي، وقد شرحنا ترتيب القواعد وتتبع الحزمة في [جدار الحماية في MikroTik RouterOS](https://arabroot.io/articles/%D8%AC%D8%AF%D8%A7%D8%B1-%D8%A7%D9%84%D8%AD%D9%85%D8%A7%D9%8A%D8%A9-%D9%81%D9%8A-mikrotik-routeros-%D8%A8%D8%A7%D9%84%D8%AA%D9%81%D8%B5%D9%8A%D9%84/#rule-order).
- الكاميرات اللاسلكية تحتاج نفس العزل، باسم شبكة SSID خاص بها مرتبط ب VLAN الكاميرات، لا على شبكة الموظفين أو الضيوف، وقد شرحنا فصل الشبكات اللاسلكية في [أمن الشبكات اللاسلكية](https://arabroot.io/articles/%D8%A7%D9%85%D9%86-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D8%A7%D8%AA-%D8%A7%D9%84%D9%84%D8%A7%D8%B3%D9%84%D9%83%D9%8A%D8%A9-wpa3-%D9%88%D9%81%D8%B5%D9%84-%D8%B4%D8%A8%D9%83%D8%A9-%D8%A7%D9%84%D8%B6%D9%8A%D9%88%D9%81-%D9%88%D8%A7%D9%8A%D9%82%D8%A7%D9%81-wps/).

وقد يتساءل البعض: إذا عزلت الكاميرات، فكيف يعمل اكتشاف ONVIF؟ والإجابة أن الاكتشاف يعمل داخل شبكة الكاميرات فقط، لأنه يعتمد على رسائل Multicast لا تعبر بين الشبكات، فتضيف الكاميرات إلى المسجل بعناوينها يدوياً مرة واحدة، أو تفعل الاكتشاف مؤقتاً من جهاز داخل تلك الشبكة. وهذا ثمن صغير مقابل أن تصبح الكاميرا غير مرئية لكل من في المكتب.

### الأمن المادي ومنافذ ال Switch

العزل في VLAN يفترض أن كل منفذ في ال Switch مخصص لما وضع له، ولكن تذكر أين تقع هذه المنافذ في الواقع: الكاميرا الخارجية في موقف السيارات مربوطة بكابل يصل إلى منفذ في VLAN الكاميرات، ومن يفك الكاميرا من مكانها ويصل حاسوبه بالكابل نفسه يصبح داخل شبكة الكاميرات مباشرة، ويرى كل الكاميرات الأخرى ويلتقط حركتها، وقد يحصل على الكهرباء من PoE أيضاً. لذلك أضف إلى العزل ثلاث خطوات من إعدادات ال Switch نفسه:

- **أمن المنافذ Port Security:** اربط كل منفذ بعنوان MAC الخاص بالكاميرا التي عليه، فإذا وصل جهاز آخر أغلق ال Switch المنفذ وسجل الحدث، وهذا لا يمنع مخترقاً محترفاً ينسخ عنوان MAC، ولكنه يمنع أغلب المحاولات ويعطيك تنبيهاً.
- **المصادقة على المنفذ 802.1X:** إذا كانت الكاميرات تدعمها، فلا يفتح المنفذ إلا لجهاز يثبت هويته بشهادة، وهي الأقوى ولكنها تحتاج بنية مصادقة وكاميرات تدعمها.
- **المنافذ غير المستخدمة:** عطلها، أو ضعها في VLAN فارغة لا تصل إلى أي شيء، حتى لا يجد من يصل كابلاً في مكتب فارغ نفسه داخل أي شبكة.

ومع ذلك تذكر أن المسجل وال Switch نفسيهما يجب أن يكونا في غرفة أو خزانة مغلقة، فمن يصل إليهما يستطيع أن يفصل التسجيل كله، أو يأخذ القرص بما عليه.

### وفي البيت دون Switch مدار؟

ليس كل من يقرأ هذا المقال لديه Switch يدعم VLAN وجدار ناري بين الشبكات، فكثير من البيوت فيها Router واحد من مزود الإنترنت، ومع ذلك تستطيع أن تقترب من التصميم السابق بخطوات تدريجية. وأبسطها أن تضع الكاميرات اللاسلكية على شبكة الضيوف أو شبكة إنترنت الأشياء IoT إن كان ال Router يوفرها، لأن أغلب هذه الشبكات تمنع أجهزتها من الوصول إلى أجهزة الشبكة الرئيسية، ولكن انتبه إلى أنها لا تمنعها من الإنترنت، وأن المسجل على الشبكة الرئيسية قد لا يستطيع الوصول إليها، فجرب ذلك بنفسك قبل أن تعتمد عليه. والخطوة التالية Router يسمح بقواعد جدار ناري بين الشبكات، مثل الأجهزة التي تعمل بنظام OpenWrt أو MikroTik، والخطوة الكاملة جدار ناري مستقل مثل OPNsense مع Switch مدار، وقد بنينا هذا التصميم كاملاً بمناطقه وقواعده في [الهوم لاب بمواصفات الإنتاج](https://arabroot.io/articles/%D8%A7%D9%84%D9%87%D9%88%D9%85-%D9%84%D8%A7%D8%A8-%D8%A8%D9%85%D9%88%D8%A7%D8%B5%D9%81%D8%A7%D8%AA-%D8%A7%D9%84%D8%A5%D9%86%D8%AA%D8%A7%D8%AC-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D8%A9-%D9%88%D8%A7%D9%84%D8%AC%D8%AF%D8%A7%D8%B1-%D8%A7%D9%84%D9%86%D8%A7%D8%B1%D9%8A/#zone-matrix). وفي كل الحالات القاعدة نفسها: الكاميرا لا تصل إلى حواسيب العائلة، ولا إلى الإنترنت إن أمكن، ولا يصل إليها إلا ما يحتاجها.

### الكاميرات اللاسلكية وكاميرات البطارية

الكاميرا اللاسلكية لا تركب في منفذ Switch تحدد له VLAN، وإنما تتصل بشبكة Wi-Fi، لذلك العزل هنا يكون باسم شبكة SSID خاص بالكاميرات، مرتبط في نقطة الوصول ب VLAN الكاميرات، بكلمة مرور مختلفة عن شبكة الموظفين، وبتشفير WPA2 أو WPA3 لا بشبكة مفتوحة، وقد شرحنا الفروق بينها وكيف تفصل الشبكات اللاسلكية في [أمن الشبكات اللاسلكية](https://arabroot.io/articles/%D8%A7%D9%85%D9%86-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D8%A7%D8%AA-%D8%A7%D9%84%D9%84%D8%A7%D8%B3%D9%84%D9%83%D9%8A%D8%A9-wpa3-%D9%88%D9%81%D8%B5%D9%84-%D8%B4%D8%A8%D9%83%D8%A9-%D8%A7%D9%84%D8%B6%D9%8A%D9%88%D9%81-%D9%88%D8%A7%D9%8A%D9%82%D8%A7%D9%81-wps/). ولاحظ أن خاصية WPS التي تسمح بإضافة جهاز بضغطة زر يجب أن تكون معطلة، لأنها طريق معروف إلى كلمة مرور الشبكة. أما كاميرات البطارية فأغلبها مصمم للعمل عبر سحابة الشركة فقط، كما ذكرنا في [مقال أنواع الكاميرات](https://arabroot.io/articles/%D8%A7%D9%86%D9%88%D8%A7%D8%B9-%D9%83%D8%A7%D9%85%D9%8A%D8%B1%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%B1%D8%A7%D9%82%D8%A8%D8%A9-%D9%88%D9%83%D9%8A%D9%81-%D8%AA%D8%AE%D8%AA%D8%A7%D8%B1-%D8%A8%D9%8A%D9%86%D9%87%D8%A7/#battery)، فلا تستطيع منعها من الإنترنت دون أن تتوقف، وهذا يعني أن أمانها كله في يد الشركة وحسابك عندها، فإذا اضطررت إليها فاجعل كلمة مرور الحساب فريدة وفعل التحقق بخطوتين، ولا تضعها في مكان يرى ما لا تريد أن يخرج من البيت.

## تشفير البث RTSPS

العزل يمنع الناس من الوصول إلى الكاميرات، ولكن الاتصال بين المسجل والكاميرات يبقى غير مشفر داخل شبكة الكاميرات نفسها، فإذا وصل أحد إلى تلك الشبكة، بكاميرا مخترقة مثلاً، أو بمنفذ شبكة في ممر لا يراقبه أحد، استطاع أن يلتقط كما فعلنا. والحل أن يمر RTSP داخل TLS، وهذا ما يسمى RTSPS، ومنفذه المعتاد 322، وفي MediaMTX المنفذ 8322 كما في [صفحة خصائص RTSP](https://mediamtx.org/docs/features/rtsp-specific-features?ref=arabroot.io). ولكن كن واقعياً هنا: كثير من الكاميرات لا تدعم RTSPS أصلاً، أو تدعمه بشهادة لا تستطيع تغييرها، لذلك العزل هو الحماية الأولى التي لا تعتمد على الكاميرا، والتشفير طبقة إضافية حيث يتوفر.

والطريقة الأخرى للتشفير أن يكون المسجل نفسه هو الذي يعيد بث الكاميرات للناس عبر اتصال مشفر، فلا يتصل أي إنسان بالكاميرا مباشرة أبداً، وهذا ما يفعله Frigate عبر خدمة go2rtc المدمجة فيه، و[توثيق إعادة البث](https://docs.frigate.video/configuration/restream?ref=arabroot.io) يشرحها، مع التنبيه الذي ذكرناه في [أخطاء الأمان الشائعة في Frigate](https://arabroot.io/articles/frigate-%D8%AA%D8%B3%D8%AC%D9%8A%D9%84-%D9%83%D8%A7%D9%85%D9%8A%D8%B1%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%B1%D8%A7%D9%82%D8%A8%D8%A9-%D8%B9%D9%84%D9%89-%D8%B3%D9%8A%D8%B1%D9%81%D8%B1%D9%83/#security) بأن بثوث RTSP المعادة دون مصادقة افتراضياً.

### المرة الثالثة: الكاميرا بعد التقوية

الكاميرا الثالثة تجمع كل ما سبق: خدمة واحدة فقط هي RTSPS، وكل الخدمات الأخرى معطلة، ولا مشاهدة لأي مستخدم مجهول، وحساب للمسجل وحده، وكلها في شبكة معزولة. وملفها `cam-hardened.yml`:

```yaml
# Camera C, hardened: only RTSP over TLS (RTSPS on 8322), every other service off,
# a password for the recorder only, and no anonymous access at all.
rtmp: false
hls: false
webrtc: false
srt: false
moq: false
rtspEncryption: "strict"
rtspTransports: [tcp]
rtspServerKey: /certs/server.key
rtspServerCert: /certs/server.crt
authInternalUsers:
  - user: any
    ips: ["127.0.0.1", "::1"]
    permissions: [{action: publish}]
  - user: nvr
    pass: Nvr-Only-7f3c9a1e2b
    permissions: [{action: read}]
paths:
  main:
    runOnInit: ffmpeg -re -stream_loop -1 -i /samples/cam-main-h264.mp4 -c copy -f rtsp rtsps://localhost:8322/main
    runOnInitRestart: yes
```

في الإعداد أعلاه لاحظ أن `rtspEncryption: "strict"` يغلق RTSP العادي تماماً ولا يقبل إلا RTSPS، وأن كل خدمة لم نستخدمها معطلة باسمها، ومنها `moq` التي لم تكن في قائمتنا الأولى حتى رأيناها في الفحص على المنفذ 8892، وهذه فائدة الفحص قبل التقوية وبعدها: تكتشف خدمات لم تكن تعرف أنها موجودة. والآن ننشئ شهادة موقعة ذاتياً Self-signed للكاميرا، ثم شبكة الكاميرات بالخيار `--internal` الذي يمنعها من الخروج إلى أي مكان كما يشرح [توثيق docker network create](https://docs.docker.com/reference/cli/docker/network/create/?ref=arabroot.io)، ثم نضع المسجل على الشبكتين:

```bash
mkdir -p work/certs
docker run --rm -v "$PWD/work/certs:/certs" scv-tools:1 sh -c 'openssl req -x509 -newkey ec \
  -pkeyopt ec_paramgen_curve:prime256v1 -nodes -days 365 -subj "/CN=cam-c.cameras.lan" \
  -keyout /certs/server.key -out /certs/server.crt 2>/dev/null
  openssl x509 -in /certs/server.crt -noout -subject -fingerprint -sha256; chmod 644 /certs/*'
docker network create --internal --subnet 10.30.0.0/24 scv-camnet
docker run -d --name scv-cam-c --network scv-camnet --ip 10.30.0.21 -v "$PWD/cam-hardened.yml:/mediamtx.yml:ro" \
  -v "$PWD/work/certs:/certs:ro" -v "$PWD/media:/samples:ro" bluenviron/mediamtx:1.21.1-ffmpeg
docker run -d --name scv-nvr --network scv-lan --ip 10.10.0.5 --cap-add NET_RAW --cap-add NET_ADMIN \
  -v "$PWD:/lab" scv-tools:1 sleep infinity
docker network connect --ip 10.30.0.5 scv-camnet scv-nvr
```

```text
subject=CN=cam-c.cameras.lan
sha256 Fingerprint=8F:88:95:F4:FF:BC:5D:45:C0:D4:C4:42:8C:2A:AE:F0:8B:E6:E0:75:34:F4:82:2B:6C:F3:A5:7B:68:25:C0:09
```

ثم نعيد نفس الاختبارات من الجهات الثلاث: الحاسوب في المكتب، والكاميرا نفسها، والمسجل:

```bash
# 1. from a laptop on the office network to the camera
docker run --rm --name scv-laptop --network scv-lan scv-tools:1 sh -c 'nmap -sT -Pn -p 8322,8554 -n --host-timeout 15s 10.30.0.21 \
  | grep -E "^[0-9]+/tcp|filtered|down|Nmap done"; ffprobe -v error -rw_timeout 5000000 rtsps://10.30.0.21:8322/main 2>&1 | tail -1'
# 2. from the camera to the internet
docker exec scv-cam-c sh -c 'wget -q -T 5 -O /dev/null https://example.com && echo "camera -> internet: reachable" || echo "camera -> internet: blocked"'
# 3. the recorder scans the camera
docker exec scv-nvr sh -c 'nmap -sT -p 1-10000 --open -n 10.30.0.21 | grep -E "^[0-9]+/tcp|Not shown"'
# 4. plain RTSP
docker exec scv-nvr sh -c 'ffprobe -v error -rtsp_transport tcp rtsp://nvr:Nvr-Only-7f3c9a1e2b@10.30.0.21:8554/main 2>&1 | tail -1'
# 5. the recorder logs in over RTSPS while tcpdump listens
docker exec scv-nvr sh /lab/sniff.sh rtsps://nvr:Nvr-Only-7f3c9a1e2b@10.30.0.21:8322/main
docker exec scv-nvr sh -c 'echo "lines in the capture that contain the password or an Authorization header: $(tcpdump -r /tmp/rtsp.pcap -A 2>/dev/null | grep -ac "Nvr-Only\|Authorization")"'
# 6. which certificate does the camera present?
docker exec scv-nvr sh -c 'echo | openssl s_client -connect 10.30.0.21:8322 2>/dev/null | openssl x509 -noout -subject -fingerprint -sha256'
```

والمخرج سوف يكون كما يلي:

```text
### 1. from a laptop on the office network to the camera
8322/tcp filtered garmin-marine
8554/tcp filtered rtsp-alt
Nmap done: 1 IP address (1 host up) scanned in 3.11 seconds
rtsps://10.30.0.21:8322/main: Operation timed out
### 2. from the camera to the internet
wget: bad address 'example.com'
camera -> internet: blocked
### 3. the recorder scans the camera
Not shown: 9999 closed tcp ports (conn-refused)
8322/tcp open  garmin-marine
### 4. plain RTSP is gone
rtsp://nvr:Nvr-Only-7f3c9a1e2b@10.30.0.21:8554/main: Connection refused
### 5. the recorder logs in over RTSPS while tcpdump listens
h264
### captured packets: 1106
lines in the capture that contain the password or an Authorization header: 0
### 6. which certificate does the camera present?
subject=CN=cam-c.cameras.lan
sha256 Fingerprint=8F:88:95:F4:FF:BC:5D:45:C0:D4:C4:42:8C:2A:AE:F0:8B:E6:E0:75:34:F4:82:2B:6C:F3:A5:7B:68:25:C0:09
```

في المخرج أعلاه لاحظ التالي:

- الحاسوب في شبكة المكتب لم يعد يرى الكاميرا أصلاً، فالمنافذ `filtered` أي لا يأتي أي رد، وffprobe انتهت مهلته، والسبب أن شبكة الكاميرات لا يصل إليها مسار من شبكة المكتب. ولاحظ أن nmap كتب «1 host up» لأننا طلبنا منه بالخيار `-Pn` أن يفترض ذلك دون فحص.
- الكاميرا لم تستطع حتى أن تعرف عنوان `example.com`، فالشبكة الداخلية لا تخرج إلى الإنترنت ولا إلى خوادم DNS خارجها، وهذا ما تفعله القاعدة الثالثة في الجدار الناري في الشبكة الحقيقية.
- المسجل يرى منفذاً واحداً فقط هو 8322، بدل خمسة منافذ TCP في المرة الأولى، وRTSP العادي على 8554 يرفض الاتصال.
- المسجل استلم الفيديو `h264` عبر RTSPS، والتقطت tcpdump أثناء ذلك 1106 حزمة، ولم يظهر في أي منها اسم المستخدم ولا كلمة المرور ولا السطر `Authorization`، لأن الجلسة كلها داخل TLS.
- بصمة الشهادة SHA-256 التي قدمتها الكاميرا هي نفس البصمة التي طبعناها عند إنشائها، وهذه هي الطريقة التي يتأكد بها المسجل أنه يكلم الكاميرا الصحيحة وليس جهازاً ينتحل عنوانها. ولاحظ أن ffprobe قبل الشهادة الموقعة ذاتياً دون أن يتحقق منها، وهذا سلوكه الافتراضي، لذلك في التركيب الحقيقي ثبت بصمة كل كاميرا في المسجل إن كان يدعم ذلك، أو استخدم شهادات من جهة إصدار داخلية كما شرحنا في [الشهادات الرقمية TLS وX.509](https://arabroot.io/articles/%D8%A7%D9%84%D8%B4%D9%87%D8%A7%D8%AF%D8%A7%D8%AA-%D8%A7%D9%84%D8%B1%D9%82%D9%85%D9%8A%D8%A9-tls-%D9%88-x509-%D9%88%D8%B5%D9%8A%D8%BA-pem-%D9%88-der/).

والصورة التالية تجمع المرات الثلاث في مقارنة واحدة، ثم تفصل الفرق بين الالتقاطين:

![جدول من ستة صفوف بعمودين: كما ركبت على شبكة واحدة بالإعداد الافتراضي، وبعد التقوية على شبكة معزولة مع RTSPS. المنافذ المفتوحة 1935 و8554 و8888 و8889 و8892 مقابل 8322 فقط، والمشاهدة دون كلمة مرور نعم مقابل انتهاء المهلة من شبكة المكتب، والفيديو عبر HTTP نعم مقابل الخدمة معطلة، والوصول إلى الإنترنت reachable مقابل blocked، وكلمة المرور في الشبكة viewer:Warehouse-Cam-2026 مقابل صفر أسطر في 1106 حزمة، وRTSP العادي مفتوح على 8554 مقابل Connection refused](https://arabroot.io/content/images/2026/10/camera-security-05-before-after.webp)

نفس الفيديو ونفس الكاميرا، والفرق كله في الإعداد والشبكة

![لوحتان: في اليمين باللون الأحمر RTSP عادي على 8554، وفيه سطر WWW-Authenticate Basic ثم Authorization Basic بقيمة مرمزة ثم أمر base64 -d ثم كلمة المرور viewer:Warehouse-Cam-2026، مع شرح أن كلمة المرور في كل طلب. وفي اليسار باللون الأخضر RTSPS على 8322، فيه 1106 حزمة ملتقطة وصفر أسطر Authorization واسم الشهادة وبصمتها، مع شرح أن الدخول داخل TLS. وتحتهما عبارة أن التشفير لا يغني عن العزل](https://arabroot.io/content/images/2026/10/camera-security-04-sniff.webp)

الترميز Base64 ليس تشفيراً، وTLS يخفي الدخول والفيديو معاً

## الوصول من خارج المكتب: VPN بدل فتح المنافذ

بعد كل هذا العزل يبقى طلب المدير: «أريد أن أشاهد الكاميرات من جوالي». والطريقة البسيطة التي يفعلها الفني هي فتح منفذ المسجل في ال Router، وهي أسوأ الطرق على الإطلاق، والسبب أن واجهة المسجل تصبح على الإنترنت أمام كل ماسح، فأي ثغرة فيها، أو كلمة مرور ضعيفة لأي مستخدم، تكفي. والطريقة الثانية هي تطبيق الشركة عبر السحابة P2P، وهي أفضل من فتح المنفذ لأن المسجل لا يستقبل اتصالات من الإنترنت، ولكنها تعني أن الفيديو يمر عبر خوادم لا تتحكم فيها، وأن المسجل أو الكاميرا يحتاجان الخروج إلى الإنترنت، وهذا يعاكس القاعدة الثالثة في التصميم.

والطريقة الأنسب أن تكون هناك شبكة خاصة VPN، فيتصل هاتف المدير بالشبكة الخاصة أولاً، ثم يفتح واجهة المسجل كأنه في المكتب، والمسجل وحده هو الذي يرى الكاميرات كما في التصميم. وقد شرحنا فكرة VPN في [ما هو VPN؟](https://arabroot.io/articles/%D9%85%D8%A7-%D9%87%D9%88-vpn-%D8%B4%D8%B1%D8%AD-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86/)، وتثبيت WireGuard بواجهة رسومية في [شبكة خاصة مع WireGuard وwg-easy](https://arabroot.io/articles/%D8%B4%D8%A8%D9%83%D8%A9-%D8%AE%D8%A7%D8%B5%D8%A9-%D9%85%D8%B9-wireguard-%D9%88-wg-easy/). ولاحظ أن مستخدم VPN يجب أن يصل إلى واجهة المسجل فقط، لا إلى شبكة الكاميرات، أي أن قواعد الجدار الناري تعامله مثل شبكة المكتب تماماً.

## قبل أن تشتري الكاميرا التالية

أرخص وقت لتحسين أمان الكاميرات هو قبل الشراء، لذلك أضف هذه الأسئلة إلى أسئلة الدقة والعدسة التي يسألها الجميع:

- **هل للشركة صفحة إشعارات أمنية منشورة؟** الشركة التي تنشر ثغراتها وإصداراتها المصححة، كما فعلت Hikvision مع الثغرة التي ذكرناها، أفضل من شركة لا تذكر شيئاً، لأن الصمت لا يعني عدم وجود ثغرات، وإنما عدم معرفتك بها.
- **كم سنة تصدر تحديثات لهذا الطراز؟** واسأل عن طريقة التحديث: هل يمكن تحديث البرنامج الثابت محلياً من ملف، دون أن تحتاج الكاميرا إلى الإنترنت أو إلى حساب سحابي؟
- **هل تعمل الكاميرا كاملة دون السحابة؟** بعض الكاميرات لا تكمل إعدادها الأول إلا من التطبيق، وبعضها يتوقف عن بعض الخصائص إذا منعت عنه الإنترنت.
- **ما الخدمات التي يمكن تعطيلها؟** UPnP وP2P وTelnet وHTTP، وهل تدعم HTTPS لصفحة الإعدادات وRTSPS للبث، وصفحة ONVIF ل [Profile T](https://www.onvif.org/profiles/profile-t/?ref=arabroot.io) تذكر البث عبر HTTPS ضمن ما يغطيه.
- **هل تدعم حسابات متعددة بصلاحيات مختلفة؟** حتى يأخذ المسجل حساب مشاهدة فقط.

والمنشآت الخاضعة لنظام استخدام كاميرات المراقبة الأمنية في السعودية تذكر لائحته التنفيذية في مادتها الثالثة الالتزام بمتطلبات الهيئة الوطنية للأمن السيبراني عند ربط أنظمة الكاميرات بالشبكات الأخرى، وتقييد الوصول إلى أجهزتها على المصرح لهم مع سجل لدخولهم، وقد شرحنا هذه النصوص بالتفصيل في المقال السابق من هذه المرحلة عن الخصوصية والأنظمة.

## إذا شككت أن كاميرا اخترقت

العلامات الشائعة: كاميرا تحاول الاتصال بعناوين غريبة في سجل الجدار الناري، أو حركة PTZ لم يطلبها أحد، أو إعدادات تغيرت وحدها، أو حساب مستخدم جديد لم ينشئه أحد، أو كاميرا تعيد التشغيل كثيراً أو يرتفع معدل البت فيها دون سبب. وعندها تصرف بالترتيب التالي:

1. **اعزلها ولا تطفئها مباشرة:** انقلها إلى VLAN لا تصل إلى أي شيء، أو عطل منفذها في ال Switch، حتى تتوقف عن الوصول إلى غيرها، واحفظ سجلات الجدار الناري وال Switch قبل أي شيء.
2. **افحص جيرانها:** شغل فحص المنافذ على بقية الكاميرات والمسجل، وقارن النتائج بالقائمة المعروفة، لأن المهاجم الذي وصل إلى كاميرا قد يكون وصل إلى غيرها.
3. **غير كلمات المرور:** لكل الكاميرات، ولحسابات المسجل، ولأي حساب كان محفوظاً في المسجل.
4. **أعد الكاميرا إلى ضبط المصنع وحدث برنامجها:** من ملف تنزله أنت من موقع الشركة الرسمي، ثم أعد إعدادها من البداية بالقائمة في آخر هذا المقال، أو استبدلها إذا لم يعد لطرازها تحديثات.
5. **اسأل كيف وصل:** هل كان منفذ مفتوحاً، أو UPnP، أو كلمة مرور افتراضية، أو ثغرة معروفة؟ فإذا لم تعرف الباب فسوف يعود من نفسه، وإذا كانت في الكاميرات تسجيلات لأشخاص فهذا تسرب لبيانات شخصية له إجراءات إشعار شرحناها في [مقال PDPL](https://arabroot.io/articles/%D8%AD%D9%85%D8%A7%D9%8A%D8%A9-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D8%A7%D9%84%D8%B4%D8%AE%D8%B5%D9%8A%D8%A9-pdpl-%D9%84%D9%84%D8%AE%D8%AF%D9%85%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D8%B6%D8%A7%D9%81%D8%A9/#breach).

## المراقبة: كيف تعرف أن شيئاً تغير؟

التقوية ليست عملاً يتم مرة واحدة، فالكاميرا التي تبدلها بأخرى بعد عطل تأتي بالإعداد الافتراضي، والفني الذي يأتي للصيانة قد يفعل خدمة «مؤقتاً» وينساها. لذلك أضف ثلاثة أشياء إلى تشغيلك اليومي:

- **فحص دوري للمنافذ:** نفس أمر nmap الذي استخدمناه، من المسجل على شبكة الكاميرات، مرة في الشهر وبعد أي صيانة، وقارن النتيجة بالقائمة المعروفة لكل كاميرا، وقد شرحنا الأداة بالتفصيل في [استكشاف الشبكة والمنافذ مع nmap](https://arabroot.io/articles/%D8%A7%D8%B3%D8%AA%D9%83%D8%B4%D8%A7%D9%81-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D8%A9-%D9%88%D8%A7%D9%84%D9%85%D9%86%D8%A7%D9%81%D8%B0-%D9%85%D8%B9-nmap/).
- **سجل الجدار الناري:** كل محاولة من شبكة الكاميرات للخروج تسجل، وأي كاميرا تحاول الخروج باستمرار تستحق أن تفحصها.
- **سجل البرنامج الثابت:** جدول بكل كاميرا وطرازها وإصدار برنامجها وتاريخ آخر تحديث، تراجعه عند كل إشعار أمني من الشركة.

## حذف التجربة

```bash
docker rm -f scv-cam-a scv-cam-b scv-cam-c scv-nvr
docker network rm scv-lan scv-camnet
docker image rm scv-tools:1
rm -rf work
```

## أخطاء شائعة

- ترك كلمة المرور الافتراضية «مؤقتاً» حتى ينتهي التركيب، ثم ينسى الجميع.
- كلمة مرور واحدة لكل الكاميرات، وحساب المدير نفسه محفوظ في المسجل وتطبيق الهاتف.
- تغيير كلمة مرور RTSP مع ترك خدمات أخرى مفتوحة تعطي نفس الفيديو دون كلمة مرور.
- الكاميرات على نفس شبكة الموظفين أو شبكة Wi-Fi الضيوف.
- فتح منفذ المسجل أو الكاميرا في ال Router، أو ترك UPnP مفعلاً فتفتحه الكاميرا بنفسها.
- عزل الكاميرات في VLAN مع السماح لها بالخروج إلى الإنترنت «حتى يعمل التطبيق».
- الاعتماد على التشفير وحده دون عزل، أو على العزل مع ترك المسجل نفسه ضعيفاً، وهو الجهاز الذي يعبر بين الشبكات.
- عدم تحديث البرنامج الثابت سنوات، وعدم معرفة أي إصدار على أي كاميرا.

## قائمة تحقق لكل كاميرا جديدة

| البند               | كيف تتحقق                                | القيمة المطلوبة                             |
| ------------------- | ---------------------------------------- | ------------------------------------------- |
| كلمة المرور         | حاول الدخول بالافتراضية من دليل الكاميرا | تفشل، وكلمة مرور فريدة في مدير كلمات المرور |
| حساب المسجل         | صلاحيات المستخدم في الكاميرا             | مشاهدة فقط، لا إعدادات                      |
| البرنامج الثابت     | صفحة النظام في الكاميرا وموقع الشركة     | آخر إصدار، ومسجل في الجدول                  |
| الخدمات             | nmap من المسجل                           | RTSP أو RTSPS فقط، وواجهة الإعدادات للإدارة |
| UPnP وP2P           | إعدادات الشبكة في الكاميرا وال Router    | معطلان                                      |
| الشبكة              | منفذ ال Switch وVLAN                     | VLAN الكاميرات، وSSID خاص للاسلكية          |
| الخروج إلى الإنترنت | سجل الجدار الناري                        | ممنوع، عدا NTP داخلي                        |
| الوصول من المكتب    | محاولة من حاسوب في المكتب                | لا يصل إلى الكاميرا، فقط إلى المسجل         |
| التشفير             | هل تدعم RTSPS أو HTTPS                   | مفعل حيث يتوفر، مع بصمة الشهادة             |
| الوصول من الخارج    | منافذ ال Router                          | لا منافذ مفتوحة، والوصول عبر VPN            |
| زر إعادة الضبط      | مكان التركيب                             | بعيد عن متناول اليد                         |

## الخلاصة

وصلنا لنهاية الموضوع، وأهم ما فيه:

- للكاميرا ستة أبواب شائعة: كلمة المرور الافتراضية، والخدمات غير الضرورية، والبرنامج الثابت القديم، والمنفذ المفتوح، والسحابة P2P، وRTSP غير المشفر، وMirai دخل من الأول وحده.
- في التجربة فتحت الكاميرا بإعدادها الافتراضي خمسة منافذ TCP، وأعطت الفيديو دون كلمة مرور عبر RTSP وHTTP، واستطاعت الخروج إلى الإنترنت.
- كلمة المرور على RTSP العادي تمر بترميز Base64 مع كل طلب، والتقطناها وفككناها بأمر واحد، وتغيير كلمة مرور الويب لا يغلق حسابات ONVIF والسحابة إذا كانت منفصلة عنها، فراجع كل قائمة مستخدمين في الكاميرا.
- العزل في VLAN خاصة لا تخرج إلى الإنترنت ولا يصلها إلا المسجل هو الحماية الأقوى، لأنه لا يعتمد على جودة برنامج الكاميرا.
- RTSPS يخفي الدخول والفيديو داخل TLS، وفي التجربة لم يظهر سطر Authorization واحد في 1106 حزمة، ولكنه طبقة إضافية لا بديل عن العزل.
- الوصول من الخارج عبر VPN إلى المسجل فقط، لا بفتح المنافذ ولا بالسحابة، والتقوية عمل مستمر بفحص دوري وسجل للتحديثات.

وفي المقال القادم من [مرحلة الكاميرات](https://arabroot.io/start/#stage-cameras) بإذن الله نقارن بين برامج التسجيل المفتوحة Frigate وZoneMinder وShinobi على نفس الكاميرا. وأقرب المقالات إلى هذا الموضوع على الموقع:

[![](https://arabroot.io/content/images/2026/10/network-segmentation-cover-cover.webp)دليلتقسيم الشبكة Network Segmentation بال VLAN وال VPCلماذا تصل كاميرا مخترقة إلى قاعدة بياناتك، وكيف تمنع ذلك بتقسيم الشبكة إلى مناطق لا يمر بينها إلا ما تسمح به.](https://arabroot.io/articles/%D8%AA%D9%82%D8%B3%D9%8A%D9%85-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D8%A9-network-segmentation-vlan-%D9%88-vpc/)[![](https://arabroot.io/content/images/2026/10/camera-types-cover-cover.webp)دليلأنواع كاميرات المراقبة وكيف تختار بينهاما الفرق بين أنواع كاميرات المراقبة، وما الذي تحتاجه في الكاميرا حتى تسجلها على جهازك، وكم قرصاً تحتاج للتسجيلات.](https://arabroot.io/articles/%D8%A7%D9%86%D9%88%D8%A7%D8%B9-%D9%83%D8%A7%D9%85%D9%8A%D8%B1%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%B1%D8%A7%D9%82%D8%A8%D8%A9-%D9%88%D9%83%D9%8A%D9%81-%D8%AA%D8%AE%D8%AA%D8%A7%D8%B1-%D8%A8%D9%8A%D9%86%D9%87%D8%A7/)[![](https://arabroot.io/content/images/2026/10/frigate-cover-cover.webp)دليلFrigate: تسجيل كاميرات المراقبة على سيرفرك مع كشف الأجسامكيف تثبت Frigate على سيرفرك، وتسجل به كاميرات المراقبة محلياً، ويكشف لك الأشخاص والسيارات دون أن يخرج الفيديو من بيتك.](https://arabroot.io/articles/frigate-%D8%AA%D8%B3%D8%AC%D9%8A%D9%84-%D9%83%D8%A7%D9%85%D9%8A%D8%B1%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%B1%D8%A7%D9%82%D8%A8%D8%A9-%D8%B9%D9%84%D9%89-%D8%B3%D9%8A%D8%B1%D9%81%D8%B1%D9%83/)[![](https://arabroot.io/content/images/2026/10/wireguard-cover-cover.webp)دليلشبكة خاصة مع WireGuard وواجهة wg-easyكيف تنشئ شبكة VPN خاصة مع WireGuard وواجهة wg-easy، فلا يصل إلى لوحات الإدارة على سيرفرك إلا أجهزة فريقك.](https://arabroot.io/articles/%D8%B4%D8%A8%D9%83%D8%A9-%D8%AE%D8%A7%D8%B5%D8%A9-%D9%85%D8%B9-wireguard-%D9%88-wg-easy/)[![](https://arabroot.io/content/images/2026/10/nmap-cover-cover.webp)دليلاستكشاف الشبكة والمنافذ والخدمات مع Nmapنشغل Nmap على مختبر من Containers نملكها بثلاث خدمات، ونمر على الاكتشاف وفحص المنافذ وكشف الإصدار ومحرك السكربتات NSE بمخرج حقيقي.](https://arabroot.io/articles/%D8%A7%D8%B3%D8%AA%D9%83%D8%B4%D8%A7%D9%81-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D8%A9-%D9%88%D8%A7%D9%84%D9%85%D9%86%D8%A7%D9%81%D8%B0-%D9%85%D8%B9-nmap/)[![](https://arabroot.io/content/images/2026/10/server-hardening-cover-cover.webp)دليلتقوية السيرفر Hardening وقياسها مع Lynis ومعايير CISيواجه مسؤول نظم طلب المستشفى بدليل تقوية، فيقيس خادمه بـ Lynis وCIS ويقويه ويعيد القياس، ويكشف مفاجأة تخفض الدرجة.](https://arabroot.io/articles/%D8%AA%D9%82%D9%88%D9%8A%D8%A9-%D8%A7%D9%84%D8%B3%D9%8A%D8%B1%D9%81%D8%B1-hardening-%D9%88%D9%82%D9%8A%D8%A7%D8%B3%D9%87%D8%A7-%D9%85%D8%B9-lynis-%D9%88-cis/)

## سجل التحديثات

- أكتوبر 2026: كتابة المقال، وتنفيذ التجربة على MediaMTX 1.21.1 وNmap 7.99 وtcpdump 4.99.6 وOpenSSL 3.5.9 وDocker Engine 29.8.0.