خطوات عملية لتأمين خدمة SSH

إذا كنت مسؤولاً عن إدارة خوادم في شركتك، أو كنت تدير موقعاً على الإنترنت فلا بد وأنّك قد تعاملت مع خدمة SSH.  قديماً كان الاتصال يتمّ في أغلب الأحيان عبر خدمة Telnet. هذه الخدمة تقوم بنقل معلومات الدخول (كاسم المستخدم وكلمة المرور) بدون تشفير، وبالتالي إذا كان هناك طرف يستمع على هذا الاتصال فسوف يتمكن من رؤية هذا المعلومات. من هنا جاءت الحاجة لخدمة SSH. حيث أن خدمة SSH أو Secure Shell تسمح بالدخول للخادم بطريقة آمنة تمنع أي طرف من استراق السمع على الاتصال الذي تمّ إنشاؤه بين حاسوبك وخادمك، كون المعلومات التي يتمّ تبادلها بين حاسوبك والخادم قد تمّ تشفيرها.

هذا لا يعني أننا بمجرد استخدامنا لهذه الخدمة نكون قد امّنا خدامنا وانتهت القصة. فكل يوم نسمع عن خبر اختراق خادم ما تابع لشركة مشهورة او ما شابه. وقد غطينا منذ فترة قريباً موضوعاً حول استخدام خوادم لينكس في أحد الهجمات الإلكترونية، بعد أن تمكن المهاجمون من اختراقها. كذلك إذا قمت بمراجعة لسجلّات خادمك فسوف تلاحظ ان هناك محاولات يومية لكسر خدمةSSH واختراق خادمك.

في هذه المقالة سنتناول خطوات عملية يمكنك استخدامها في خادمك تساعدك على رفع درجة أمان الخادم وتحديداً خدمة SSH.

تغيير المنفذ الإفتراضي

عند تثبيت خدمة SSH فإن المنفذ الإفتراضي المسجّل لهذه الخدمة هو 22. العديد من اطفال السكريبت والشبكات الآلية (BotNets) تقوم باستهداف هذا المنفذ. لذلك تغييره على خادمك إلى أي منفذ آخر (رقم المنفذ الجديد يفضل أن يكون أكبر من 1024)، سيساعد في التخلص من الغالبية الساحقة من الهجمات. هذا لا يعني انّه لن يتم استهدافك ولكن عندما يتمّ استهدافك ستعلم ان الطرف المهاجم يستهدفك بشكل مباشر وليس عبر عملية مسح عشوائي.

لتغيير المنفذ نقوم بتحرير الملف sshd_config والموجود عادة في مجلد /etc/ssh

ملاحظات هامة: 1) غالبية التغييرات التي سنقوم بها ستتم من خلال تحرير هذا الملف. 2) التوزيعة التي نستخدمها كمثال في هذا المقال هي توزيعة Ubuntu. قد ترى بعض الإختلاف إذا كنت تستعمل توزيعة اخرى ولكن الاختلافات لن تكون اختلافات جوهرية.

بعد فتحك لملف /etc/ssh/sshd_config

غير قيمة المنفذ من 22 إلى قيمة أخرى على سبيل المثال 7722 لتصبح النتيجة النهائية هكذا

Port 7722

غير برتوكول الاتصال

هناك برتوكولا اتصال لخدمة SSH. برتوكول 1، وهو برتوكل قديم وبه كثير من الثغرات. برتوكول 2 وهو برتوكول آمن أكثر بكثير من برتوكول 1. غالبية التوزيعات الحديثة تأتي مع برتوكول 2 مفعل بشكل افتراضي. تأكد من ذلك عبر فتحك لملف /etc/ssh/sshd_config وابحث عن

Protocol 2

عطل صلاحيات دخول المستخدم الجذر

المستخدم الجذر هو أكثر اسم مستخدم تجري محاولات اختراقه لذلك تعطيل دخوله يعتبر أمراً ضرورياً في عملية تأمين خادمك. في التوزيعات التي تعتمد على Debian مثل توزيعة أبنتو، المستخدم الجذر معطل بشكل افتراضي، ولكن في توزيعات أخرى مثل فيدورا أو في حال استخدامك لخادم قامت بإعداده شركة الاستضافة فإن المستخدم الجذر مفعل ويمكنه الدخول للخادم عبر خدمة SSH.

لتعطيل دخول المستخدم الجذر

PermitRootLogin no

