كيفية توجيه حركة مرور الويب بشكل آمن بدون VPN باستخدام نفق SOCKS


إبراهيم محمد

أحيانًا تكون على شبكة غير آمنة أو لديها جدار ناري يملك قيودًا مُفرطة، وتحتاج الوصول إلى موقع على شبكة الإنترنت. تريد أن تتأكد أنه لا أحد في المنتصف يشاهد البيانات المارة.

أحد الحلول هو استخدام VPN، ولكن يتطلب VPN برنامج عميل خاص على حاسوبك، وقد لا يكون لك صلاحيات اللازمة لتثبيته.

إذا كان كل ما تريد تأمينه هو متصفح الويب الخاص بك، فهناك بديل بسيط: نفق وسيط SOCKS 5.

socks-proxy-firefox.png

وسيط SOCKS هو بالأساس نفق SSH حيث توّجه تطبيقات مُحدّدة دفق بياناتها خلال النفق إلى الخادوم، ثمّ على الخادوم، يقوم الوسيط (Proxy) بإعادة توجيه دفق البيانات إلى شبكة الإنترنت. على عكس VPN، يجب أن يتم ضبط وسيط SOCKS لكل تطبيق على حدة في حاسوب العميل، ولكن يُمكن إعداده بدون أي وكلاء عميل متخصصة.

طالما لديك خادوم بوصول SSH، فيمكن استخدامه كوسيط SOCKS. سنستخدم خادوم أوبنتو 14.04 كالوسيط، ومتصفح فَيرفُكس كتطبيق العميل. وعندما ننتهي ينبغي أن تكون قادرًا على تصفح المواقع بشكلٍ آمن عبر النفق.

المتطلبات

كما ذُكر بالأعلى، أول شيء نحتاجه هو خادوم يعمل بأي توزيعة لينكس، مثل أوبنتو 14.04، بوصول SSH.

  • أنشئ خادوما (هذا المثال يستخدم أوبنتو 14.04)

مطلوب تثبيت بعض البرمجيات على حاسوبك المحلي. لهذا ستحتاج أن تُنزل برنامجًا أو اثنين.

يُمَكننا فَيرفُكس من إعداد الوسيط لفَيرفُكس فقط بدلًا من إعداد الوسيط لكامل النظام.

يُستخدم PuTTY لإعداد نفق الوسيط لمستخدمي ويندوز. لدى مستخدمي Mac OS X أو لينكس الأدوات اللازمة لإعداد النفق مُثبتة مسبقًا.

الخطوة الأولى (Mac OS X/لينكس) - إعداد النفق

أنشئ مفتاح SSH على حاسوبك المحلي. إذا كان لديك مفتاح SSH، فيمكنك استخدامه.

على الرغم من أن تحديد كلمة مرور لمفتاح SSH هي عادة جيدة، سنترك كلمة المرور فارغة الآن لنتجنب مشاكل لاحقة.

وأنت تَعُدّ المفتاح، تأكد أن تُضيفه للمفاتيح المخولة لمستخدم sudo على الخادوم (في هذا المثال، هذا هو المستخدم sammy).

افتح برنامج الطرفية على حاسوبك. على Mac OS X، تجد الطرفية Terminal في Applications > Utilities.

أنشئ النفق بهذا الأمر:

$ ssh -D 8123 -f -C -q -N sammy@example.com

شرح المعاملات

  • D-: يُخبر SSH بأننا نريد نفق SOCKS على رقم المنفذ المُحدد (اختر رقم بين 1025-65536)
  • f-: يضع العملية في الخلفية
  • C-: يضغط البيانات قبل إرسالها
  • q-: يستخدم الوضع الصامت
  • N-: يُخبر SSH بأنه لا يوجد أي أمر سيُرسَل بمجرد فتح النفق

تأكد من استبدال sammy@example.com بمستخدم sudo الخاص بك وعنوان IP أو اسم نطاق الخادوم.

بمجرد أن تُدخل الأمر، ستعود إلى مِحث سطر الأوامر مرة أخرى بدون أي إشارة على النجاح أو الفشل؛ هذا طبيعي.

تحقق من أن النفق يعمل بالأمر:

$ ps aux | grep ssh

ينبغي أن ترى سطرًا في المُخرجات مثل: 

sammy    14345   0.0  0.0  2462228    452   ??  Ss    6:43AM   0:00.00 ssh -D 8123 -f -C -q -N sammy@example.com

