
إنّ تعريض خادم لينكس للشبكة يُشبه إلى حد كبير وضع مغناطيس يجذب البرامج الضارة. إذا لم تُفعّل أيّة إجراءات أمنية، فمن المُرجّح أن تجد آلاف محاولات تسجيل الدخول الفاشلة في سجلاتك؛ فهناك برامج آلية تُجرّب باستمرار تركيبات مُختلفة من أسماء المستخدمين وكلمات المرور في محاولة للسيطرة على جهازك عبر هجمات القوة الغاشمة.
هنا يأتي دور Fail2ban، وهي أداة تعمل كحارس لا يكلّ. إنها ليست جدار حماية بالمعنى الحرفي، بل تحلل سجلات النظام ، وعندما تكتشف محاولة اختراق، تمنعها تمامًا بحظر عنوان IP الخاص بها باستخدام أدوات مثل iptables أو nftables. دعونا نرى كيفية تهيئتها لجعل خادمك عصيًا على الاختراق.
ما هو برنامج Fail2ban بالضبط وكيف يعمل؟
ببساطة، Fail2ban هو برنامج يعمل في الخلفية ويراقب باستمرار سجلات خدماتك. عندما يكتشف أنماطًا مشبوهة تتطابق مع قواعد محددة مسبقًا، تُسمى المرشحات ، يبدأ في عدّ حالات الفشل. إذا وصل عنوان IP إلى الحد الأقصى المسموح به من المحاولات خلال فترة زمنية معينة، ينفذ البرنامج إجراءً ، يتضمن عادةً إضافة عنوان IP هذا إلى القائمة السوداء لجدار الحماية.
تُنظَّم هذه الإعدادات فيما يُسمى "السجون" . السجن هو في الأساس مجموعة من القواعد تُطبَّق على خدمة مُحدَّدة (مثل SSH أو Apache أو MySQL). بهذه الطريقة، يُمكنك تطبيق سياسة صارمة للغاية للوصول عن بُعد، وسياسة أكثر تساهلاً لخادم الويب، مما يضمن حظر المُتطفلين تلقائيًا دون الحاجة إلى التحقق من السجلات يدويًا كل خمس دقائق.

التثبيت وفقًا لتوزيعة لينكس الخاصة بك
يختلف أمر تثبيته قليلاً حسب النظام الذي تستخدمه، ولكنه متوفر بشكل عام في جميع المستودعات الرسمية تقريبًا.
- على نظامي التشغيل أوبونتو وديبيان: الأمر بسيط للغاية، ما عليك سوى الجري
sudo apt updateseguido ديsudo apt install fail2ban. - على نظامي التشغيل Rocky Linux أو AlmaLinux: بما أن هذه توزيعات مؤسسية، يجب عليك أولاً تمكين مستودع EPEL باستخدام
sudo dnf install epel-releaseثم قم بتثبيت الحزمة باستخدامsudo dnf install fail2ban fail2ban-firewalld. - في نظام ألباين لينكس: استخدم مدير ملفات APK مع
sudo apk add fail2banوبما أنه يستخدم OpenRC، فيجب عليك تفعيله باستخدامsudo rc-update add fail2ban defaultوابدأها بـsudo rc-service fail2ban start.

