في هذا المقال سنتكلم بالتفصيل وشرح SSH tunnels وكيفية استخدامه لتشفير الاتصال وتخطي الحجب والجدران النارية في الشبكة كذلك الحماية من التجسس وبرامج الـ Sniffing. تم توضيح الطريقة لأنظمة لينكس و Unix-like بالاضافة لويندوز عن طريق برنامج PuTTY,,من المميزات التي يتمتع بها بروتوكول SSH هي قدرته على عمل tunnel (نفق) مشفر وآمن يمكن البرامج الموجودة في الجهاز من استخدامه. كون بروتوكول SSH مشفر بالكامل

شرح ssh tunnel

فوائد استخدام SSH tunnel

نستطيع استخدام برنامج العميل لانشاء بروكسي SOCKS محلي نمرر من خلاله اتصالنا لسيرفر خارجي مما يمكننا من:

  1. تشفير اتصال البروتوكولات الغير مشفرة مثل FTP و HTTP (في حال عدم توفر HTTPS) وهذه خطوة مهمة لحماية الاتصال ومنع برامج Sniffing خصوصاً عند استخدام شبكة عامة أو شبكة وايرلس غير مشفرة.
  2. تخطي حجب الشبكة أو مزود الخدمة للمواقع والشبكات الاجتماعية.
  3. تخطي حجب بعض المواقع للأيبي المستخدم أو لدولة معينة (كما هو الحال في حظر بعض خدمات Google على الأخوة في سوريا والسودان وغيرهم من الدول).

ما هو SSH tunnel وكيف يعمل؟

هو فتح نفق آمن (نفق SSH)، وهو ضبط إعدادات جدار ناري مقيد خاص بواسطة SSH. ويعد أيضا طريقة إعداد لتشفير أو تخطي حجب السيرفر الداخلي، وكما ذكرت بروتوكول SSH مشفر بالكامل ويستخدم Public-key cryptography وهو تشفير يعتمد على وجود مفتاحين الأول مفتاح تشفير عام في جهاز العميل وآخر خاص في السيرفر.

البيانات المشفرة بالمفتاح العام لا يمكن فك تشفيرها الا باستخدام المفتاح الخاص والعكس صحيح,وكون الاتصال مشفر فبرامج الحظر لن تتمكن من قراءة البيانات المارة وبرامج التجسس والـ Sniffing في الشبكة ستظهر حزم غير مفهومة ولا يمكن تحليلها بسهولة.

باستخدام عميل SSH وان كانت خاصية port forwarding مفعلة في السيرفر يمكن أن ننشئ "نفق" مشفر باستخدام اتصالنا مع السيرفر لتمرير اتصال اي برنامج آخر يدعم بروكسي SOCKS ومن ضمنهم المتصفح والعديد من البرامج الآخرى. سنحتاج لسيرفر خارج الشبكة يمكننا الاتصال به, قد يكون VPS, سيرفر خاص بك سواء كان جهازك في المنزل أو العمل..

المهم أن تتمكن من الاتصال مع هذا الجهاز عن طريق الانترنت باستخدام SSH, في حال عدم تمكنك من الاتصال بجهاز بشكل مباشر, يمكنك الاعتماد على حلول توفر Dynamic DNS مثل no-ip و dyndns.

في أنظمة لينكس و Unix-like (من ضمنهم Mac OS X) بامكاننا استخدام سطر الأوامر وتنفيذ الأمر التالي: # ssh -D [PORT] [USER]@[SERVER-IP]

مثال تطبيقي: # ssh -D 5115 user@0.0.0.0 طبعاً مع تغيير user الى اسم المستخدم و 0.0.0.0 الى IP السيرفر الخاص بك. بعد الاتصال بالسيرفر, سيتم انشاء بروكسي SOCKS محلي في الجهاز localhost يستخدم المنفذ 5115. الآن كل ما علينا هو الذهاب للمتصفح أو اعدادت النظام وجعله يستخدم البروكسي السابق:

اعدادات الاتصال في فايرفوكس

 في إحدى الشبكات كان المنفذ 22 محظور أيضاً ومن الواضح أن مدير الشبكة حظر كل شيء باستثناء منافذ التصفح 80 و 443. ما قمت به هو اني طلبت من شركة الاستضافة اغلاق سيرفر الويب واعادة تشغير سيرفر ssh على المنفذ 80 واستخدمت الأمر التالي بشكل عادي جداً:     # ssh -D 5115 user@0.0.0.0 -p 80

شكل الاتصال عبر SSH tunnel

الآن الاتصال أصبح بالشكل التالي: من جهازي الى السيرفر الخارجي عن طريق المنفذ 80 وهو مشفر ولا يمكن لبرامج الحجب معرفة محتوى الاتصال وبدوره يقوم السيرفر الخارجي بتمرير الاتصال للموقع الذي طلبته وارسال الرد لجهازي عن طريق النفق المشفر الذي أنشأناه,في أنظمة ويندوز لا يوجد عميل SSH بشكل افتراضي لذلك نحن بحاجة لبرنامج مثل PuTTY,وهو برنامج مجاني ومفتوح المصدر يمكن تحميله من هنا. من الإعدادت في القائمة الجانبية نختر:  Connection > SSH > Tunnles الآن حدد المنفذ Source port واختر النوع Dynamic كما هو موضح بالصورة التالية:

برنامج PuTTY

بعد ذلك نذهب الى Sessions ونتصل مع سيرفر SSH الخاص بنا ونبطق نفس الإعدادات بالمتصفح أو أي برنامج آخر يدعم بروكسي SOCKS.

أخيرا

السؤال الآن هل يمكن كسر التشفير؟ الجواب ممكن لكن ليس بهذه البساطة. أسلوب Public-key cryptography يستخدم على مستوى الحكومات وما لم يتم كشف مفاتيح التشفير فكسره أمر شبه مستحيل حالياً.

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