يمكنك إغلاق تطبيق الطرفية وسيظل النفق يعمل. هذا لأننا استخدمنا الخيار f- الذي يضع جلسة SSH في الخلفية.

ملاحظة: إذا أردت أن تُنهى النفق سيتوجب عليك معرفة PID الجلسة عبر ps واستخدام الأمر kill، وهذا ما سنُريك كيفية القيام به لاحقًا.

الخطوة الأولى (ويندوز) - إعداد النفق

افتح PuTTY. إذا لم تُثبته بعد، نزل PuTTY واحفظه بالمكان الذي تُحب. لا يحتاج PuTTY صلاحيات المُدير لتثبيته؛ حمل الملف التنفيذي exe. وشغلهُ فقط.

أكمل الخطوات التالية لإعداد النفق:

  1. من قسم Session، أضف اسم مُضيف (أو عنوان IP) Host Name (or IP address) خادومك، ومنفذ Port SSH (عادة يكون المنفذ رقم 22)

    putty001.png

  2. على الجانب الأيسر، انتقل إلى: Connection > SSH > Tunnels

  3. ادخل رقم أي منفذ مصدري source port بين 1025-65536. استخدمنا في هذا المثال المنفذ رقم 1337

    putty002.png

  4. اختر Dynamic
  5. اضغط Add
  6. ارجع إلى Session على الجانب الأيسر.
  7. اضف اسم اسفل Saved Sessions واضغط زر Save
  8. الآن اضغط Open لتفتح الاتصال
  9. ادخل اسم مُستخدم sudo وكلمة سر الخادوم للدخول.

يمكنك تصغير نافذة PuTTY الآن، لكن لا تُغلقها. ينبغي أن يفتح اتصال SSH.

تلميحة: يمكنك حفظ اسم مُستخدم sudo ومفتاح SSH للجلسة الحالية باتباع تعليمات مفتاح SSH الخاص ببرنامج PuTTY. وهكذا لن تَضطرّ إلى إدخال اسم المُستخدم وكلمة السر كل مرة تفتح الاتصال.

الخطوة الثانية - ضبط متصفح فَيرفُكس Firefox ليستخدم النفق

الآن بما أنه أصبح لدينا نفق SSH، فقد حان الوقت لضبط فَيرفُكس ليستخدم هذا النفق. تذكر لكي يعمل نفق SOCKS 5، يجب أن تستخدم تطبيق محلي يُمكنهُ استغلال النفق؛ فَيرفُكس يقوم بهذا.

هذه الخطوة متشابهة لمُستخدمي ويندوز، Mac OS X ولينكس.

تأكد أن لديك رقم المنفذ الذي استخدمته في أمر SSH أو في PuTTY. لقد استخدمنا 8123 في مثال OS X / لينكس و 1337 في مثال ويندوز حتى الآن، أو قد تكون استخدمت منفذًا مُختلفًا.

نُفذَت الخطوات التالية على نُسخة فَيرفُكس 39 وينبغي أن تعمل على النُسخ الأخرى، على الرغم من احتمال اختلاف أماكن الخيارات.

  • اضغط على أيقونة الهامبرجر في أعلى الركن الأيمن للوصول إلى قائمة فَيرفُكس:

    firefox003.png

  • اضغط على أيقونة Preferences أو Options
  • انتقل لقسم Advanced
  • اضغط على تبويب Network

firefox004.png

  • اضغط على Settings أسفل العنوان Connection. ستفتح نافذة جديدة.
  • اختر Manual proxy configuration:

firefox005.png

  • اكتب localhost أمام SOCKS HOST
  • ادخل نفس رقم المنفذ Port من اتصال SSH الخاص بك؛ ترى في الصورة أننا أدخلنا 1337 ليُطابق تعليمات ويندوز.
  • اضغط OK لحفظ وإغلاق ضبطك.

الآن، افتح تبويبًا آخر في فَيرفُكس وتصفح الإنترنت. ينبغي أن يكون كل شيء جاهز للتصفح الآمن عبر نفق SSH الخاصة بك.

