أفضل الممارسات الأمنية للتخفيف من هجمات SECURE SHELL (SSH).
ما هي طرق حماية SSH من المستخدمين الفضوليين ؟ هل هناك طريقة هي الأكثر موثوقية والتي، بمجرد تنفيذها، تمنح المسؤول راحة البال؟ دعونا نحاول العثور على إجابة لهذا السؤال من خلال النظر في أفضل الممارسات التالية.
ما هو الغلاف الآمن (SSH)؟
SSH أو Secure Shell أو Secure Switch Shell هو بروتوكول شبكة يمكن من خلاله للمستخدمين ومسؤولي النظام الوصول إلى أجهزة الكمبيوتر الأخرى، حتى عندما تكون الشبكة نفسها غير آمنة.
يوفر SSH كلمة مرور آمنة و/أو مصادقة المفتاح العام التي يمكن من خلالها لمسؤول النظام أو مسؤول الشبكة الاتصال بأي كمبيوتر أو تطبيق عن بعد، وتنفيذ الأوامر، وكذلك نقل الملفات باستخدام SFTP أو بروتوكول نقل الملفات SSH.
تم تطوير ضمانات الغلاف الآمن ردًا على هجوم استنشاقي في جامعة هلسنكي للتكنولوجيا. في وقت الهجوم المتشمم، كان بروتوكول Telnet مستخدمًا على نطاق واسع، ولكن اليوم، تجاوزه بروتوكول Secure Shell من حيث الأمان ويستخدم على نطاق واسع.
مزايا SSH
يقوم SSH بحماية البيانات عن طريق تشفيرها قبل إرسالها ومن ثم فك تشفيرها في المكان المحدد . يسمح SSH للمستخدم بإصدار أمر يفهمه وينفذه الخادم الذي يستمع على الكمبيوتر البعيد. كما أنه يستخدم لمراقبة الخدمة وتوجيهها، ويستخدم لتشغيل التطبيقات أو حتى نقل الملفات. يمنح SSH المستخدم مزيدًا من التحكم في موقعه ويمنحه المزيد من الحرية في إدارته.
هجوم SSH
على الرغم من أن SSH أكثر أمانًا، إلا أن المتسللين لديهم طريقتهم الخاصة لجعله غير آمن. أحد أشهر الهجمات هو هجوم القوة الغاشمة SSH .
يقوم المهاجمون بتجربة مجموعة متنوعة من مجموعات اسم المستخدم وكلمة المرور حتى يعثروا على المجموعة الصحيحة ويتمكنوا من الوصول إلى الحساب أو الخادم. أخطر عيب في أهجوم القوة الغاشمة هو أن العديد من الأنظمة تم تكوينها لحظر المهاجمين بعد عدد معين من محاولات تسجيل الدخول الفاشلة.
يتم عكس العملية في هجوم القوة الغاشمة SSH. بدلاً من تجربة آلاف مجموعات اسم المستخدم وكلمة المرور على خادم واحد، يحاول المجرمون تجربة مجموعة اسم مستخدم وكلمة مرور واحدة على آلاف الخوادم.
يختار الموظفون كلمات مرور ضعيفة، مما يجعل الهجوم ممكنًا، ولا داعي للقلق بشأن آليات القفل لأن كل خادم يسجل محاولة تسجيل دخول فاشلة واحدة على الأكثر. ويُعرف أيضًا باسم هجوم “الرش والصلاة” ، مما يعني أن المجرمين يراهنون على أنهم إذا هاجموا العديد من الخوادم، فإن أحدها سيسمح لهم بالدخول. يمكن أن يكون فعالاً، ولكن كما ترون، ليس من المفيد جدًا أن يركز المجرمون انتباههم على هدف محدد.
أفضل الممارسات الأمنية للتخفيف من الهجمات المستندة إلى SSH:
Secure Shell موجود في كل مكان. منذ إصداره في عام 1995، اكتسب SSH شعبية واسعة باعتباره بروتوكولًا قويًا للوصول عن بعد لنظام التشغيل Linux.
ومع ذلك، كما هو معروف، مع القوة العظيمة تأتي مسؤولية كبيرة. يمكن أن يشكل برنامج SSH الخفي الذي تم تكوينه بشكل خاطئ تهديدًا أكثر من كونه مساعدة. أدناه، سنناقش عدة تقنيات لتعزيز أمان SSH .
1. تعطيل تسجيل الدخول الجذر
تسمح خوادم SSH، بالإضافة إلى ضبط المنفذ الافتراضي على 22، بتسجيل الدخول إلى الجذر على معظم أنظمة التشغيل Linux وUnix. يمكن لأي شخص الاتصال بالمنفذ 22، واستخدام المستخدم الجذر كافتراضي، ثم إجراء سلسلة من محاولات القوة الغاشمة ضد عنوان IP الخاص بالخادم العام الخاص بك.
إذا قمت بتمكين مصادقة كلمة المرور على خدمة SSH الخاصة بك وكانت كلمة مرور الجذر الخاصة بك ضعيفة، فمن المحتمل جدًا أن يتم اختراقك .
ونتيجة لذلك، يعد تعطيل تسجيل الدخول إلى الجذر أحد أقدم الطرق وأكثرها استخدامًا لمنع تعرض النظام للخطر عند تثبيتات نظام التشغيل الجديد.
يمكنك تقييم ذلك من خلال ترك تثبيت SSH كما هو، وتحليل الملف /var/log/secure
وحساب عدد محاولات القوة الغاشمة التي تتلقاها في غضون ساعات قليلة.
حتى إذا كنت تستخدم كلمات مرور قوية، فمن الجيد دائمًا تعطيل تسجيل الدخول إلى الجذر واستخدام مستخدم SSH أساسي بدلاً من ذلك، بحيث يمكنك استخدام الأمر إذا كنت بحاجة إلى الوصول إلى الجذر su
.
ثم استخدم الأمر التالي:
nano /etc/ssh/sshd_config
ابحث عن السطر “PermitRootLogin”. يمكن أن يبدو مثل هذا:
PermitRootLogin yes
قم بتغيير القيمة “yes” إلى “no” لتعطيل تسجيل الدخول إلى الجذر:
PermitRootLogin no
أعد تشغيل خدمة SSH لتصبح التغييرات سارية المفعول:
sudo service ssh restart
سيتم الآن تعطيل تسجيل الدخول كجذر عبر SSH على نظامك.
2. يجب تعطيل كلمات المرور الفارغة
في Linux وUnix، يمكن للمسؤولين إنشاء مستخدمين بكلمات مرور فارغة. وإذا كنت تريد إبعاد المهاجمين عن خوادم SSH الخاصة بك، فقد يكون هذا عيبًا. ونتيجة لذلك، فإن أفضل رهان لك هو حظر عمليات تسجيل الدخول عن بعد للحسابات ذات كلمات المرور الفارغة عن طريق تعديل الملف sshd_config
، وهو أمر سهل القيام به.
يأمر :
nano -w /etc/ssh/sshd_config ;
ثم قم بتعيين:PermitEmptyPasswords no
3. قم بتعيين منفذ SSH مخصص
نظرًا لأنه تم تكوين SSH للاستماع على المنفذ 22، المعروف على نطاق واسع بين المهاجمين وأدوات الأمان، بالإضافة إلى ماسحات المنافذ التي تقوم بمحاولات القوة الغاشمة، فإن تغيير المنفذ يعد إجراءً أمنيًا فعالاً. قم بتحرير ملف تكوين SSH الرئيسي وقم بتغيير المنفذ من 22 إلى منافذ مختلفة، مثل 899.
لذلك، يمكنك القيام بذلك على النحو التالي:
nano /etc/ssh/sshd_config
ابحث عن السطر الذي يحتوي على تكوين منفذ SSH. افتراضيًا، يجب أن يبدو هذا السطر كما يلي:
Port 22
قم بتغيير رقم المنفذ (22 في هذا المثال) إلى أي رقم تريده، طالما أنه لا يتم استخدامه بواسطة خدمة أخرى على نظامك. على سبيل المثال، يمكنك ضبطه على 2222:
Port 2222
تأكد من أن المنفذ الجديد مفتوح على جدار الحماية الخاص بنظامك. يمكنك السماح بحركة المرور على المنفذ 2222 (أو أي شيء قمت بتكوينه) على جدار الحماية، كما يلي:
sudo ufw allow 2222/tcp
ملاحظة : إذا كنت لا تستخدم UFW (جدار الحماية غير المعقد)، فستحتاج إلى ضبط إعدادات جدار الحماية وفقًا لنظامك.
4. قم بإعداد شعار تحذير مخصص لـ SSH
يعد تعيين شعار ترحيب مخصص لاتصالات SSH ممارسة جيدة لجميع أجهزة Linux وUnix. هذه ليست نصيحة أمنية بقدر ما هي تحذير أمني لأي وصول غير مصرح به إلى أنظمتك. سيظهر شعار تحذيري بمجرد حصول المستخدم على حق الوصول.
لهذا يمكنك استخدام الأمر التالي:
sudo nano /etc/ssh/sshd_config
قم بالتمرير لأسفل الملف حتى تجد القسم الذي يبدأ بـ ” #Banner
“. يجب أن تبدو هذه:
#Banner /etc/issue.net
قم بإزالة علامة الجنيه “#” في بداية السطر لتنشيط الإعداد وتوفير موقع الملف الذي يحتوي على شعار التحذير المخصص الخاص بك. يمكنك استخدام أي ملف نصي للشعار. على سبيل المثال، إذا كان الشعار المخصص الخاص بك موجودًا في ملف يسمى ” my_custom_banner.txt
“، فسيبدو السطر كما يلي:
Banner /ruta/a/my_custom_banner.txt
********************************************
** Acceso no autorizado prohibido **
** Este sistema es para uso **
** autorizado solamente. **
** by: esgeeks **
**
** Todas las actividades **
** realizadas en este sistema **
** pueden ser monitoreadas y **
** registradas para fines de **
** seguridad de la red. **
********************************************
استبدل “/ ruta/a/my_custom_banner.txt
” بالموقع الفعلي لملف الشعار المخصص الخاص بك.
أعد تشغيل خدمة SSH لتصبح التغييرات سارية المفعول.
sudo service ssh restart
5. على أجهزة الكمبيوتر المحمولة وأجهزة الكمبيوتر المكتبية، قم بتعطيل خادم OPENSSH
ومع ذلك، فإن العديد من توزيعات Linux تأتي مع تمكين خادم OpenSSH افتراضيًا (مما يعني تمكين تسجيل الدخول الجذر، وتستمع الخدمة على المنفذ 22، وما إلى ذلك)، ويلزم الوصول إلى SSH للعمل عن بعد على خوادم مخصصة، VPS وفي السحابة. ليس من الضروري على أجهزة الكمبيوتر الشخصية. لتجنب الهجمات غير المرغوب فيها، تأكد من إلغاء تثبيت خادم OpenSSH.
لإلغاء تثبيت خادم OpenSSH على الأنظمة المستندة إلى Debian/Ubuntu (APT):
sudo apt-get remove openssh-server
sudo apt-get purge openssh-server
لإلغاء تثبيت خادم OpenSSH على الأنظمة المستندة إلى Red Hat/CentOS (YUM/DNF):
sudo yum remove openssh-server
sudo dnf remove openssh-server
6- تسجيل دخول SSH بدون كلمة مرور
في هذا السيناريو، الخيار المثالي هو استبدال عمليات تسجيل الدخول القديمة المستندة إلى كلمة المرور بعمليات تسجيل الدخول المستندة إلى المفتاح، مما سيؤدي إلى تحسين أمانك ويسمح لك بإجراء تسجيل دخول سريع إلى SSH دون مطالبات، كما هو الحال عندما تكون كلمة المرور مطلوبة.
تعد عمليات تسجيل الدخول المستندة إلى كلمة المرور جيدة إذا كان لديك مجموعة قوية من الأحرف، مثل الرموز والأحرف الكبيرة والصغيرة والأرقام، ولكنها جميعها معرضة لخطر الاختراق بالقوة الغاشمة في مرحلة ما. يمكنك أيضًا تشغيل العمليات الآلية التي تتطلب اتصالات SSH باستخدام عمليات تسجيل الدخول المستندة إلى مفتاح SSH.
لتمكين المصادقة المستندة إلى مفتاح SSH، اتبع الخطوات التالية:
سيقوم الأمر التالي بإنشاء مفتاح SSH ويطلب منك اختيار موقع واسم للمفتاح، وعادةً ما يتم تخزينه في ~/.ssh/id_rsa افتراضيًا.
ssh-keygen
الآن، انسخ مفتاحك العام إلى الجهاز البعيد الذي تريد الاتصال به بدون كلمة مرور.
ssh-copy-id usuario@direccion_ip
أو يمكنك تحديد عنوان المفتاح العام:
ssh-copy-id -i ~/.ssh/id_rsa.pub usuario@direccion_ip
بعد ذلك، سيُطلب منك إدخال كلمة مرور حسابك على الجهاز البعيد.
بمجرد نسخ مفتاحك العام، من المفترض أن تكون قادرًا على الاتصال بالجهاز البعيد دون إدخال كلمة مرور:
ssh usuario@direccion_ip
سيتم إجراء المصادقة باستخدام مفتاح SSH بدلاً من كلمة المرور.
7. الحد من عدد محاولات تسجيل الدخول الفاشلة بكلمة المرور
يعد وضع حد معقول لعدد المحاولات التي يمكن للمهاجم القيام بها لتسجيل الدخول باستخدام كلمة مرور غير صحيحة بمثابة خطوة ذكية للحماية من هجمات القوة الغاشمة. يمكن أن يكون إعداد MaxAuthTries مفيدًا لمنع مثل هذه الهجمات.
يأمر:
nano -w /etc/ssh/sshd_config
يسعى MaxAuthTries
. اضبطه على 3
مثل:
MaxAuthTries 3
8. استخدم أغلفة TCP TCP
تعمل الأغلفة من خلال ملفين: /etc/hosts.allow
و /etc/hosts.deny
.
أمثلة:
استخدم الاستعلام التالي لحظر جميع الاتصالات من مضيف غير معروف:
nano -w /etc/hosts.deny
ALL : ALL
مع القاعدة المذكورة أعلاه سوف تمنع حتى نفسك. إذا كنت تريد السماح بوصول SSH من عناوين IP معينة مع حظر الوصول عن الآخرين، فقم بتعيين:
sshd: ALL
ويمكنك إضافة الكود التالي إلى ملف السماح للسماح بالوصول من عنوان IP المصدر الثابت الخاص بك، على سبيل المثال:
nano -w /etc/hosts.allow
sshd : 1.0.0.1
يمكنك أيضًا استخدام عنوان IP العام الحقيقي أو IP الخاص بشبكة LAN الخاصة لاستبدال عنوان IP. سيسمح لك هذا بحظر أي شخص آخر مع السماح فقط بعناوين IP التي تحددها.
تذكر أن TCP Wrappers يعمل من الأعلى إلى الأسفل، لذلك إذا كانت هناك قاعدة تسمح /etc/hosts.allow
بالوصول، فستكون لهذه القاعدة الأولوية على القاعدة التي /etc/hosts.deny
ترفض الوصول.
9. بالنسبة لمستخدمي ومفاتيح SSH، استخدم كلمات مرور/عبارات قوية
إذا لم تتمكن من إعداد مفتاح SSH ويجب عليك الاعتماد على كلمات مرور تسجيل الدخول، أو إذا كنت تريد استخدام عبارة مرور لمفاتيحك، فتأكد من استخدام واحدة. مزيج من الشخصيات القوية. سيساعدك اتباع هذه الإرشادات على إنشاء كلمة مرور/عبارة مرور قوية وتجنب التعرض للاختراق أثناء هجوم القوة الغاشمة.
إذا أمكن، قم بتضمين الأحرف الكبيرة والصغيرة والرموز والأرقام وما يصل إلى 8 أحرف. تجنب استخدام: الكلمات القائمة على القاموس، وأعياد الميلاد الشخصية واحتفالات الذكرى السنوية، وأسماء أفراد الأسرة والحيوانات الأليفة.
10. تمكين إشعارات تسجيل الدخول عبر البريد الإلكتروني/التنبيه
يعد إعداد برنامج نصي صغير لإنشاء تنبيه في كل مرة يقوم فيها شخص ما بتسجيل الدخول كجذر عبر SSH أحد أفضل الأشياء التي يمكنك القيام بها لمراقبة اتصالات SSH الواردة.
لذلك، قم أولاً بفتح ملف تكوين SSH:
sudo nano /etc/ssh/sshd_config
ثم قم بإضافة أو تعديل الأسطر التالية لتكوين إشعارات البريد الإلكتروني:
# Habilita la notificación de inicio de sesión por correo
UsePAM yes
# Especifica la dirección de correo para recibir notificaciones
AddressNotificationAddress [email protected]
لإرسال إشعارات البريد الإلكتروني، تحتاج إلى خادم بريد تم تكوينه على نظامك. يمكنك استخدام برامج مثل Postfix
أو sendmail
لهذا.
على سبيل المثال، إذا كنت تستخدم Postfix على نظام يستند إلى Debian/Ubuntu، فيمكنك تثبيته باستخدام:
sudo apt-get install postfix
بعد ذلك، يجب عليك تكوين Postfix لإرسال رسائل البريد الإلكتروني. قد يختلف التكوين حسب احتياجاتك وتفضيلاتك. بمجرد التهيئة، يمكنك استخدام خادم البريد لإرسال إشعارات تسجيل الدخول.
لا تنس حفظ التغييرات التي أجريتها /etc/ssh/sshd_config
وإعادة تشغيل خدمة SSH لتصبح التغييرات سارية المفعول:
sudo service ssh restart
11. قم بتصفية منفذ SSH على جدار الحماية
أحد الأشياء الأولى التي يجب على جميع الخوادم القيام بها بعد تثبيت نظام التشغيل هو تكوين جدار حماية البرنامج على الخادم. يعد ConfigServer Security & Firewall (CSF) من ConfigServer أحد جدران الحماية الأكثر شهرة وفعالية التي اكتشفناها. من السهل تثبيت CSF على التوزيعات القائمة على الخطة (بدون لوحة تحكم)، كما أن تصفية المنافذ أسهل.
لتصفية منفذ SSH على جدار الحماية باستخدام ConfigServer Security & Firewall (CSF)، يمكنك اتباع الخطوات التالية:
sudo nano /etc/csf/csf.conf
ابحث عن إعدادات منفذ SSH:
TCP_IN = "22"
لتصفية منفذ SSH، ما عليك سوى إزالة رقم المنفذ من السطر أو التعليق على السطر بإضافة علامة الجنيه (#) في البداية:
# TCP_IN = "22"
أو، إذا كنت تريد السماح بوصول SSH فقط من عناوين IP معينة، فيمكنك تعديل السطر كما يلي (استبدل 1.2.3.4 بعنوان IP المطلوب):
TCP_IN = "22,1.2.3.4"
بمجرد حفظ التغييرات في ملف التكوين، أعد تشغيل CSF لتصبح التغييرات سارية المفعول:
sudo csf -r
12. تحديد هجمات القوة الغاشمة لـ SSH وحظرها تلقائيًا
من السهل اكتشاف هجمات القوة الغاشمة لـ SSH وحظرها. تتضمن الطريقة اليدوية تحليل سجلات النظام لتحديد من يحاول الاتصال بالخادم ثم حظره باستخدام جدار حماية النظام. ومع ذلك، هناك العديد من الحلول التي يمكنها أتمتة هذه المهام الشاقة وتقليلها بالنسبة لك. إن SSHGuard و Fail2ban و DenyHosts ما هي إلا عدد قليل من التقنيات المتاحة للحماية من هجمات القوة الغاشمة.
13. حافظ على تحديث SSH
أهم إرشادات يجب تذكرها هي الحفاظ على تحديث حزم الخادم لديك، والتي تتضمن OpenSSH. يجب أن يكون هذا كافيًا للحفاظ على خادم OpenSSH الخاص بك محميًا من الثغرات الأمنية الناشئة.
استخدم الأمر التالي لتحديث SSH وحزم النظام الأخرى:
sudo apt upgrade openssh-server # Para sistemas basados en Debian/Ubuntu
sudo yum update openssh-server # Para sistemas basados en CentOS/Red Hat
14. قم بتعيين الفاصل الزمني لعدم النشاط
يتيح لك تعيين الفاصل الزمني للخمول إنهاء جلسات SSH غير المستخدمة. على سبيل المثال، إذا قمنا بتعيين قيمة 240، أي ما يعادل 4 دقائق، فسيتم تسجيل الخروج من جلسة SSH تلقائيًا بمجرد الوصول إلى وقت الخمول.
لذلك، افتح ملف التكوين:
sudo nano /etc/ssh/sshd_config
ابحث عن إعدادات الخمول على الأسطر التالية:
ClientAliveInterval 300
ClientAliveCountMax 0
تمثل القيمة 300
5 دقائق، وهو الوقت الافتراضي. يمكنك تعديل الخط ClientAliveInterval
لتعيين الفاصل الزمني لعدم النشاط المطلوب بالثواني.
يمكنك أيضًا تعديل ClientAliveCountMax
ما إذا كنت تريد السماح بعدد محدد من المرات التي يُسمح فيها بعدم النشاط قبل قطع الاتصال.
أخيرًا، عندما تقوم بإجراء تغييرات على ملف التكوين، أعد تشغيل خدمة SSH لتصبح التغييرات سارية المفعول:
sudo service ssh restart # Para sistemas basados en Debian/Ubuntu
sudo systemctl restart sshd # Para sistemas basados en CentOS/Red Hat