انتقل إلى المحتوى الرئيسي

TP 4 – تنفيذ عملي: بروتوكول SSH

عناصر التصحيح

تتوفر عناصر التصحيح لهذا التمرين في مستودع التمارين: 👉 module-16 – Corrections

وحدة إضافية: فهم بطاقات الشبكة VirtualBox و VMware

لشرح مفصل لأنواع بطاقات الشبكة (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-SRVUbuntu Server 24.04 LTS (أو 22.04 LTS)1 جيجابايت كحد أدنى20 جيجابايت1 vCPUشبكة داخلية (intnet)
SSH-CLIUbuntu Server 24.04 LTS (أو 22.04 LTS)1 جيجابايت كحد أدنى20 جيجابايت1 vCPUشبكة داخلية (intnet)
تكوين الشبكة في VirtualBox

يجب أن تكون الآلتان متصلتين على نفس الشبكة الداخلية (وضع "Internal Network" في VirtualBox، مسماة مثلاً intnet). لا تحتاج أي من الآلتين إلى الوصول إلى الإنترنت لهذا التمرين.

البرامج المطلوبة على الآلات الافتراضية​

  • openssh-server و openssh-client
  • netcat-openbsd (أو ncat)
  • tcpdump
  • Wireshark (على الآلة المضيفة أو على آلة افتراضية مع واجهة رسومية لتحليل الملفات .pcap)

طوبولوجيا الشبكة​


إعداد البيئة​

السؤال 1 – إنشاء الآلات الافتراضية​

قم بإنشاء آلتين افتراضيتين: SSH-SRV و SSH-CLI وقم بتكوينهما وفقًا للطوبولوجيا أعلاه.

الآلةالدورعنوان IPالقناع
SSH-SRVخادم Netcat / SSH10.11.12.1/24
SSH-CLIعميل Netcat / SSH10.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)
المنفذ المرئي على الشبكة6432122 (SSH فقط)
المحتوى المرئي في Wiresharkنعم (بوضوح)لا (مشفر)
المصادقةلا يوجدبكلمة مرور أو مفتاح
الأمانضعيفقوي

تم إنشاء التمرين في: فبراير 2025