اختياري: لتتأكد أنك تستخدم الوسيط، ارجع إلى إعدادات الشبكة Network في فَيرفُكس. أدخل رقم منفذ مُختلف. اضغط OK لحفظ الإعدادات. الآن إذا جربت تصفح الإنترنت، ينبغي أن ترى رسالة الخطأ The proxy server is refusing connections. هذا يؤكد أن فَيرفُكس يستخدم الوسيط وليس الاتصال الافتراضي. عُد إلى رقم المنفذ الصحيح، وينغي أن تكون قادر على التصفح مرة أخرى.

العودة إلى التصفح العادي غير الآمن في فَيرفُكس

عندما تنتهي حاجتك لخصوصية نفق SSH، ارجع إلى إعدادات وسيط الشبكة (Preferences > Advanced > Network > Settings) في فَيرفُكس.

اختر Use system proxy settings واضغط OK. سيستخدم فَيرفُكس الآن إعدادات اتصالك العادي، ومن المرجح أن يكون غير آمن.

إذا انتهيت من استخدام النفق يجب أن تُغلق النفق أيضًا، وهذا ما سنُغطيه في الخطوة التالية.

إذا كنت تنوي استخدام النفق كثيرًا، فاتركه مفتوحًا للاستخدام لاحقًا، لكن لاحظ أنه قد يُغلق من تلقاء نفسه إذا بقي خاملًا (غير مُستخدم) لمدة طويلة، أو إذا سَكَن (sleep) حاسوبك.

الخطوة الثالثة (Mac OS X/لينكس) - إغلاق النفق

سيوقف إغلاق النفق قدرة فَيرفُكس على التصفح بالوسيط. أُرسل النفق الذي أنشأناه سابقًا على حاسوبنا المحلي إلى الخلفية، لذا لن يُنهيه إغلاق نافذة الطرفية التي استخدمناها لفتح النفق.

لإنهاء النفق نحتاج أن نُحدد مُعَرف العملية (PID) باستخدام الأمر ps، ثم قتله باستخدام الأمر kill.

فلنبحث عن كل عمليات ssh على حاسوبنا:

$ ps aux | grep ssh

جد السطر الذي يبدو كالأمر الذي أدخلته سابقًا لإنشاء النفق. هذا مثال على المخرجات:

sammy    14345   0.0  0.0  2462228    452   ??  Ss    6:43AM   0:00.00 ssh -D 8123 -f -C -q -N sammy@example.com

من بداية السطر، في واحد من العمودين الأولين، هناك رقم مكون من ثلاثة إلى خمسة أعداد. هذا هو رقم PID. وفي المخرجات السابقة هو الرقم 14345.

بعد أن عرفنا رقم PID، يُمكننا استخدام الأمر kill لنُغلق النفق. استخدم رقم PID الخاص بك عندما تقتل العملية.

$ sudo kill 14345

إذا أردت أتمتت عملية الاتصال، اذهب للخطوة الرابعة.

الخطوة الثالثة (ويندوز) - إغلاق النفق

سيوقف إغلاق النفق قدرة فَيرفُكس على التصفح بالوسيط. اغلق نافذة PuTTY التي استخدمتها لإنشاء النفق فقط.

لا يوجد في ويندوز طريقة سهلة لأتمتة عملية الاتصال، لكن PuTTY وفَيرفُكس يمكنهما حفظ الإعدادات التي أدخلتها سابقًا، لذا افتح الاتصالات فقط مرة أخرى لتستخدم النفق مجددًا.

الخطوة الرابعة (Mac OS X/لينكس) - إنشاء اختصارات للاستخدام المتكرر

يمكننا إنشاء أمر بديل أو سكربت في أنظمة لينكس أو OS X لكي يُنشئ النفق سريعًا من اجلنا. سنعرض طريقتين لأتمتة عملية إنشاء النفق.

ملاحظة: طريقتي الاختصار كلاهما تَتَطلبان مفتاح SSH بلا كلمة سر للوصول إلى الخادوم.

1. سكربت BASH قابل للنقر

إذا أردت أيقونة لتضغط عليها مرتين فيبدأ النفق، يمكن أن نُنشئ سكربت BASH بسيط للقيام بهذه المهمة.

سنجعل السكربت يقوم بإعداد النفق وتشغيل فَيرفُكس، على الرغم من أنك ستظل في حاجة إلى إضافة إعدادات الوسيط يدويًا بالمرة الأولى في فَيرفُكس.

