أتطرق بتدويناتي عن SSH، وكيف إنك تستطيع تتحكم بالموقع الخاص فيك عن طريقه أو كيف إنك تنقل وترفع الملفات من موقعك أو العكس عن طريقه.
إرجع للتدوينة “أساسيات التحكم بمواقع الويب عن طريق SSH” لأجل تعرف كيف تتحكم بالموقع الخاص فيك عن طريق SSH، وأيضاً إرجع للتدوينة “لتفادي إختراق موقعك، توقف عن إستخدام FTP” لتعرف كيف ترفع مستوى أمن موقعك بتوقفك عن إستخدام FTP في نقل الملفات.
جاء في بالي أذكر وظائف إخرى لـ SSH غير نقل الملفات والتحكم بالخادم، وإن شاء الله هذا هو محور تدوينتي.
قبل ما أسترسل، أحب أوضح ماهيه SSH للأشخاص الغير مطلعين عليها.
بكل بساطة، SSH هو برتوكول أمن للتعامل مع الأجهزة والخوادم عن طريق الشبكة. وبشكل أوضح وأسهل، تعرف “إتصال سطح مكتب بعيد Remote Desktop Connection” في ويندوز؟ هو “نفس فكرة” SSH، وليس “نفس” SSH :).
نستعرض بعض وظائف SSH:
الوظيفة الأولى:- التحكم بالخوادم، مثل التحكم الكامل بخوادم الويب، إرجع لتدوينة “أساسيات التحكم بمواقع الويب عن طريق SSH“.
الوظيفة الثانية:- نقل ورفع الملفات من جهازك إلى الخادم والعكس، إرجع لتدوينة “لتفادي إختراق موقعك، توقف عن إستخدام FTP“.
الوظيفة الثالثة:- تجاوز الحماية، وبشكل أصح، إستخدام SSH كـ”بروكسي Proxy”:
فكرتها:
إنك تتصل بالخادم المزود لخدمة SSH، ومن ثم تنشىء لك “قناة Tunnel” مشفرة بينك وبين الخادم، وبعد إنشاء هذة القناة، تقدر تستخدمها كبروكسي “وبشكل أصح Socks” لتتصفح الإنترنت عن طريق هذة القناة المشفرة.
التنفيذ -في جهازك- :
$ssh -ND 7000 sshuser@server.com
ssh: تشغيل برنامج ssh.
-N: هذا الخيار راح يفيدك بأنه فقط يفتح لك إتصال مع الخادم لأجل إنشاء قناة فقط، وبدونه راح يفتح لك Console أو شاشة لأجل تنفذ فيها أوامر الخادم.
D: هذا خيار تحديد IP والمنفذ اللي راح تشتغل عليه هذة القناة، وبما إننا راح نستخدم IP الجهاز الحالي، يمكنك تجاهل كتابة الـ IP.
7000: هذا المنفذ اللي راح يتم فتحه في جهازك ﻷجل تشتغل عليه القناة، وهذا هو اللي راح نستخدمه كمنفذ للبروكسي الخاص فينا.
وبشكل علمي، أي Packet أو حزمة معلومات توصل للمنفذ هذا، راح يتم إعادة إرسالها -Packet Forward- إلى خادم SSH.
sshuser@server.com: هذا أسم مستخدم خادم الـ SSH الخاص فيك.
بعد تنفيذك للأمر، راح يطلب منك كلمة المرور الخاصة بالخادم – في حالة إعداد الخادم لقبول كلمات المرور وليس المفاتيح العامة-.
وعند صحة الإدخال، تستطيع إنك تعدل إعدادت متصفح الإنترنت الخاص فيك – لنفترض متصفح فايرفوكس-، لأجل يستخدم Socks ، والخيارات بتكون بالشكل التالي:
Socks Host= 127.0.0.1
port= 7000
ومبروك عليك التصفح المفتوح والأهم من هذا، الأمن :).
أستخدم فكرة Socks هذي بشكل كبير في الأماكن العامة، لأجل أتفادى سرقة معلوماتي.
الوظيفة الرابعة: Port Forward (إعادة تحويل حزم المعلومات)
الوظيفة هذي ممتعة ومفيدة، وهي إنك تتصفح موقع أو تنفذ خدمة في جهازك، وهي في الأساس موجودة على سيرفر خارجي يبعد عنك الأف الأمتار!
فكرتها:
عندي مجموعة من الخوادم الخارجية، ومثبت عليها قواعد بيانات MySQL، وفي جهازي الشخصي، عندي PHPMyAdmin، وأحتاج أدير جميع هذة قواعد البيانات بشكل أمن، كيف؟
التنفيذ – في جهازك -:
أبفترض إن الخادم الأول إسمه server01.jerais.com، والثاني اسمه server02.jerais.com، وجميعهم عليهم قواعد بيانات MySQL.
نتصل بالخادم الأول:
$ssh -NL 33061:localhost:3306 user01@server01.jerais.com
ssh: تشغيل برنامج ssh.
-N: هذا الخيار راح يفيدك بأنه فقط يفتح لك إتصال مع الخادم لأجل إنشاء قناة فقط، وبدونه راح يفتح لك Console أو شاشة لأجل تنفذ فيها أوامر الخادم.
-L: من كلمة local، أو محلي، والمقصد إننا راح ننفذ الـ Port Forward محلياً، وليس على الخادم.
33061: منفذ راح يتم فتحه في جهازك الشخصي، وأي packet تصل إليه راح يتم إعادة إرسالها -Forward- إلى المنفذ 3306 على الخادم (منفذ 3306 هو المنفذ الإفتراضي لقواعد بيانات MySQL).
localhost: هذي المقصود فيها ليس جهازك الشخصي، لكن بعد الإتصال بالخادم راح يتم تحويل جميع الإتصالات على المنفذ 3306 الخاص بقاعدة البيانات إلى localhost:3306 – في هذة الحالة، الخادم-، المتصل أساساً بجهازك الشخصي من خلال المنفذ 33061.
user01@server01.jerais.com: هذا أسم مستخدم خادم الـ SSH الخاص فيك.
بعد نجاح الإتصال، الآن تستطيع تشغيل PHPMyAdmin وتضع معلومات الخادم بالشكل التالي:
الخادم: localhost
المنفذ: 33061
ثم تضع معلومات اسم المستخدم وكلمة المرور الخاصين بالخادم الخارجي.
إنتهينا، الآن تتعامل مع قواعد البيانات في الخوادم بشكل آمن عن طريق PHPMyadmin الموجودة في جهازك.
وأيضاً تستطيع تتصل بقاعدة البيانات بدون PHPMyAdmin، عن طريق الأمر mysql
$mysql -P 33061 -u Username -pPassword
نقاط:
- تحتاج صلاحية المستخدم الجذري رووت لأجل تفتح منفذ رقمه أقل من 1024
- تذكر إن البيانات تخرج من جهازك إلى الخادم مؤمنة ومشفرة عن طريق SSH، لكنها غير مشفرة بعد أن تخرج من الخادم إلى غير جهازك.
- شرحت فكرة إستخدم البروكسي لغرض تعليمي فقط، وليس لكسر البروكسي أو غيره، أتمنى إستخدامه بما يرضي الله
- تستطلع تتفادى إستغلال خادمك لأجل أعادة إرسال الحزم كما بالأعلى كتالي:
حرر الملف
/etc/ssh/sshd_config
وأضف الخيار
AllowTcpForwarding no
ثم أعد تشغيل SSH
لينكس
/etc/init.d/sshd restart
FreeBSD
/etc/rc.d/sshd restart