الإعدادات الرئيسية: سر ملف .local
من الأخطاء الشائعة جدًا تعديل الملف مباشرةً. jail.confلا تفعل ذلك! قد يتم استبدال هذا الملف عند تحديث النظام. القاعدة الذهبية هي إنشاء نسخة باسم jail.localأي معلمات تضيفها إلى هذا الملف الثاني ستكون لها الأولوية على الملف الأصلي، وسيتم استبدال تغييراتك. آمن من التحديثات.
للبدء، يمكنك استنساخ الملف الأصلي باستخدام sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local ثم افتحه باستخدام محرر النصوص المفضل لديك، مثل nano أو vim. في القسم [DEFAULT] هنا يتم تحديد السلوك العام للنظام:
- وقت الحظر: مدة تجميد عنوان IP الخبيث. يمكن تحديد هذه المدة بالثواني أو باستخدام الحرف "م" للدلالة على الدقائق (مثلاً، 10 دقائق).
- إيجاد الوقت: الفترة الزمنية التي يتحقق خلالها نظام Fail2ban من وجود أخطاء. إذا فشل شخص ما 5 مرات في الساعة، ولكن وقت التحقق كان 10 دقائق، فلن يتم حظره.
- أقصى عدد للمحاولات: عدد المحاولات الفاشلة المسموح بها قبل أن يقول النظام كفى، احظر عنوان IP.
- تجاهل عنوان IP: من الضروري تجنب حظر نفسك. هنا يجب عليك إدخال بياناتك عنوان IP العام أو نطاق شبكة VPN الخاصة بك.
حماية خدمات محددة خطوة بخطوة
بعد ضبط الإعدادات العامة، حان وقت تفعيل الحماية للخدمات التي تهمك أكثر. لكي تعمل الحماية، يجب عليك ضبط enabled = true في القسم الخاص به ضمن jail.local.
الوصول عبر SSH (النقطة الأكثر أهمية)
يُعد المنفذ 22 الهدف الأول. ويُحدد التكوين القوي ذلك. maxretry = 3 وعلى bantime = 3600 (ساعة واحدة). سيقوم برنامج Fail2ban بقراءة الملف. /var/log/auth.log (على نظامي ديبيان/أوبونتو) أو / فار / السجل / آمنة (على CentOS/RHEL) لاكتشاف حالات فشل المصادقة وإغلاق الوصول للمهاجم.
خوادم الويب (أباتشي و إنجينكس)
إذا كان لديك موقع ويب أو متجر إلكتروني، فستحاول البرامج الآلية الوصول إلى مسارات حساسة مثل /wp-admin o /login.phpيمكنك إنشاء فلاتر مخصصة في /etc/fail2ban/filter.d/ للكشف عن هذه الأنماط. على سبيل المثال، لـ حماية ووردبريسيتم رصد أخطاء 403 أو المحاولات الفاشلة في wp-login.php، وحظر عنوان IP إذا تجاوز الحدود المحددة في سجن Apache أو Nginx.
قواعد البيانات وبروتوكول نقل الملفات (FTP)
بالنسبة لـ MySQL، يمكنك مراقبة سجل الأخطاء بحثًا عن العبارة تم رفض الوصول للمستخدمفي حالة بروتوكول نقل الملفات (مثل ProFTPD)، من الضروري التأكد من أن logpath قم بمطابقة المسار الفعلي لسجلاتك، لأنه إذا لم يتمكن Fail2ban من العثور على ملف السجل، فلن تعمل الحماية ببساطة.
إدارة متقدمة باستخدام عميل fail2ban
ليس من الضروري دائمًا تعديل الملفات وإعادة تشغيل الخدمة لإجراء تغييرات سريعة. الأمر fail2ban-client يتيح لك ذلك إدارة النظام أثناء التشغيل من وحدة التحكم.
للاطلاع على السجون النشطة وعدد عناوين IP المحظورة، استخدم sudo fail2ban-client statusإذا كنت ترغب في التعمق أكثر في خدمة ما، مثل SSH، فقم بتشغيل sudo fail2ban-client status sshdعلاوة على ذلك، إذا حدث خطأ لقد حظرت زميلًا أو يمكنك تحرير عنوان IP بنفسك بسرعة باستخدام الأمر sudo fail2ban-client set sshd unbanip IP_A_DESBLOQUEAR.
الصيانة واستكشاف الأخطاء وإصلاحها
إذا لاحظت أن برنامج Fail2ban لا يقوم بالحظر كما ينبغي، فإن أول مكان يجب البحث فيه هو ملف السجل الخاص بالأداة نفسها. /var/log/fail2ban.log. باستخدام tail -f يمكنك أن ترى في الوقت الفعلي من يتم حظره ولماذا.
تذكر أن برنامج Fail2ban يخزن حالة القفل في قاعدة بيانات SQLite في /var/lib/fail2ban/fail2ban.sqlite3لذلك، إذا قمت بإعادة تشغيل الخادم، فسيتم رفع الحظر عن عناوين IP التي تم حظرها. سيظل الحظر قائماً حتى انتهاء فترة العقوبة. عند إجراء أي تغييرات على ملفات التكوين، لا تنسَ تطبيق هذه التغييرات باستخدام sudo systemctl restart fail2ban.
يُحوّل تطبيق هذه الأداة خادمك من هدف سهل إلى حصن آلي، مما يُقلل من حمل وحدة المعالجة المركزية عن طريق التخلص من حركة المرور الضارة على مستوى الشبكة، ويُتيح لك النوم براحة بال مع العلم أن البرامج الضارة لن تتمكن من اختراقه. من خلال الجمع بين استخدام ملفات .local، وإدارة بيئات معزولة محددة، والمراقبة المستمرة للسجلات، ستحصل على نظام دفاعي متعدد الطبقات ضروري لأي مسؤول نظام لينكس.