ملف فَيرفُكس الثُنائي على OS X الذي يمكننا تشغيله من سطر الأوامر هو داخل Firefox.app. بافتراض أن التطبيق في مُجلّد التطبيقات Applications، سنجد الملف الثُنائي في Applications/Firefox.app/Contents/MacOS/firefox/.

على أنظمة لينكس، إذا ثبتّت فَيرفُكس عبر مستودع أو كان مُثبت مسبقًا، فينبغي أن تجده في usr/bin/firefox/. يمكنك دائمًا استخدام الأمر which firefox لمعرفة موقعه على نظامك.

استبدل في السكربت الذي بالأسفل مسار فَيرفُكس بالمسار المناسب لنظامك. باستخدام مُحرر نصوص مثل nano أنشئ ملف جديد:

$ nano ~/socks5.sh

وأضف السطور التالية إليه:

#!/bin/bash
ssh -D 8123 -f -C -q -N sammy@example.com
/Applications/Firefox.app/Contents/MacOS/firefox &
  • استبدل 8123 برقم المنفذ الذي تريده، يجب أن يُطابق ما وضعته في فَيرفُكس
  • استبدل sammy@example.com بمُستخدم SSH الخاص بك واسم المُضيف أو عنوان IP
  • استبدل Applications/Firefox.app/Contents/MacOS/firefox/ بمسار ملف فَيرفُكس الثُنائي

احفظ السكربت. تقوم بهذا في nano بالضغط على Ctrl-o، ثم اخرج بالضغط على Ctrl-x.

اجعل السكربت قابلًا للتنفيذ، لكي يتم تنفيذه عندما تضغط عليه مرتين. ادخل هذا الأمر في سطر الأوامر لتُضيف صلاحيات التنفيذ، باستخدام مسار السكربت الخاص بك:

$ chmod +x /path/to/socks5.sh

قد تحتاج في OS X القيام بخطوات إضافية لتُخبر Mac OS X أن ملف بلاحقة .sh يجب أن يُنَفَذ كبرنامج وألا يتم فتحه في مُحرر.

لتقوم بهذا، اضغط بزر الفأرة الأيمن على ملف socks5.sh واختر Get Info. جد القسم Open with: وإذا لم يُشر سهم الكشف إلى الأسفل، اضغط عليه لكي ترى القائمة المُندسلة. قد تجد Xcode مضبوطًا كالتطبيق الافتراضي.

socks5_info006.png

غيره إلى Terminal.app. إذا لم تجد Terminal.app بالقائمة، اختر Other، ثم انتقل إلى Applications > Utilities > Terminal.app.

اضغط مرتين على ملف socks.sh لتفتح وسيط SOCKS الخاص بك الآن.

ملاحظة: بعد التنفيذ، لن يطلب السكربت كلمة سر، ولذلك سيفشل بصمت إذا أعددت مفتاح SSH مُسبقًا ليطلب كلمة مرور.

سوف يفتح السكربت نافذة الطرفية، يبدأ اتصال SSH ويُشغل فَيرفُكس. لا تخش من إغلاق نافذة الطرفية. يمكنك الآن أن تبدأ التصفح في اتصالك الآمن، طالما أنك تحتفظ بإعدادات الوسيط في فَيرفُكس.

2. إنشاء Alias

إذا وجدت أنك تستخدم سطر الأوامر كثيرًا وتُريد تشغيل النفق، يمكنك إنشاء Alias ليقوم بالمهمة من أجلك.

الجزء الأصعب في إنشاء Alias هو أين تحفظه. تحفظ توزيعات لينكس وإصدارات OS X المختلفة الـ aliases في أماكن مختلفة. أفضل طريقة هي البحث عن أحد الملفات التالية وتبحث بداخله عن الكلمة alias لترى أين تُحفظ الأوامر البديلة الأخرى حاليًا.

~/.bashrc
~/.bash_aliases
~/.bash_profile
~/.profile

بمجرد إيجاد الملف الصحيح، أضف هذا السطر التّالي أسفل Aliases موجودة لديك، أو فقط بنهاية الملف. 

alias socks5=’ssh -D 8123 -f -C -q -N sammy@example.com && /Applications/Firefox.app/Contents/MacOS/firefox &’
  • استبدل 8123 برقم المنفذ الذي تريده، يجب أن يُطابق ما وضعته في فَيرفُكس
  • استبدل sammy@example.com بمُستخدم SSH الخاص بك واسم المُضيف أو عنوان IP
  • استبدل Applications/Firefox.app/Contents/MacOS/firefox/ بمسار ملف فَيرفُكس الثُنائي

