TP 5 – مختبر: SSH، HTTP وجدار الحماية
تتوفر عناصر التصحيح لهذا المختبر في مستودع التمارين: 👉 module-17 – التصحيحات
يستخدم هذا المختبر حتى 3 بطاقات شبكة لكل جهاز افتراضي. للحصول على شرح مفصل لأنواع البطاقات (NAT، Internal Network، Host-Only، Bridged) وما يعادلها في VMware، راجع: 👉 Module 15 - وحدة إضافية: بطاقات الشبكة في VirtualBox مقابل VMware
العمل في فريق من اثنين
| الاسم | |
|---|---|
| الطالب 1 | ........................ |
| الطالب 2 | ........................ |
الأهداف
يهدف هذا المختبر إلى تطبيق المعرفة المكتسبة حول البروتوكولات والخدمات التي تمت دراستها حتى الآن (SSH، HTTP، جدار الحماية) في بيئة لينكس.
البيئة المطلوبة
المشرف
- VirtualBox (أو VMware Workstation / VMware Player)
الأجهزة الافتراضية التي يجب إنشاؤها
| الجهاز | نظام التشغيل | RAM | القرص | CPU | واجهات الشبكة |
|---|---|---|---|---|---|
| srvGateway | Ubuntu Server 24.04 LTS (أو 22.04 LTS) | 1 جيجابايت كحد أدنى | 20 جيجابايت | 1 vCPU | 3 واجهات: NAT + شبكة داخلية lan + شبكة داخلية clientnet |
| srvSSH | Ubuntu Server 24.04 LTS (أو 22.04 LTS) | 1 جيجابايت كحد أدنى | 20 جيجابايت | 1 vCPU | 1 واجهة: شبكة داخلية lan |
| srvWEB | Ubuntu Server 24.04 LTS (أو 22.04 LTS) | 1 جيجابايت كحد أدنى | 20 جيجابايت | 1 vCPU | 1 واجهة: شبكة داخلية lan |
| Client | Ubuntu Server 24.04 LTS (أو 22.04 LTS) | 1 جيجابايت كحد أدنى | 20 جيجابايت | 1 vCPU | 1 واجهة: شبكة داخلية clientnet |
- srvGateway يحتاج إلى 3 بطاقات شبكة:
- Adapter 1: NAT (وصول إلى الإنترنت)
- Adapter 2: Internal Network →
lan(شبكة LAN10.11.12.0/24) - Adapter 3: Internal Network →
clientnet(شبكة العميل20.21.22.0/30)
- srvSSH و srvWEB: Internal Network →
lan - Client: Internal Network →
clientnet
البرامج المطلوبة على الأجهزة الافتراضية
| الجهاز | البرامج التي يجب تثبيتها |
|---|---|
| srvGateway | iptables, net-tools |
| srvSSH | openssh-server |
| srvWEB | apache2, openssl, certbot (اختياري) |
| Client | openssh-client, curl, wget |
يجب تفعيل توجيه IP (ip_forward) على srvGateway لكي يتدفق المرور بين الشبكات.
يجب أن تكون الأجهزة الأخرى (srvSSH, srvWEB, Client) لديها srvGateway كبوابة افتراضية.
طوبولوجيا الشبكة
وصف الأجهزة
| الجهاز | الدور | الواجهة(ات) |
|---|---|---|
| srvGateway | التوجيه والبوابة إلى الإنترنت | واجهة 1: NAT (الإنترنت) |
واجهة 2: 10.11.12.1/24 (LAN) | ||
واجهة 3: 20.21.22.1/30 (العميل) | ||
| srvWEB | خادم ويب Apache | 10.11.12.150/24 |
| srvSSH | خادم SSH | 10.11.12.100/24 |
| Client | جهاز عميل | 20.21.22.2/30 |
الاتصال المتوقع
srvGatewayلديه وصول إلى الإنترنت- يمكن للعميل،
srvWEBوsrvSSHالوصول إلى الإنترنت عبرsrvGateway - مرور SSH، HTTP و HTTPS مسموح على
srvGateway
عدم الالتزام بالطوبولوجيا أو تقديم لقطات شاشة لا تتوافق مع التعليمات سيؤدي إلى خصم نقاط.
الجزء 1 – إعداد التوجيه ومشاركة الاتصال (40 نقطة)
1.1 – إعداد العناوين IP الثابتة
قم بإعداد العناوين IP الثابتة على كل من الأجهزة الأربعة وفقًا للطوبولوجيا.
قم بالتقاط صورة للواجهات لكل جهاز.
1.2 – تفعيل التوجيه الدائم على srvGateway
قم بتفعيل التوجيه (IP forwarding) بشكل دائم على srvGateway.
أدرج لقطة شاشة لتفعيل التوجيه الدائم.
1.3 – إعداد مشاركة الاتصال بالإنترنت على srvGateway
أضف قواعد iptables لـ:
a) السماح بالمرور الصادر من LAN، الذي يتم تمريره عبر srvGateway
لقطة مطلوبة.
b) السماح فقط بمرور SSH، HTTP، HTTPS و ICMP للأجهزة الأخرى
لقطة مطلوبة.
c) تفعيل MASQUERADE
لقطة مطلوبة.
d) اختبار الاتصال بالإنترنت
اختبر الاتصال بالإنترنت من العميل، srvSSH و srvWEB.
لقطة مطلوبة.
الجزء 2 – إعداد الخدمات (40 نقطة)
2.1 – إعداد خادم ويب Apache على srvWEB
a) إنشاء مضيفين افتراضيين
قم بإنشاء مضيفين افتراضيين على srvWEB:
| المضيف الافتراضي | اسم النطاق |
|---|---|
| الموقع 1 | www.test.local |
| الموقع 2 | www.labo.local |
لقطة مطلوبة.
b) صفحات HTML بأسماء الطلاب
أدرج صفحات HTML بأسماء طلاب الفريق.
لقطة مطلوبة.
c) ملفات التكوين والصفحات الويب
أدرج لقطات شاشة لملفات التكوين والصفحات الويب المعروضة.
2.2 – إعداد الوصول الآمن عبر HTTPS
a) تثبيت شهادات SSL
قم بتثبيت شهادات SSL للمضيفين الافتراضيين.
المضيفون الافتراضيون المعنيون:
- www.test.local → شهادة موقعة ذاتيًا
- www.labo.local → شهادة موقعة ذاتيًا
لقطة مطلوبة: الشهادات والصفحات HTTPS.
2.3 – تقييد الوصول إلى srvWEB من العميل
a) حظر الوصول من 20.21.22.2
قم بتعديل التكوين لـ حظر العنوان 20.21.22.2.
لقطة مطلوبة.
b) اختبار باستخدام curl
اختبر باستخدام curl وأدرج لقطة شاشة لرفض الوصول.
الجزء 3 – إعداد الوصول عن بعد (20 نقطة)
3.1 – إعداد خادم SSH على srvSSH
a) إنشاء المستخدم bob
قم بإنشاء مستخدم bob مع /home/bob و /bin/bash.
اللقطات المطلوبة:
- مخرجات
ss -tan - مخرجات
tail /etc/passwd
3.2 – إعداد إعادة توجيه SSH محلية (نفق)
استخدم نفق SSH لكي يتمكن العميل من الوصول إلى www.labo.local عبر srvSSH.
مبدأ نفق SSH:
اللقطات المطلوبة:
- أمر نفق SSH
- الوصول الناجح إلى
www.labo.localمن العميل عبر النفق
ملخص الطوبولوجيا والتدفقات
جدول التقييم
| الجزء | المعايير | النقاط |
|---|---|---|
| الجزء 1 | إعداد التوجيه ومشاركة الاتصال | 40 |
| إعداد العناوين IP الثابتة + لقطات | 10 | |
| تفعيل التوجيه الدائم | 5 | |
| قواعد iptables (SSH، HTTP، HTTPS، ICMP) | 10 | |
| MASQUERADE | 5 | |
| اختبارات الاتصال بالإنترنت (العميل، srvSSH، srvWEB) | 10 | |
| الجزء 2 | إعداد الخدمات | 40 |
| مضيفين افتراضيين Apache (www.test.local، www.labo.local) | 10 | |
| صفحات HTML بأسماء الطلاب | 5 | |
| ملفات التكوين + الصفحات المعروضة | 5 | |
| شهادات SSL وHTTPS | 10 | |
| تقييد الوصول (حظر 20.21.22.2) | 5 | |
| اختبار curl + لقطة لرفض الوصول | 5 | |
| الجزء 3 | إعداد الوصول عن بعد | 20 |
| المستخدم bob + لقطات (ss -tan، /etc/passwd) | 10 | |
| نفق SSH + الوصول إلى www.labo.local | 10 | |
| المجموع | 100 |
تم إنشاء المختبر في: فبراير 2025
وحدة إضافية – فهم المصافحة TLS (مبسطة)
الهدف هنا هو شرح، بكلمات بسيطة جدًا، ما يحدث عندما تكتب عنوانًا في HTTPS.
نسخة "وحدة إضافية" (خارج هذا المختبر) متاحة هنا: Module 15 – وحدة إضافية: مصافحة TLS (مبسطة).
1) قبل TLS: "المصافحة" TCP (SYN / SYN‑ACK / ACK)
قبل الحديث عن التشفير (TLS)، يجب أولاً إنشاء الاتصال الشبكي. بالنسبة لـ HTTPS، يكون عادةً TCP على المنفذ 443.
يستخدم TCP مصافحة في 3 رسائل:
- SYN: «مرحبًا، أريد التحدث إليك، هل أنت هنا؟»
- SYN‑ACK: «نعم، أنا هنا، وقد استلمت SYN الخاص بك. هل تسمعني؟»
- ACK: «نعم، أسمعك، لقد استلمت رسالتك. يمكننا البدء.»
ACK = إقرار بالاستلام (يعني فقط: «لقد استلمت»).
👉 مهم: هذه المصافحة TCP لا تشفر أي شيء. إنها فقط لتقول: «الاتصال جاهز».
2) بعد ذلك: المصافحة TLS (لتأمين المحادثة)
بمجرد إنشاء TCP، نبدأ TLS (الذي يجعل HTTP → HTTPS).
فكر في TLS كـ: الاتفاق على قفل، التحقق من هوية الخادم، ثم التحدث بلغة سرية.
إليك الفكرة العامة (دون الدخول في التفاصيل التشفيرية):
- ClientHello (العميل → الخادم):
- «مرحبًا، يمكنني استخدام TLS، إليك الإصدارات والخوارزميات التي أدعمها.»
- ServerHello (الخادم → العميل):
- «حسنًا، نختار هذا الإصدار من TLS وهذه الخوارزميات.»
- يرسل الخادم أيضًا شهادته (بطاقة هويته).
- التحقق من الشهادة (جانب العميل):
- يتحقق العميل من أن الشهادة صالحة، تتوافق مع اسم الموقع، وموقعة من سلطة معروفة (أو مقبولة يدويًا إذا كانت موقعة ذاتيًا).
- إنشاء سر مشترك:
- يقوم العميل والخادم بإعداد مفاتيح للتشفير (غالبًا عبر تبادل مفاتيح نوع Diffie‑Hellman).
- من هناك، يمكنهم إنشاء مفاتيح جلسة.
- Finished (من كلا الجانبين):
- يرسلون رسالة أخيرة لتأكيد: «لدينا نفس المفاتيح، نحن جاهزون».
✅ بعد ذلك، كل ما يلي مشفر: عناوين URL كاملة، محتويات، كلمات مرور، ملفات تعريف الارتباط، إلخ.
3) ملخص صغير "في جملة واحدة"
- TCP (SYN/SYN‑ACK/ACK): نفتح الباب (الاتصال)
- TLS (ClientHello… Finished): نضع قفلًا ونتحقق من الهوية (الأمان)
- HTTP/HTTPS: هذا ما نقوله بمجرد فتح الباب ووضع القفل
- في HTTP، سترى المحتوى (غالبًا قابل للقراءة).
- في HTTPS، سترى بشكل أساسي المصافحة TLS ثم حزم مشفرة (محتوى غير قابل للقراءة).