مقال : استخدام SOCKS Tunnel لتمرير البيانات بشكل امن
أحيانا تكون على شبكة غير آمنة أو جدران الحماية فيها مقيدة للشبكة ، وانت بحاجة للوصول إلى موقع على شبكة الانترنت. وتريد التاكد من ان لا أحد في المنتصف يراقب حركة المرور.
احد الحلول وهو ان تستخدم VPN، ولكن العديد من الVPNs تتطلب برنامج عميل خاص على جهازك، والذي قد لا تملك الحق بتثبيته .
إذا كان كل ما تحتاج تأمينه هو تصفحك للويب ، هناك بديل بسيط وهو “SOCKS 5 proxy tunnel”
SOCKS proxy هو في الأساس SSH tunnel حيث تقوم تطبيقات محددة بإعادة توجيه حركة مرورها الى الـTunnel ثم إلى الخادم، ثم يقوم الخادم بتوجيه حركة المرور إلى الإنترنت. على عكس VPN، فإن SOCKS proxy لابد من تهيئته على على جهاز العميل وبدون برامج خاصة .
طالما لديك Droplet مع صلاحية وصول الى SSH، فيمكنك استخدامه بمثابة نقطة نهاية SOCKS proxy . في هذه المقالة سوف نستخدم Ubuntu 14.04 Droplet ك proxy ، ومتصفح الإنترنت Firefox كتطبيق العميل. بحلول نهاية هذه المقالة يجب أن تكون قادرا على تصفح مواقع الويب بشكل آمن من خلال ال Tunnel.
المتطلبات:
كما ذُكر أعلاه، فإن أول شيء نحتاجه هو خادم يستطيع تشغيل أي نوع من Linux ، مثل Ubuntu 14.04, with SSH access.
بقى القليل من الإعدادات المطلوبة على جهازك المحلي. لهذا ستحتاج إلى تحميل واحد أو اثنين من البرمجيات .
- Firefox web browser .
- PuTTY (مستخدمي ويندوز)
Firefox يسمح لك بتعيين proxy ل Firefox فقط بدلا من وضع System_wild proxy .
PuTTY يستخدم لإعداد proxy tunnel لمستخدمي ويندوز. مستخدمي MAC OS X أو Linux لديهم أدوات لإعداد tunnel مثبت مسبقا.
اعداد Tunnel على لينكس و MAC :
على جهاز الكمبيوتر المحلي، قم بإنشاء مفتاح SSH . إذا كان لديك بالفعل مفتاح SSH ، يمكنك استخدامه.
على الرغم من انها ممارسة جيدة لإعطاء مفتاح SSH الخاص بك كلمة مرور، في هذا المقال سوف نقوم بترك كلمة المرور فارغة لتجنب اي مشاكل في وقت لاحق.
بعد إعدادك للمفتاح، تأكد من إضافته إلى المفاتيح المصرح بها لمستخدمي sudo على الخادم (في هذا المثال، هو sammyuser).
افتح برنامجاً من على الترمنال في الجهاز الخاص بك.
على نظام التشغيل Mac OS X، الطرفية موجوده في قائمة التطبيقات > المرفقات .
قم بإعداد ال Tunnel بإستخدام الأمرالتالي :
Ssh -D 8123 -F -C -q -N sammyuser@example. Com
خيارات الامر السابق :
-D: يخبر SSH اننا نريد إجراء SOCKS Tunnel على رقم المنفذ المحدد (يمكنك اختيار عدد بين 65536-1025)
-F: يجعل العملية تعمل في الخلفية
-C: ضغط البيانات قبل إرسالها
-q: يستخدم الوضع الصامت
-N: يخبر SSH أن أي أمر لن يرسل بمجرد تفعيل ال Tunnel
تأكد من استبدال [email protected] مع اسم المستخدم الخاص بك و عنوان الخادم IP أو اسم النطاق .
بمجرد إدخال الأوامر، ستنتقل فورا إلى موجه الأوامر مرة أخرى دون أي علامة على النجاح أو الفشل؛ وهذا أمر طبيعي
تحقق من تفعيل ال Tunnel وانه تم تشغيله مع هذا الأمر:
ps aux | grep ssh
يجب أن تكون المخرجات للامر السابق مشابهة للتالي :
يمكنك إنهاء التطبيق الخاص بك وسوف يبقى ال Tunnel فعالاً . وذلك بسبب استخدمنا -f التي وضعت جلسة SSH في الخلفية
ملاحظة: إذا كنت ترغب في إنهاء ال Tunnel سيكون عليك تحديد ال PID عبر امر ps واستخدام امر kill
اعداد Tunnel على انظمه windows :
قم بفتح puTTY
إذا لم تكن قد قمت بتثبيته حتى الآن، حميل PuTTY واحفظه حيث تريد. PuTTY لا يتطلب صلاحيات المسؤول لتثبيته. فقط حمل .exe وقم بتشغيله.
أكمل الخطوات التالية لإعداد ال Tunnel
1.من قسم الجلسة، أضف اسم المضيف (أو عنوان IP) للخادم الخاص بك، و SSH port (عادة 22)
2.على اليسار، انتقل إلى:
connection < SSH< tunnels
3.أدخل أي رقم لمصدر المنفذ بين 65536 – 1025. في هذا المثال استخدمنا المنفذ 1337
4. حدد زر الإرسال الديناميكي (Dynamic )
5. اضغط زر Add
6.عد للجلسة على اليسار
7. أضف اسما تحت الجلسات المحفوظة وانقر على زر حفظ
8.اضغط زر open لإجراء الإتصال
9.أدخل اسم المستخدم وكلمة مرور الخاص بك لتسجيل الدخول
يمكنك تصغير نافذة PuatTY الآن، ولكن لا تغلقها. وينبغي أن يكون اتصال SSH الخاص بك مفتوحاً
نصيحة: يمكنك حفظ اسم مستخدم (sammy) ومفتاح SSH لهذه الجلسة نفسها باتباع ارشادات مفتاح PuTTY SSH . عندها لن يكون عليك إدخال اسم المستخدم وكلمة المرور الخاصة بك في كل مرة تقوم فيها بفتح اتصال .
تهيئة Firefox لاستخدام Tunnel :
الآن لديك SSH tunnel ، وحان الوقت لتهيئة Firefox لاستخدام هذا ال Tunnel . تذكر أنه لتشغيل SOCKS 5 tunnel ، عليك إستخدام تطبيق محلي يمكنه الاستفادة من tunnel. و Firefox بإمكانه ذلك.
هذه الخطوة هي نفسها ل Windows ، MAC OS X، Linux .
تأكد من حصولك على رقم المنفذ الذي استخدمته في أمر SSH الخاص بك أو في PuTTY المشير إلى هذا المثال. لقد استخدمنا مثال 8123 في OS X / Linux ، و 1337 في مثال Windows حتى الآن، أو قد تكون استخدمت منفذا مختلفاً .
(تم إجراء الخطوات التالية مع إصدار 39 من Firefox ولكن ينبغي العمل على إصدارات أخرى، على الرغم من أن مواقع الخيارات قد تكون مختلفة.
1_في الزاوية اليمنى من الأعلى انقر على أيقونة Hamburger للوصول إلى قائمة فايرفوكس:
2-انقر على أيقونة Preferences أو Options
3-انتقل إلى قسم Advance
4-انقر فوق علامة التبويب Network
5-انقر على زر setting تحت عنوان الاتصال. سيتم فتح نافذة جديدة
6-حدد زر الإرسال لتهيئة proxy يدوياً :
7-أدخل localhost في خانة SOCKS Host
8-أدخل نفس رقم المنفذ من إتصال SHH؛ وفي الصورة يمكنك ان ترى فقد ادخلنا 1337، ليتناسب مع تعليمات Windows
9-انقر فوق زر OK لحفظ وإغلاق التكوين الخاص بك
الآن، افتح علامة تبويب أخرى في Firefox وابدأ في تصفح الإنترنت! يجب أن تكون اعددت كل شيء لتصفح آمن من خلال SSH tunnel الخاص بك.
للتحقق من أنك تستخدم ال proxy ، انتقل إلى إعدادات الشبكة في Firefox . وحاول إدخال رقم منفذ مختلف. انقر فوق موافق لحفظ الإعدادات. الآن إذا حاولت تصفح مواقع الإنترنت، يجب أن تحصل على رسالة خطأ الملقم الproxy يرفض إلاتصالات. هذا يثبت أن Firefox يستخدم الproxy وليس الاتصال الافتراضي فقط . عد إلى رقم المنفذ الصحيح، يجب أن تكون قادرا على التصفح مرة أخرى.
العودة إلى التصفح العادي الغير امن في Firefox:
عند الانتهاء من الحاجة إلى الاتصال المؤمن SSH tunnel ، انتقل إلى إ عدادات Networkproxy
انقر على زر الاختيار لإستخدام إعدادات proxy system ثم انقر فوق موافق. الآن سوف يتصفح Firefox عبر اعدادات الإتصال العادية الخاصة بك، والتي من المحتمل انها غير مضمونة.
إذا تم الانتهاء من استخدام ال Tunnel سيكون عليك إنهائه أيضا، والذي سنقوم بتغطيته في المقطع التالي.
إذا كنت تخطط لاستخدام tunnel في كثير من الأحيان يمكنك ترك المجال مفتوحا لاستخدامه لاحقا، ولكن لاحظ أنه قد ينتهي من تلقاء نفسه إذا بقي خاملا لفترة طويلة جدا، أو إذا وضعت جهاز الكمبيوتر على وضع sleep أو قمت بإطفائه.
إغلاق ال Tunnel :
إن إغلاق الtunnel سيوقف قدرة Firefox على التصفح عبر ال proxy .
تم إرسال ال Tunnel الدي أنشأناه في وقت سابق على الجهاز المحلي الى الخلفية، لذلك فإغلاق النافذة الطرفية المستخدمته لفتح ال Tunnel لن تغلقه.
لإغلاق ال Tunnel نحتاج إلى تحديد معرف العملية (PID) باستخدام الأمر ps ، ومن ثم انهائه باستخدام الأمر kill.
دعونا نبحث عن جميع عمليات SSH النشطة على الجهاز لدينا:
اعثر على السطر الذي يبدو كالأمر الذي أدخلته في وقت سابق لإنشاء ال Tunnel . وإلذي قد يبدو كالتالي :
من بداية السطر، في واحدة من أول عمودين، هناك رقم مكون من 3-5 . هذا هو ال PID. يتم تمييز ال PID من 14345.
الآن عليك أن تعرف ما هو PID، ويمكنك استخدام أ مر kill لجلب ال Tunnel لإسفل. استخدم PID الخاص بك عندما تنهي العملية.
الآن، إذا كنت ترغب في أتمتة عملية الاتصال، انتقل إلى الخطوة 4
إغلاق ال Tunnel سيوقف قدرة Firefox للتصفح عبر ال proxy .
أغلق نافذة PuTTY الذي استخدمتها لإنشاء ال Tunnel . هذا كل ما في الأمر !
في نظام التشغيل Windows ليس هناك طريقة سهلة لأتمتة عملية الاتصال، ولكن كل من PuTTY و Firefox يمكنهما حفظ الإعدادات التي قمت بإدخالها سابقا، لذلك قم فقط بفتح الاتصالات مجدداً لاستخدام ال Tunnel مرة أخرى.
إنشاء اختصارات للاستخدام المتكرر
لأنظمة OS X أو Linux يمكننا أن نضع إسما مستعارا أو إنشاء برنامج نصي لينشئ ال Tunnel لنا بسرعة . وفيما يلي طريقتين لأتمتة عملية ال Tunnel .
ملاحظة: هذه الطرق المختصرة على حد سواء تتطلب مصادقة مفتاحي passwordless / passphraseless SSH إلى الخادم!
Clickable BASH Script
إذا كنت تريد ايقونة لتنقر عليها نقرا مزدوجا ويبدأ ال Tunnel فقط، بإمكانك أن تنشئ BASH script للقيام بهذه المهمة.
يمكننا أن نعد ال script لينشئ ال Tunnel ويشغل Firefox ، على الرغم من أنك لا تزال بحاجة إلى إضافة إعدادات proxy يدويا في Firefox لأول مرة.
في OS X، ال Firefox binary الذي يمكننا تشغيله من سطر الأوامر هو insidefirefox.app. لنفترض أن التطبيق في مجلد التطبيقات، سيتم العثور على binary في
/Applications/Firefox.app/Contents/MacOS/firefox
في أنظمة Linux ، إذا قمت بتثبيت Firefox عن طريق ال repo أو أنه مثبت مسبقا، إذا فإن موقعه ينبغي ان يكون في
usr/bin/Firefox/.
يمكنك دائما استخدام أمر which firefox لمعرفة أين المسار على النظام الخاص بك.
في البرنامج النصي التالي استبدال الطريق الى Firefox بطريق مناسب للنظام الخاص بك.
باستخدام محرر نصوص مثل nano أنشئ ملفا جديداً :
أضف الأسطر التالية:
- استبدل 8123 مع رقم المنفذ المطلوب (يجب أن يطابق ما وضعته في فايرفوكس)
- استبدل [email protected] مع اسم المستخدم SSH الخاص بك عند اسم المضيف أو IP
- استبدل /Applications/Firefox.app/Contents/MacOS/firefox مع مسار برنامج Firefox
إجعل البرنامج النصي قابل للتنفيذ، بحيث عند النقر المزدوج عليه ، فإنه سيتم تنفيذه. من سطر الأوامر، أدخل هذا الأمر لإضافة تنفيذ الأذونات، وذلك بإستخدام مسار البرنامج النصي الخاص بك :
على OS X، قد تضطر إلى إجراء خطوة إضافية لتخبر نظام التشغيل Mac OS X أن .shfile يجب أن ينفذ كبرنامج وعدم فتحه في المحرر.
للقيام بذلك، انقر بالزر الأيمن على ملف socks5.sh وحدد الحصول على معلومات.
حدد القسم Open with : وإذا كان مثلث الكشف لا يشير إلى الأسفل ، اضغط عليه حتى تتمكن من رؤية القائمة المنسدلة. قد يتم تعيين رمز X كتطبيق افتراضي.
قم بتغييره إلى Terminal.app. إذا لم يتم سرد Terminal.app، اختر other ، ثم انتقل إلى Application > Utilities > Terminal.app.
لفتح SOCKS proxy الخاص بك الآن، فقط انقر مرتين على ملف socks.sh.
(بعد تنفيذ النص فإنه لن يتأسس بكلمة مرور، لذلك فإنه سيفشل دون سابق إذا كنت قد قمت مسبقاً بإعداد مفتاح SSH الخاص بك للمطالبة بعبارة مرور).
سيقوم البرنامج النصي بفتح نافذة طرفية، إبدأ اتصال SSH، وشغل Firefox . لا تتردد في إغلاق النافذة الطرفية. طالما أبقيت إعدادات proxy في Firefox ، يمكنك البدء في التصفح عبر اتصالك آمن .
Command-Line Alias:
إذا وجدت نفسك في سطر الأوامر في كثير من الأحيان وتريد جلب ال Tunnel ، يمكنك إنشاء اسم BASH مستعار للقيام بهذه المهمة عنك او بما يسمى alias
الجزء الاصعب من إنشاء alias هو اختيار مكان حفظه في الجهاز.
توزيعات Linux المختلفة و اصدارات OS X تحفظ alias في أماكن مختلفة. أفضل شيء هو البحث عن أحد الملفات التالية لنرى أين يجري حالياً حفظ الأسماء الأخرى. وتشمل الاحتمالات
~/.bashrc
~/.bash_aliases
~/.bash_profile
~/.profile
بمجرد العثور على الملف الصحيح، أضف alias الخاص بك في نهاية الملف
- استبدل 8123 مع رقم المنفذ المطلوب (يجب أن يطابق ما وضعته في فايرفوكس)
- استبدل [email protected] مع اسم المستخدم SSH الخاص بك عند اسم المضيف أو IP
- استبدل /Applications/Firefox.app/Contents/MacOS/firefox مع طريق Firefox الثنائي
يتم تحميل الأسماء المستعارة لخاص بك فقط عند بدء تشغيل shell جديدة ، لذلك أغلق الجلسة الطرفية وأبدأ واحدة جديدة
الآن عند كتابة:
هذا الاسم المستعار سيقوم بإعداد الTunnel الخاص بك، ثم يشغل Firefox لك ومن ثم يعود بك إلى موجه الأوامر.
تأكد ان Firefox لا يزال مضبوطا لإستخدام ال proxy . يمكنك الآن تصفح بآمان!
استكشاف الأخطاء وإصلاحها: الحصول عليها من خلال جدران الحماية “Firewalls” :
إذا كان إتصالك يعمل ، فكل شيء على ما يرام، ويمكنك الذهاب والتوقف عن القراءة.
ومع ذلك، إذا كنت قد اكتشفت أنه لا يمكنك إجراء اتصال SSH بسبب تقييد جدار الحماية، لذلك فإنه من المحتمل أن المنفذ 22، المطلوب لإنشاء Tunnel قد تم حظره.
إذا كان يمكنك التحكم في إعدادات ملقم SSH proxy (مع الوصول السريع لDigitalOcean Droplet ، ستتمكن من القيام بذلك)، يمكنك تعيين SSH للاستماع على منفذ آخر غير 22.
أي منفذ يمكنك استخدامه ولم يتم تعطيله؟
بصرف النظر عن خطة المشكوك فيها لتشغيل مسح المنفذ بأداة مثل ShieldsUP! (مشكوك به حيث ان الشبكة المحلية قد تعد هذا بمثابة هجوم)، فمن الأفضل محاولة المنافذ التي عادة ما تترك مفتوحة.
المنافذ التي غالبا ما تكون مفتوحة تشمل 80 (general Web traffic ) و 443 (SSL Web traffic ).
إذا كان خادم SSH الخاص بك لا يخدم المحتوى على شبكة الإنترنت، يمكن أن نخبر SSH ليستخدم واحد من هذه المنافذ على شبكة الإنترنت للاتصال عبره بدلا من المنفذ الافتراضي 22. 443 هو الخيار الافضل حيث من المتوقع أن حركة المرور مشفرة على هذا المنفذ، و حركة مرور SSH الخاصة بنا سيتم تشفيرها .
من موقع غير محمي بالجدار الناري، SSH في الDigitalOcean Droplet المستخدم في proxy . (أو استخدام المدمج في الوحدة من لوحة التحكم، ولكن قد لا تحتاج إلى القيام بذلك إذا كنت خائفا انه تتم مراقبة حركتك المرورية على الشبكة .)
تحرير إعدادات خادم SSH :
ابحث عن سطر port 22
يمكننا إما استبدال 22 تماما (والذي يعد تقنية جيدة لتصلب SSH على أي حال)، أو إضافة المنفذ الثاني لSSH للاستماع.
وسوف تختار أن يكون SSH المستمع على منافذ متعددة، لذلك سنقوم بإضافة خط جديد تحت port 22 الذي يقرأ port 443. وفيما يلي مثال:
أعد تشغيل SSH لتحميل تكوين SSH الذي حررته للتو .
اعتمادا على التوزيع، فإن اسم خادم SSH قد يختلف، لكن من المرجح أن تكون SSH أوSSHD . إذا كان أحدهما لا يعمل جرب الآخر.
للتحقق من أن منفذ SSH الجديد يعمل، افتح New shell (لا تغلق الحالي حتى الآن، فقط في حال علقت من غير قصد ) أثناء استخدام SSh للمنفذ الجديد.
إذا كنت ناجحا، يمكنك تسجيل الخروج الآن من كلا ال shells وفتح SSH tunnel باستخدام المنفذ الجديد
ssh -D 8123 -f -C -q -N sammy @ example. com -p 443
سوف تكون إعدادات Firefox بالضبط نفسها لأنها لا تعتمد على منفذ SSH، تعتمد على منفذ الTunnel اعلاه(8123) .
الخاتمة:
افتح SOCKS 5 tunnel لتصفح آمن عبر SSH tunnel كلما كنت بحاجة إلى وسيلة سريعة للوصول إلى شبكة الإنترنت في مأمن من المتطفلين.
ترجمة لمقال : How To Route Web Traffic Securely Without a VPN Using a SOCKS Tunnel لصاحبها Michael Holley
اقرأ ايضا مقال : هل نحن حقاً بحاجة الى استخدام اتصال VPN