يتم تحميل الـ aliases فقط عندما تبدأ صدفة جديدة، لذا أغلق جلسة طرفيتك وابدأ واحدة جديدة.

الآن عندما تكتب:

$ socks5

هذا الأمر يقوم بإنشاء نفقك، ثم يُشغل فَيرفُكس ويُعيدك إلى مِحث الأوامر. تأكد أن فَيرفُكس مضبوط ليستخدم الوسيط (proxy). يمكنك الآن التصفح بشكلٍ آمن.

الخطوة الخامسة (اختياري) - استكشاف الأخطاء وإصلاحها: المرور عبر الجدران النارية

إذا كان اتصالك يعمل، فلا حاجة لك لقراءة هذا القسم.

ومع ذلك، إذا اكتشفت أنه لا يمكنك إنشاء اتصال SSH بسبب جدار ناري تقييدي، فالمرجح أن المنفذ 22، وهو المطلوب لإنشاء النفق، محجوب.

إذا كان بإمكانك التحكم في إعدادات خادوم وسيط SSH، يمكنك إعداد SSH للإنصات إلى منفذ آخر غير 22. ما المنفذ غير المحجوب الذي يمكنك استخدامه؟

بجانب الخطة المشكوك بها لفحص المنافذ باستخدام أداة مثل ShieldsUP، مشكوك بها لأن شبكتك المحلية قد تُفسر هذا كهجوم، فالأفضل تجربة منافذ تُترك مفتوحة عادة. المنافذ المتروكة مفتوحة عادةً تكون 80 (لحركة مرور الويب العامة) و 443 (لحركة مرور SSL).

إذا لم يكن خادوم SSH الخاص بك يخدم محتوى ويب، يمكننا أن نخبر SSH ليستخدم أحد هذين المنفذين ليتصل عبره بدلا من المنفذ الافتراضي 22. المنفذ 433 هو أفضل اختيار لأنه مُتَوقع أن يكون هناك حركة مرور مُشفرة على هذا المنفذ، وحركة مرور SSH الخاصة بنا ستكون مُشفرة.

ابدأ اتصال SSH لخادومك من مكان غير محمي بجدار ناري، ثم حرّر ملف إعدادات SSH:

$ sudo nano /etc/ssh/sshd_config

ابحث عن السطر Port 22. يمكننا إما استبدال 22 كُليًا، وهي فكرة جيدة لزيادة أمان SSH، أو إضافة منفذ آخر ليُنصت SSH إليه.

سنختار انصات SSH إلى منافذ متعددة، لذا سنُضيف سطر جديد أسفل Port 22 الذي يُقرأ Port 443. وإليك مثال لملف sshd_config:

...
Port 22
Port 443
...

أعد تشغيل SSH لكي يُعيد تحميل ضبط SSH الذي أدخلته. قد يختلف اسم عفريت خادوم SSH بالاعتماد على توزيعتك، لكن من المرجح أن يكون اسمه ssh أو sshd. إذا لم يعمل أحدهما جرّب الآخر.

$ sudo service ssh restart

لتتحقق من أن منفذ SSH يعمل، افتح صدفة جديدة، لا تُغلق الجلسة الحالية بعد، فقد تحتاجها في حالة أغلقت الباب على نفسك وأنت خارج الخادوم بدون قصد، وابدأ اتصال SSH باستخدام المنفذ الجديد.

$ ssh sammy@example.com -p 443

إذا نجحت بالاتصال، فيُمكنك الخروج الآن من الصدفتين وفتح نفق SSH باستخدام المنفذ الجديد.

$ ssh -D 8123 -f -C -q -N sammy@example.com -p 443

ستكون إعدادات فَيرفُكس هي نفسها لأنه لا يعتمد على منفذ SSH، وإنما منفذ النفق (8123 كما بالأمر السابق).

خاتمة

افتح نفق SOCKS 5 للتصفح من خلال نفق SSH آمن كلما أردت طريقة خفيفة للوصول للويب بمأمن من أعين المُتطفلين.

ترجمة -وبتصرّف- للمقال How To Route Web Traffic Securely Without a VPN Using a SOCKS Tunnel لصاحبه Michael Holley.





تفاعل الأعضاء


لا توجد أيّة تعليقات بعد



يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن