صفحات ذات صلة
سحابة الكلمات الدلالية
المواضيع الأخيرة
نوفمبر 2024
الإثنين | الثلاثاء | الأربعاء | الخميس | الجمعة | السبت | الأحد |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 |
آخر الأخبار (شبكة كود الحقيقة )
المواضيع الأكثر شعبية
كيفية إستعمال SSH و التعرف عليها؟ وطرق عمل Harden لها
صفحة 1 من اصل 1
كيفية إستعمال SSH و التعرف عليها؟ وطرق عمل Harden لها
السلام عليكم
أعلم يوجد ربما مواضيع كثيرة تحدثت عن الـ SSH لكن إن شاء الله بعد قراءة الموضوع هذا في شبكة كود الحقيقة أنا متأكد ستجدون أمور أخرى تضاف لمعلوماتكم حول هذه الخدمة الرائعة بكل معنى الكلمة ... بالبداية لمن لا يعرف ما هو الـ SSH فهو إختصار لكلمة Secure SHell ... تم عمل هذه الخدمة من أجل إستبدال الخدمة السابقة telnet والتي يتم إرسال البيانات بين المستخدم والسيرفر بشكل مكشوف أي Clear Text ... يعني الكلمة السرية والبيانات المارة بينك وبين الجهة المتصل بها كلها عبارة عن كتابة مكشوفة يمكن لأي شخص أن يعمل مراقبة على هذه البيانات من خلال برامج الـ SNIFFING وبرامج مراقبة البيانات مثل Wireshark ... خدمة SSH أستبدلت هذه الطريقة بطريقة أكثر قوة من خلال تشفير جميع البيانات المارة بينك وبين السيرفر وبطرق تشفير قوية للغاية منها: AES (Advanced Encryption Scheme), Triple DES, Blowfish وغيرها من الطرق القوية ...
أنظر الصورة رقم 1 (الاتصال بالطريقة السابقة، طريقة telnet)
أنظر الصورة رقم 2 (الاتصال بالطريقة الجديدة المشفرة، طريقة ssh)
خدمة SSH تدعم طرق توثيق Authentication مختلفة:
اولاً: Host-Key Authentication
وهذه هي الطريقة السائدة عند الجميع وتعمل من خلال إستخدامك أسم مستخدم وكلمته السرية على السيرفر للإتصال بذلك السيرفر. أي ستقوم بالإتصال من خلال إستعمال أسم مستخدم مثلاً binary وتستعمل الكلمة السرية للمستخدم هذا للدخول الى السيرفر. ويقوم المفتاح الخاص بجهازك Host-Key بتشفير الخط بينك وبين السيرفر. طبعاً أعلم بإن الكثيرين من أصحاب السيرفرات خاصة يستعملون هذه الطريقة رغم إنها طريقة عادية ويوجد الأقوى منها (سنرى من خلال الشرح) وأيضاً المستخدمين يستعملونها ربما لعدم معرفتهم بغيرها.
ثانياً: Public-Key Authentication
بدل من إستخدامك لمستخدم وكلمته السرية على السيرفر للإتصال به، نقوم بإستعمال مفتاح خاص بك للإتصال بالسيرفر من خلال هذا المفتاح. ويكون للمفتاح كلمة مرورPassphrase. ستقوم بعمل مفتاحين واحد عام Public والآخر خاص Private كل ما عليك هو وضع المفتاح العام على السيرفر المراد الإتصال به مع الإحتفاظ بالمفتاح الخاص وعدم جعل احد يصل له. هذه الطريقة هي أفضل طريقة بصراحة ولكن تحتاج الى القليل من العمل من طرفك ليتم عملها بالشكل الصحيح، على العموم لا تقلق موضوعي يستهدف هذه الطريقة بالتحديد فتابع القراءة فقط.
ثالثاً: Passphrase-Less Authentication
هذه الطريقة هي نفس الطريقة السابقة ولكن فقط لا نقوم بوضع Passphrase على المفتاح الذي نقوم بعمله والسبب في ذلك هو لكي يتم إستخدام في العمليات الأوتوماتيكية Automated أو في السكربتات أو في وظائف الـ cron. لكن عيب هذه الطريقة هي في حالة حصل احدهم على المفتاح الخاص بك، يصبح بإمكانه عمل كل ما يريد في السيرفر.
الآن ربما تتسائل كيف أقوم بتركيب SSH ؟ أقول لا تقلق حسب ما قرأة بإنه من بعد عام 2002 أصبحت الخدمة تاتي جاهزة مع جميع التوزيعات تقريباً خاصة المعروفة منهاCentOS، Fedora، Debian، Ubuntu، Slackware الى آخره.
طيب لنقوم بتشغيل الخدمة في البداية:
على توزيعات مثل CentOS و Fedora وأعجوبة طبعاً نفذ:كود:
[ltr]/etc/init.d/sshd start[/ltr]
الخيارات المتاحة لك هي:كود:
[ltr]/etc/init.d/sshd {start|stop|restart|reload|condrestart|status}[/ltr]
أما بخصوص توزيعات الدبيان وأوبنتو نفذ:كود:والخيارات المتاحة مختلفة بعض الشيء:
[ltr]/etc/init.d/ssh start[/ltr]كود:
[ltr]/etc/init.d/ssh {start|stop|reload|force-reload|restart|try-restart}[/ltr]
ذكرت الخيارات لكم لاننا سنحتاج في الكثير من الأحيان في هذا الموضوع الى عمل إما restart أو الطريقة المفضلة لي هي reload وسنرى الفرق قريباً. تابع معي الله يسعدك عزيزي القاريء
الآن الخدمة تم تشغيلها والأمور كلها تمام على السيرفر ... الحين من جهاز آخر قم بعمل إتصال على السيرفر. الطريقة العامة هي:كود:
[ltr]ssh username@ip/domain[/ltr]
لنعمل تجربة:كود:
[ltr]ssh binary@5.5.5.5[/ltr]
سيقوم بسؤالك هل تريد إضافة هذا السيرفر الى قائمة الاجهزة المسموحة؟ قم بالإجابة حيث سيتم تسجيل المفتاح للسيرفر هذا في الملف:كود:بعد ذلك سيطلب مني الكلمة السرية للمستخدم binary، نقوم بإدخالها وبعد أن تتحقق الخدمة من صحتها ستسمح لي بدخول السيرفر. طبعاً ظروري يا شباب تركزون على المستخدم الذي أنت تستعمله على جهازك حين تريد تتصل. مثلاً لو كان المستخدم على الجهاز الأول هو binary ولك مستخدم على السيرفر أيضاً أسمه binary وكنت داخل في النظام الذي عندك بالمستخدم binary لا ضرر من الإتصال بهذه الطريقة:
[ltr]~/.ssh/known_hosts[/ltr]كود:
[ltr]ssh 5.5.5.5[/ltr]
لانه سيعرف بإنك تريد تتصل من خلال المستخدم المستعمل نفسه والذي هو binary. طيب لو كنت بمستخدم آخر وحاولت الإتصال بالسيرفر بهذه الطريقة؟ مثلا كنت تعمل بمستخدم mohamed وقمت بعمل إتصال على السيرفر من خلال الأمر:كود:
[ltr]ssh 5.5.5.5[/ltr]
في حالة لم يكن على السيرفر مستخدم إسمه mohamed ؟ سيقول لك المستخدم غير موجود ويمنعك من الدخول. ولهذا التركيز الله يرضى عليكم حين يتم التطبيق ظروري جداً.
ملاحظة مهمة جداً جداً: الى الآن ما قمنا بشرحه هو الطريقة البسيطة والمعروفة Host-Key Authentication. جميع الإعدادات الإفتراضية للخدمة تسمح بهذه الطريقة ولا حاجة لك للتعديل على ملف الخدمة.
الآن لنقم بعمل إعداد للخدمة لكي تعمل على الطريقة الثانية والتي هي محل إهتمامي في هذا الموضوع، أي Public-Key Authentication. سنحتاج الى التعديل على الملف الخاص بالخدمة، ولكن قبل ذلك لنقوم بعمل إنشاء للمفتاح الذي سنقوم بإستعماله ومن ثم نسخه وبعد ذلك نرجع للتعديل.
الآن قم بالدخول بالمستخدم الذي ستقوم بإستعماله (في الغالب هو المستخدم الذي أعتدت على إستعماله) لكي نقوم بعمل المفتاح، مثلاً بالنسبة لي سأقوم بإستعمال الأسم binary. أفتح الطرفية على جهازك CLIENT ومن ثم نفذ عليه الأمر:كود:أو
[ltr]ssh-keygen -t rsa[/ltr]كود:
[ltr]ssh-keygen -t dsa[/ltr]
ملاحظة: بإمكانك إستعمال اي طريقة تشاء من هذه الطرق، كلاهما يعمل مفاتيح قوية جداً لكن الفرق بينهما هو الأول يعمل المفاتيح الى حد أقصاه 2048bit والثاني الى حد أقصاه 1024bit.
أنا سأكمل مع المفتاح الأول أو النوع الأول RSA. أضغط على ENTER وأكمل سيظهر لك كلام يشبه التالي:كود:
[ltr]Generating public/private rsa key pair.
Enter file in which to save the key (/home/binary/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/binary/.ssh/id_rsa.
Your public key has been saved in /home/binary/.ssh/id_rsa.
The key fingerprint is:
02:09:09:09:ee:cc:dd:4d:3d:3a:66:ff:ab:df:34:11 binary@binary-zone.com[/ltr]
طبعاً الـ fingerprint بدون شك لك سيكون أرقام مختلفة، ومكان التخزين للمفتاح سيختلف في حالة كان المستخدم المستعمل عندك غير binary سيكون مثلا بالنسبة لـmohamed التاليكود:وهكذا. عند وصولك الى طلب إدخال الـ passphrase قم بوضع عبارة مرور للمفتاح هذا ولا تنسى ولا أريد أن أوصيك بأن تستعمل عبارة معقدة
[ltr]/home/mohamed/.ssh/id_rsa[/ltr]
هكذا قمنا بعمل المفتاحين العام والخاص للمستخدم binary طيب ماذا علينا عمل الحين؟ الأمر بسيط جداً قم بتنفيذ التالي:كود:هذا سيقوم بعمل نسخ للمفتاح العام الخاص بك الى السيرفر في الملف authorized_keys الموجود في المجلد
[ltr]scp ~/.ssh/id_rsa.pub binary@5.5.5.5:.ssh/authorized_keys[/ltr]كود:
[ltr]/home/binary/.ssh/[/ltr]
الآن قم بتنفيذ الأمر التالي:كود:وهذا:
[ltr]chmod 600 /home/binary/.ssh/id_rsa.pub[/ltr]كود:
[ltr]chmod 400 /home/binary/.ssh/id_rsa[/ltr]
هكذا منعنا أي شخص غير المستخدم binary من قراءة الملف id_rsa.pub والذي هو المفتاح العام والملف id_rsa الذي هو المفتاح الخاص.
الآن تم عمل المفتاح وتم نسخه ماذا تبقى يا B!n@ry؟ لم يبقى الكثير. الآن هل أنت جاهز للتعديل على ملف إعدادات الخدمة؟ أذن توكل على الله وأبدأ معيكود:أذهب الى السطر الموجود فيه العبارة هذه PasswordAuthentication وقم بتعديلها الى التالي:
[ltr]vim /etc/ssh/sshd_config[/ltr]كود:
[ltr]PasswordAuthentication no[/ltr]
الآن ما قمنا به هو منعنا الدخول الى السيرفر من خلال إستعمال اسم المستخدم وكلمته السرية الموجودة على السيرفر وسمحنا بإستعمال الطريقة الثانية Public-Key Authentication. الآن أضغط على Escape ومن ثم : ومن ثم x
هكذا خرجنا من المحرر vim مع تخزين التغييرات وعدنا الى الطرفية، الآن نأتي الى سبب ذكري للخيارات المتاحة في طريقة التشغيل/أعادة التشغيل/إيقاف الخدمة. حيث الآن بإمكانك عمل إعادة تشغيل للخدمة. على توزيعات CentOS و Fedora وأعجوبة طبعاً نفذ:كود:
[ltr]/etc/init.d/sshd restart[/ltr]
أما على توزيعات الدبيان وأوبنتو نفذ:كود:
[ltr]/etc/init.d/ssh restart[/ltr]
لكن بالنسبة لي أفضل طريقة الـ reload وذلك لاني لا أحتاج الى عمل إيقاف للخدمة بشكل كامل وإنما أقوم بإخبارها بإني أريدها أن تعيد قراءة ملف الإعدادات الخاص بها، وتحميله الى الذاكرة بدل الاعدادات التي تم تحميلها وقت تشغيل الخدمة. ولهذا سيكون حلي دائماً بعد التعديل على الإعدادات هو reload. على توزيعات CentOS و Fedora وأعجوبة طبعاً نفذ:كود:
[ltr]/etc/init.d/sshd reload[/ltr]
أما على توزيعات الدبيان وأوبنتو نفذ:كود:
[ltr]/etc/init.d/ssh reload[/ltr]
الآن أنتهينا من عمل المفاتيح، نسخ المفتاح العام الى السيرفر الثاني وقمنا بعمل إعدادات الخدمة وتشغيلها، الآن لنقوم بالتجربة في الدخول بالطريقة الجديدة. نفذ ما يلي:كود:
[ltr]ssh binary@5.5.5.5[/ltr]
ستظهر لك عبارة شبيهة بالتالي:
Enter passphrase for key 'id_rsa':
هنا ما يحصل بالحقيقة، هو جهازك يقوم بطلب معرفة هوية مستخدم هذا المفتاح وذلك من خلال طلب عبارة المرور التي أدخلتها حين قمت بعمل المفتاح. قم بإدخال هذه العبارة ومن ثم أضغط على enter وهكذا تكون قد وصلت الى السيرفر ولكن من خلال المفتاح العام الخاص بك.
سؤال: الآن ربما يسأل سائل كيف اعمل الطريقة الثالثة Passphrase-Less Authentication؟
الجواب: اعمل نفس الطريقة الثانية فقط لا تضع كلمة مرور على المفتاح حين تقوم بعملهم وانتهى الموضوع باقي الأمور جميعها نفس الشيء.
سؤال: طيب يا B!n@ry ماذا لديك أكثر حول الخدمة هذه؟
الجواب: بالحقيقة يوجد الكثير، لكن أحب أن أضيف أمر أخر وهو إستعمال مفاتيح متعددة.
ربما هنا يتفاجيء أحدكم ويتسائل كيف يعني مفاتيح متعددة؟
الجواب: هو أن أستعمل مفتاح معيين للوصول الى السيرفر الأول ومفتاح آخر للوصول الى السيرفر الثاني وهكذا.
سؤال: وهل هذا ممكن يا B!n@ry؟
الجواب: نعم ممكن تابع معي
الآن لنقم بعمل مفتاح جديد لنفرض للإتصال بسيرفر ثاني لك وعلى سبيل المثال يحمل رقم IP هو 6.6.6.6 ولكن هذه المرة بالطريقة التالية:كود:
[ltr]ssh-keygen -t rsa -f id_server2[/ltr]
وأكمل باقي خطوات عمل المفتاح من وضع عبارة المرور الى آخره.
سؤال: طيب الحين صار عندنا في المجلدكود:
[ltr] /home/binary/.ssh[/ltr]
مفاتيح أثنين، كيف أقوم بإخبار السيرفر الثاني أنا أريد أتصل عليك من خلال المفتاح id_server2 وليس المفتاح id_rsa ؟
الجواب: قم بتنفيذ الأمر التالي:كود:
[ltr]ssh -i id_server2 binary@6.6.6.6[/ltr]
هكذا قمت بإستعمال المفتاح الثاني للوصول الى سيرفرك الثاني 6.6.6.6 وسيطلب منك عبارة المرور passphrase للمفتاح الثاني التي أدخلتها حين عملت المفتاح.
سؤال: طيب B!n@ry أريد تغيير عبارة المرور للمفتاح شلون؟
الجواب: بسيط يا عزيزي، لو كنت تريد تغيير العبارة للمفتاح id_rsa نفذ التالي:كود:
[ltr]ssh-keygen -p -f /home/binary/.ssh/id_rsa[/ltr]
أما لو كانت للمفتاح الجديد id_server2 نفذ التالي:كود:
[ltr]ssh-keygen -p -f /home/binary/.ssh/id_server2[/ltr]
سيطلب منك وضع عبارة المرور القديمة ومن ثم وضع عبارة جديدة للمفتاح.
شايفين شلون الأمر بغاية البساطة ؟؟؟
الآن لا اريد أن أقوم بذكر جميع التفاصيل هناك أمرين سأتركهما لكما للتفكير وربما لكي يقوم أحدكم بإضافتهم الى الموضوع.
الأول: كيف أستطيع أن أعرف ما هو الـ fingerprint الخاص بالمفتاح الذي عندك؟
الثاني: كيف أستطيع تنفيذ أمر معيين على السيرفر من دون الحاجة الى تسجيل الدخول على السيرفر؟
الجواب: +
آخر حاجة في موضوعي هذا. الآن نأتي الى أمور أخرى أحب أضيفها لعمل لنقول Hardening لخدمة الـ SSH بصورة أكثر وتعقيد أكثر (حال المخترق ) ما سأقوم به هو السماح لجهاز معيين بالدخول الى الخدمة سواءاً من خلال iptables أو من خلال xinetd.
طريقة iptables:كود:
[ltr]/sbin/iptables -A INPUT -p tcp -s 5.5.5.5 --dport 22 -j ACCEPT;[/ltr]
هكذا سمحت لمن معه المفتاح ويعمل من جهاز رقم الـ IP له هو 5.5.5.5 بالوصول الى خدمة ssh التي على سيرفري.
طريقة xinetd:كود:
[ltr]vim /etc/hosts.allow[/ltr]
بعد ذلك ضع التالي:كود:
[ltr]sshd: 5.5.5.5: ALLOW[/ltr]
بعد ذلك أعمل:كود:
[ltr]vim /etc/hosts.deny[/ltr]
وضع بداخله التالي:كود:
[ltr]sshd: ALL : DENY[/ltr]
هكذا سمحنا فقط للشخص الذي يتصل من الـ IP رقم 5.5.5.5 بالإتصال بالخدمة وبما إننا نستعمل المفاتيح للإتصال، يجب أن يكون معه المفتاح للإتصال. بهذا عقدنا الأمور أكثر على المخترق (مع العلم بالحقيقة يمكنك عمل spoof للـ IP لكن مع هذا التعقيد جيد).
الآن لزيادة الحماية أكثر لنقم بتحرير ملف الخدمةكود:
[ltr]vim /etc/ssh/sshd_config[/ltr]
وتستطيع وضع الخيارات التالية:كود:
[ltr]ListenAddress 5.5.5.5
PermitRootLogin no
Protocol 2
AllowUsers binary mohamed
AllowGroups admins
Port 5858[/ltr]
ما عملنا هو:
- في السطر الأول حددنا بإن الخدمة تستمع للطلبات القادمة من العنوان 5.5.5.5 فقط. أي تضع رقم الأي بي لسيرفرك نفسه، وليس للجهاز صاحب هذا الـ IP الذي تريد السماح له بالدخول.
- في السطر الثاني منعنا الدخول مباشرة الى الحساب root، إذا كنت تريد تستعمل root على السيرفر؟ أدخل بالمستخدم العادي ثم حول الى المستخدم root. أكيد تعرفون كيف؟
- السطر الثالث بالغالب هو الأساسي أحببت تأكيده وهو إستعمال الخدمة SSH-2 وليس SSH-1.
- السطر الرابع سمحنا للمستخدمين binary و mohamed فقط بالدخول الى الخدمة.
- السطر الخامس سمحنا فقط للمستخدمين الذين يقعون في مجموعة إسمها admins من إستعمال الخدمة.
- في السطر السادس زيادة خير أننا قمنا بتغيير المنفذ الأصلي للخدمة ولكن لو وضعت هذا الرقم 5858؟ لا تنسى تقوم بتغييره في الأمر الذي كتبناه بالاعلى الخاص بـ iptables من 22 الى 5858 أوك؟
الآن لكي تتأكد من عدم وجود مشاكل لديك في ملف الإعدادات؟ قم بتنفيذ التالي:كود:
[ltr]`which sshd` -t[/ltr]
حيث سيقوم بفحصل الاعدادات، وإذا كانت لديك مشاكل فيه، سيقوم بكتابتها لك على الطرفية، وإن لم يكن لن يظهر لك شيء.
بهذه الحماية للخدمة؟ أنت مش بس عملت Harden للخدمة لديك وإنما كرهت المخترق بحياته وكرهته بنفسه لو يفكر يصل اليك.
سؤال: طبعاً تريد أكثر من هذه الحماية؟
الجواب: موجود يا عزيزي ، في شي إسمه Port-Knocking وفي شيء إسمه SPA وفي شي سأشرحه قريباً (أو أي متبرع ) وهو DenyHosts.
سؤال: تريد أكثر؟ خبرني؟
الجواب: أيضاً موجود ولكن هنا أقول لك اسئل Google
ما سأكمله حول خدمة SSH هو:
- تمرير X-Windows بطريقة آمنة من خلال SSH.
- إستعمال DenyHosts.
- وربما في القريب العاجل إستعمال SPA.
أتمنى تكونوا أستفدتم من الموضوع، وأن يكف الناس عن إستعمال طريقة Host-Key Authentication ويقوم بإستعمال طريقة Public-Key Authentication الرائعة والممتازة ...
دمتم بود جميعاً ...
https://www.facebook.com/BASHIR.ORG
صفحة الموقع : www.facebook.com/alhagigasd
مواضيع مماثلة
» دول آسيوية رصدت الطائرة الماليزية وتسترت عليها؟
» كيفية تحميل الفيديو من «فيس بوك»
» كيفية إنشاء راديو على الشبكة العنكبوتية
» كتاب كامل و شامل عن كيفية تعلم الفوتوشوب
» للمبتدئين | أكثر من 100 كتاب لتعلم لغات البرمجة في إنتظارك محاضرة + شرح + كيفية التطبيق( احترف الآن )
» كيفية تحميل الفيديو من «فيس بوك»
» كيفية إنشاء راديو على الشبكة العنكبوتية
» كتاب كامل و شامل عن كيفية تعلم الفوتوشوب
» للمبتدئين | أكثر من 100 كتاب لتعلم لغات البرمجة في إنتظارك محاضرة + شرح + كيفية التطبيق( احترف الآن )
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى
السبت يناير 14, 2017 10:10 am من طرف الآدمن
» اللوتري 2014|كل ما يتعلق بالهجرة الي امريكا شرح شامل و كامل من شرح التقديم الي الفوز بالفيزا و الوصول الي الولايات المتحدة (الآن ترى العالم)
الإثنين سبتمبر 26, 2016 12:31 pm من طرف زائر
» إعلان فتح باب التقديم لمنح البكالوريوس بجامعة الملك سعود | قدم طلبك الآن
الخميس يونيو 16, 2016 11:21 pm من طرف الآدمن
» نتيجة الشهادة السودانية 2016 | اضغط هنا لإدخال رقم الجلوس و معرفة النتيجة فورا
الإثنين يونيو 13, 2016 12:50 pm من طرف الآدمن
» تأشيرة دخول فيزا شنغن (Schengen) | طلب الحصول على تأشيرة شنغن
الأربعاء مارس 30, 2016 7:21 pm من طرف الآدمن
» الطلاب الدوليين |منح دراسية في المانيا .. الشروط و المتطلبات
الخميس مارس 24, 2016 5:58 pm من طرف الآدمن
» معلومات وافيه عن المنح الدراسية التركية |منح شاملة من تقديم الأوراق وتذاكر الطيران والتأشيرة
الجمعة مارس 11, 2016 5:55 pm من طرف codeiT
» Ten reasons why (Android) is better than (iOS) ?
الثلاثاء مارس 08, 2016 10:09 pm من طرف codeiT
» الشخصية النرجسية و 15 شيئا لن يفعلها النرجسي .. إكتشف الشخصية النرجسية بدقة
الخميس مارس 03, 2016 11:30 am من طرف الآدمن