حدد من يمتلك صلاحيّات الدخول إلى الخادم

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

لتحديد المستخدمين قم بإضافة الخاصية AllowUsers على الشكل الآتي

AllowUsers Ahamd Security4Arabs Abdu*

السطر أعلاه يقصر استخدام الخدمة على المستخدم احمد والمستخدم Security4Arabs وأي مستخدم يبدأ اسمه ب Abdu مثل Abdul Salam أو Abdulr Rahman

يمكنك كذلك حصر الخدمة على مجموعة من المستخدمين من خلال استخدام الخاصية AllowGroups

AllowGroups sec4arteam

تحديد العناوين التي يسمح لها بإنشاء اتصال

بالإضافة إلى تحديد مَن مِن المستخدمين يمكنه استخدام الخدمة. يمكنك تحديد العناوين التي يمكن لهؤلاء المستخدمين الدخول إلى الخادم من خلالها. يتم ذلك من خلال استخدام خاصية TCPWrappers. هذه الميزة رائعة في حماية خدمات ليس لها حماية افتراضية في اعدادتها ولكن يمكن استخدامها لأي خدمة موجودة على الخادم.

لنفرض مثلاً أننا نريد جعل الدخول إلى الخادم مقتصراً على العنوان 192.168.1.254 و مجموعة العناوين 172.16.0.0

قبل تحديد الدخول لهذه العناوين نحتاج إلى ان نمنع أي اتصال إلى الخادم عبر خدمة SSHD وذلك من خلال تحرير /etc/hosts.deny ومن ثمّ التّاكد من احتوائه على القيمة التالية

sshd:all

هذا سوف يقوم بتفعيل خاصية المنع.

بعد ذلك نقوم بتحرير الملف /etc/hosts.allow ومن ثمّ وضع العناوين التي نريد السماح لها باستخدام خدمة SSH للدخول إلى الخادم كالتالي:

sshd: 192.168.1.254

sshd: 172.16.0.0/255.255.0.0

ملاحظة هامة جدّاً جدّاً: تأكد من أن العناوين التي قمت بإدخالها صحيحة 100%. أي خطأ في هذه العناوين سيمنعك من الدخول إلى الخادم.

قصر التوثيق على المفاتيح وليس على كلمات المرور

خدمة SSH تدعم خاصية المفاتيح. سنقوم بعمل شرح مفصل في كيفية استخدامها، ولكن ما يهمنا هنا هو ذكر الآلية.

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

لتعطيل استخدام كلمة المرور من أجل الدخول تأكد من أن ملف /etc/ssh/sshd_config يحتوي على القيمة التالية

PasswordAuthentication no

ملاحظة هامة: لا تقم بتغيير القيمة قبل التّأكد من أن المفتاح الذي قمت بإنشائه لغرض الدخول للخادم يعمل 100%.

ثبّت خدمة fail2ban

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

أخيراً

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

حماية الخادم والنّظام تبدأ بك اولاً.

نبذة عن الكاتب

بشار ماجستير نظم معلومات. مهندس أنظمة يمتلك خبرة في إدارة أنظمة ويندوز ولينكس. باحث ومختصص في مجال أنظمة المعلومات، معالجة الحوادث الأمنيّة، تحليل الإختراقات الأمنيّة، وفحصوصات الاختراق. حاصل على العديد من الشهادات الأمنيّة. عضو في مجلس استشاريّي معهد سانز لأمن المعلومات.

التعليقات:

اترك تعليقاً | عدد التعليقات: (4)

  1. يقول فايز الخليفي:

    يعيطك العافية اخي بشار على هذا الاستخدام الفعلي والامن لـ ssh وهذه الطرق التي ذكرتها هي التي تشعرك بالامان، والشي الجميل ذكرك لخدمة fail2ban لنه خدمة جداً مفيدة.

  2. يقول Hit-Man:

    السلام عليكم
    بارك الله فيكم أخي على المجهود
    أتفق معك أخي في هده العبارة “تذكر أن أي حماية تقوم بها لن تكون كافية”
    تحياتي

  3. يقول علي الوشلي:

    الله يجازيك ويعطيك الف عافيه
    تسلم
    على المقال خطوات مهمه بالفعل

  4. يقول Majid:

    لدي سؤال

    عند تغيير المنفذ الخاص بي SSH

    هل يجب أن أقوم بتعطيل المنفذ 22

أكتب تعليق