لطالما حيرتني الطريقة التي من المفترض أن تجعل خاصية forwarding تصفح المواقع بشكل سري و آمن من المراقبة.
أعتقد أن خادم ssh يجب أن بكون على حاسوب آخر (خارج شبكتي يقوم بدور مشابه للوسيط) و من ثم يقوم حاسوبي بالإتصال به، و بذلك لن يعلم مزود الخدمة أين أكمل تصفحي رحلته بعد الإتصالي الأول. أليس كذلك؟
بالنسبة لطريقة فتح بورت فى سيرفر mysql لكي تتصل به فاعتقد ان الفكره جميله والفكره بها هي عملية secutiry , اقصد ان ماتضمنه هنا هو ان اتصالك مشفر تماما مع سيرفر mysql
لكن هناك سؤال , ماذا لو كان الجدار النارى نشط على السيرفر وفى الغالب يكون مضبوط على الايقبل اتصالات خارجية على ارقام المنافذ التي لاتستخدم , هل ستفتح البوت ؟
الامر يشبه شكبات TOR تقريبا لكنه اكثر اماننا هنا
@محمد البردعي،
“أعتقد أن خادم ssh يجب أن بكون على حاسوب آخر (خارج شبكتي يقوم بدور مشابه للوسيط) و من ثم يقوم حاسوبي بالإتصال به، و بذلك لن يعلم مزود الخدمة أين أكمل تصفحي رحلته بعد الإتصالي الأول. أليس كذلك؟”
صحيح، لكن حط في بالك إن إذا كان الحاسوب (الوسيط) موجود في شبكة مزود الخدمة الخاص فيك، راح يقدر مزود الخدمة إنه يعرف أيش تتصفح.
لأنه أول ما توصل البيانات إلى الوسيط، راح يتم تشفيرها، ثم راح تنقل من جديد إلى خارج الوسيط بإتجاه الموقع المطلوب مثلاً.
عشان كذا حاول يكون الوسيط جهاز خارج نطاق شبكة مزود الخدمة الخاص فيك.
@ahmed-araby ,
“ماذا لو كان الجدار النارى نشط على السيرفر وفى الغالب يكون مضبوط على الايقبل اتصالات خارجية على ارقام المنافذ التي لاتستخدم , هل ستفتح البوت ؟”
اساساً إنت ما تفتح بورت جديد، إنت تستخدم SSH بإتصالك مع السيرفر، وSSH هي بنفسها تسوي عملية الـ Forward لإتصالك بقواعد البيانات، يعني حتى لو كانت مثلاً MySQL ما تستقبل اي إتصال خارجي، يعني موجود جدار ناري يمنع الإتصالات الخارجية الواردة لها، راح تظل تستطيع إنك تتصل بقواعد البيانات عن طريق الـ SSH.
بالمختصر المفيد، فقط SSH هو اللي يكون مسموح بالجدار الناري، والباقي مقفل عليه
دائماً رائع يا جريس موضوع مميز حقيقة فادني كثيراً وفي إنتظار الجديد
وعذراً على الإنقطاع الطويل مني لمدونتك ولكن أنت تعرف الوضع ههههههههههه
دائماً تبهرني بجديدك يا رهيب
الله يعطيك العافيه
بصراحه مدونه رائعه
وهذه اول زياره لي لمدونتك ولن تكون الاخيره
وبإذن الله سأكون من المتابعين لكتاباتك
الله يوفقكم
تحياتي