كلاود
أمن سيبراني

Fail2ban: أوقف محاولات اختراق SSH تلقائياً

كلاود|١١ أغسطس ٢٠٢٦|4 دقائق قراءة|٢١٧ مشاهدة
Fail2ban: أوقف محاولات اختراق SSH تلقائياً

ليش SSH هدف دائم، التثبيت والإعداد بملف jail.local، الـ jails الأساسية، قراءة السجلات، وتكامله مع الجدار الناري لحماية بطبقات.

ايش هو Fail2ban وليش تحتاجه؟

Fail2ban أداة مفتوحة تراقب سجلات سيرفرك، وتحظر تلقائياً أي عنوان IP يكرر محاولات دخول فاشلة، فتوقف هجمات تخمين كلمة مرور SSH قبل ما تنجح. الفكرة بسيطة وقوية: بدل ما تسمح لمهاجم بتجربة آلاف كلمات المرور، تعطيه ثلاث أو أربع محاولات ثم تحظره لفترة. أي سيرفر جديد يفتح منفذ SSH للإنترنت يبدأ يستقبل محاولات دخول آلية خلال دقائق، وهذا ليس مبالغة، هو واقع يومي لأي عنوان IP عام.

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

ليش SSH هدف دائم؟

SSH هو الباب الرئيسي لإدارة أي سيرفر Linux، ومن يكسره يملك السيرفر بالكامل. لهذا هو الهدف الأول للمهاجمين الآليين:

  • المنفذ معروف: المنفذ الافتراضي 22 معروف للجميع، فالبوتات تفحصه أولاً
  • الجائزة كبيرة: نجاح واحد يعني تحكماً كاملاً بالسيرفر، تثبيت برمجيات تعدين أو انطلاق لهجمات أخرى
  • الهجوم رخيص: تجربة كلمات المرور آلية بالكامل ومجانية للمهاجم، فلا يخسر شيئاً بالمحاولة

خط الدفاع الأول ليس Fail2ban، هو تعطيل الدخول بكلمة المرور نهائياً واستخدام مفاتيح SSH فقط. لكن حتى مع المفاتيح، Fail2ban يقلل الضجيج ويحمي من هجمات أخرى، فالاثنان يكملان بعض لا يغني أحدهما عن الآخر.

التثبيت والإعداد

على توزيعات Linux الشائعة، التثبيت أمر واحد عبر مدير الحزم. بعد التثبيت، لا تعدّل ملف الإعداد الأصلي مباشرة، بل أنشئ ملفاً محلياً باسم jail.local عشان تعديلاتك تبقى بعد التحديثات. هذي أهم قاعدة: التعديل على jail.conf مباشرة يُمحى مع أي تحديث للحزمة.

في ملف jail.local تضبط الإعدادات العامة: عدد المحاولات المسموح بها قبل الحظر (maxretry)، والمدة اللي تُحسب فيها المحاولات (findtime)، ومدة الحظر (bantime). قيم بداية معقولة: 4 محاولات خلال 10 دقائق، وحظر ساعة. للسيرفرات الحساسة، زد مدة الحظر لأيام أو فعّل الحظر التصاعدي اللي يطيل المدة مع كل تكرار.

الـ jails الأساسية

الـ jail هو وحدة مراقبة: يربط بين سجل معيّن وقاعدة حظر. أهمها:

  • sshd: الأهم على الإطلاق، يراقب محاولات دخول SSH الفاشلة ويحظر مصدرها. فعّله على كل سيرفر بلا استثناء
  • jails خوادم الويب: لو عندك Apache أو Nginx، فيه jails جاهزة تحظر محاولات استغلال معروفة ومحاولات الدخول لصفحات الإدارة
  • jails البريد: لخوادم البريد، تحظر محاولات المصادقة الفاشلة المتكررة على بروتوكولات الإرسال والاستقبال

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

قراءة السجلات ومتابعة الحظر

Fail2ban يوفّر أداة سطر أوامر لمتابعة حالته. أمر fail2ban-client status يعرض الـ jails المفعّلة، وfail2ban-client status sshd يعرض تفاصيل jail معيّن: كم عنواناً محظوراً حالياً، وكم محاولة رصدها. راجع هذي الأرقام دورياً عشان تفهم حجم الهجمات على سيرفرك وتضبط الإعدادات بناءً عليها.

لو حظرت نفسك بالخطأ (يصير كثير أثناء الإعداد)، تقدر ترفع الحظر عن عنوانك بأمر fail2ban-client unban. نصيحة مهمة: أضف عنوان مكتبك أو شبكتك الثابتة لقائمة ignoreip عشان لا تُحظر أبداً مهما أخطأت في كلمة المرور.

التكامل مع الجدار الناري

Fail2ban لا يحظر بنفسه، هو يعطي الأوامر للجدار الناري في النظام (مثل iptables أو nftables أو firewalld) عشان ينفّذ الحظر فعلياً. هذا التكامل يعني إن العنوان المحظور يُرفض على مستوى الشبكة قبل ما يصل الخدمة أصلاً، وهذي حماية أعمق من مجرد رفض تطبيقي.

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

في كلاود، سيرفرات مركز بيانات الرياض تعطيك بيئة تقدر تركّب عليها Fail2ban والجدار الناري بالكامل تحت سيطرتك، مع حماية شبكية على مستوى مركز البيانات فوق حمايتك الخاصة. الأمان طبقات، وكل طبقة تضيف صعوبة على المهاجم: حماية مركز البيانات، ثم جدارك الناري، ثم Fail2ban، ثم مفاتيح SSH. اجمعها كلها، ونم مرتاحاً.

مشاركة