TP 4 – تنفيذ عملي: بروتوكول SSH
تتوفر عناصر التصحيح لهذا التمرين في مستودع التمارين: 👉 module-16 – Corrections
لشرح مفصل لأنواع بطاقات الشبكة (NAT، Internal Network، Host-Only، Bridged) وما يعادلها في VMware، راجع: 👉 Module 15 - Bonus : Cartes réseau VirtualBox vs VMware
الهدف
يهدف هذا التمرين إلى فهم أفضل لاستخدام Netcat و SSH في بيئة الشبكة، مع التركيز على اختلافاتهما من حيث الأمان و الوظائف.
التعليمات
- أجب عن الأسئلة مع تقديم لقطات شاشة ذات صلة مع تعليقات لكل خطوة من خطوات التكوين المطلوبة وكذلك النتائج المحصلة.
- احتفظ بآلاتك الافتراضية حتى بعد تسليم هذا العمل.
البيئة المطلوبة
المشرف
- VirtualBox (أو VMware Workstation / VMware Player)
الآلات الافتراضية التي يجب إنشاؤها
| الآلة | نظام التشغيل | RAM | القرص | CPU | الشبكة |
|---|---|---|---|---|---|
| SSH-SRV | Ubuntu Server 24.04 LTS (أو 22.04 LTS) | 1 جيجابايت كحد أدنى | 20 جيجابايت | 1 vCPU | شبكة داخلية (intnet) |
| SSH-CLI | Ubuntu Server 24.04 LTS (أو 22.04 LTS) | 1 جيجابايت كحد أدنى | 20 جيجابايت | 1 vCPU | شبكة داخلية (intnet) |
يجب أن تكون الآلتان متصلتين على نفس الشبكة الداخلية (وضع "Internal Network" في VirtualBox، مسماة مثلاً intnet).
لا تحتاج أي من الآلتين إلى الوصول إلى الإنترنت لهذا التمرين.
البرامج المطلوبة على الآلات الافتراضية
openssh-serverوopenssh-clientnetcat-openbsd(أوncat)tcpdump- Wireshark (على الآلة المضيفة أو على آلة افتراضية مع واجهة رسومية لتحليل الملفات
.pcap)
طوبولوجيا الشبكة
إعداد البيئة
السؤال 1 – إنشاء الآلات الافتراضية
قم بإنشاء آلتين افتراضيتين: SSH-SRV و SSH-CLI وقم بتكوينهما وفقًا للطوبولوجيا أعلاه.
| الآلة | الدور | عنوان IP | القناع |
|---|---|---|---|
| SSH-SRV | خادم Netcat / SSH | 10.11.12.1 | /24 |
| SSH-CLI | عميل Netcat / SSH | 10.11.12.2 | /24 |
السؤال 2 – تثبيت خدمة SSH
قم بتثبيت خدمة SSH (openssh-server) على الخادم Linux SSH-SRV.
sudo apt install -y openssh-server # Ubuntu/Debian
# أو
sudo dnf install -y openssh-server # AlmaLinux/RHEL
السؤال 3 – وصف Netcat
قم بوصف أداة Netcat بإيجاز.
السؤال 4 – تثبيت Netcat
قم بتثبيت أداة Netcat على الخوادم Linux SSH-SRV والعميل Linux SSH-CLI.
# AlmaLinux / RHEL
sudo dnf install -y nmap-ncat
# Ubuntu / Debian
sudo apt install -y netcat
الجزء الأول – النقل باستخدام Netcat (غير مشفر)
السؤال 5 – التقاط حركة المرور الشبكية
باستخدام الأمر tcpdump، التقط حركة المرور الشبكية على الواجهة 10.11.12.1 باستخدام الأمر:
tcpdump -i <interface> -w capture1.pcap
حيث <interface> هي واجهة الاتصال بين SSH-SRV و SSH-CLI.
السؤال 6 – فتح الاتصال بـ Netcat
قم بإنشاء دليل يسمى rep على SSH-SRV ثم افتح اتصالاً عبر Netcat ونفذ الأمر:
mkdir -p rep
cd rep
nc -l -p 64321 > tonfichier.txt
السؤال 7 – إرسال الملف من العميل
سيسمح الأمر أعلاه للخادم SSH-SRV بالانتظار حتى يفتح العميل اتصالاً مع الخادم المستمع على المنفذ 64321. الملف الذي سيتم إرساله من قبل العميل إلى الخادم سيحمل الاسم monfichier.txt وسيتم نسخه تحت الاسم tonfichier.txt على الخادم بمجرد اكتمال النقل.
يجب عليك، مسبقًا، إنشاء الملف monfichier.txt على SSH-CLI بمحتوى (على سبيل المثال: "هذا محتوى سري").
الأمر الذي يجب تنفيذه على مستوى آلة العميل SSH-CLI هو:
nc 10.11.12.1 64321 < monfichier.txt
السؤال 8 – إيقاف الالتقاط
أوقف التقاط الحزم (Ctrl+C على الطرفية tcpdump).
السؤال 9 – التحقق من الملف
على SSH-SRV، تحقق من أن محتوى الملف tonfichier.txt مطابق لمحتوى monfichier.txt للعميل.
cat tonfichier.txt
السؤال 10 – التحليل باستخدام Wireshark
افتح الملف capture1.pcap باستخدام Wireshark (يمكنك تثبيته مسبقًا على SSH-SRV، أو يمكنك نقل الالتقاط من الآلة الافتراضية إلى جهاز الكمبيوتر الخاص بك).
# تثبيت Wireshark (إذا لزم الأمر)
sudo apt install -y wireshark # Ubuntu/Debian
السؤال 11 – تحديد 3-way handshake
من خلال تحليل حركة المرور الملتقطة، حدد الأجزاء التي تضمن الاتصال بين العميل والخادم:
لهذا، استخدم مرشح Wireshark:
tcp.flags.syn == 1 || tcp.flags.ack == 1
أعط أرقام الحزم المقابلة.
السؤال 12 – منفذ TCP للعميل Netcat
ما هو منفذ TCP المستخدم من قبل العميل Netcat؟
السؤال 13 – رقم حزمة النقل
حدد رقم الحزمة التي سمحت بنقل ملف monfichier.txt من العميل.
السؤال 14 – التقاط المحتوى المنقول
قم بالتقاط لقطة شاشة (على Wireshark) لمحتوى الملف المنقول.
السؤال 15 – الاستنتاج
ماذا يمكن أن نستنتج؟
مع Netcat، تنتقل البيانات بوضوح على الشبكة. يمكن لأي شخص يلتقط حركة المرور قراءة محتوى الملف المنقول. هنا يأتي دور SSH لتوفير تشفير الاتصالات.
الجزء الثاني – النقل عبر نفق SSH (مشفر)
السؤال 1 – المصادقة بكلمة المرور
قم بتكوين مصادقة العميل SSH بواسطة كلمة المرور.
السؤال 2 – التحقق من مصداقية الخادم
تحقق من مصداقية الخادم SSH SSH-SRV. للقيام بذلك، يجب عليك حساب تجزئة المفتاح العام للخادم ومقارنته مع المفتاح المقترح قبل اتخاذ قرار الاتصال به.
# على SSH-SRV: عرض بصمة المفتاح العام
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
السؤال 3 – المصادقة بالمفتاح
قم بتكوين مصادقة العميل SSH بواسطة المفتاح.
# على SSH-CLI: توليد زوج المفاتيح
ssh-keygen -t ed25519
# نسخ المفتاح العام إلى الخادم
ssh-copy-id root@10.11.12.1
السؤال 4 – التقاط حركة المرور الشبكية (نفق SSH)
باستخدام الأمر tcpdump، التقط حركة المرور الشبكية على الواجهة 10.11.12.1 باستخدام الأمر:
tcpdump -i <interface> -w capture2.pcap
السؤال 5 – فتح الاتصال بـ Netcat على الخادم
في الدليل rep على SSH-SRV، افتح اتصالاً عبر Netcat ونفذ الأمر:
cd rep
nc -l -p 64321 > tonfichier2.txt
السؤال 6 – تكوين نفق SSH
قم بتكوين نفق SSH للخادم الذي تم إنشاؤه سابقًا بواسطة Netcat والعميل. سنفترض أن العميل يختار الاتصال على المنفذ المحلي 10111/TCP.
نفذ (على العميل) الأمر التالي:
ssh -L 10111:10.11.12.1:64321 root@10.11.12.1
شرح النفق:
السؤال 7 – إرسال الملف عبر النفق
على طرفية أخرى للعميل، نفذ الأمر:
nc localhost 10111 < monfichier.txt
السؤال 8 – إيقاف الالتقاط
أوقف التقاط tcpdump للحزم.
السؤال 9 – التحقق من الملف
على SSH-SRV، تحقق من أن محتوى الملف tonfichier2.txt مطابق لمحتوى monfichier.txt للعميل.
السؤال 10 – التحليل باستخدام Wireshark
افتح الملف capture2.pcap باستخدام Wireshark.
السؤال 11 – منفذ عشوائي للنفق
ما هو رقم منفذ TCP العشوائي الذي تم استخدامه من قبل العميل SSH لتوجيه Netcat؟
السؤال 12 – مرشح Wireshark بدون نتيجة
لماذا لا يعيد مرشح Wireshark التالي أي نتيجة:
tcp.port == 64321 || tcp.port == 10111
فكر في ما يفعله نفق SSH بالمنافذ وحركة المرور. هل المنافذ 64321 و 10111 مرئية على الشبكة بين الآلتين؟
السؤال 13 – تحديد النقل المشفر
هل يمكنك تحديد رقم الحزمة التي تم استخدامها لنقل ملف monfichier.txt؟ إذا كان الجواب نعم، هل يمكنك التقاط محتوى الملف المنقول؟
المقارنة: Netcat مقابل نفق SSH
| المعيار | Netcat وحده (الجزء 1) | Netcat + نفق SSH (الجزء 2) |
|---|---|---|
| التشفير | لا يوجد | نعم (SSH) |
| المنفذ المرئي على الشبكة | 64321 | 22 (SSH فقط) |
| المحتوى المرئي في Wireshark | نعم (بوضوح) | لا (مشفر) |
| المصادقة | لا يوجد | بكلمة مرور أو مفتاح |
| الأمان | ضعيف | قوي |
تم إنشاء التمرين في: فبراير 2025