لماذا تستضيف Fail2ban ذاتيًا على خادم افتراضي VPS
Fail2ban هو أبسط أدوات الحماية وأكثرها شمولًا لخادم معرَّض: يقرأ ملفات سجلاتك باستمرار، ويطبّق تعبيرات نمطية (المرشّحات) لرصد محاولات الاختراق، ويحظر عنوان IP المخالف بإضافته إلى iptables/nftables لمدة قابلة للضبط. على خادم VPS، يمثّل خط الدفاع الأول الذي يجب إعداده قبل كل شيء آخر، لأنه لا يتطلّب أي اعتماد خارجي، ويستهلك القليل جدًا، ويحمي SSH فورًا من القوة الغاشمة. وإلى جانب SSH، يمكنك توسيعه ليشمل Nginx (محاولات المصادقة، مسح عناوين URL) و Postfix و WordPress أو أي خدمة تكتب سجلات. يعمل كل شيء محليًا على جهازك: لا تخرج أي بيانات، ولا يتدخّل أي خدمة طرف ثالث. إنه الحل المفضّل لحماية متينة ومستقلّة وسهلة التدقيق.
الفوائد الملموسة لهذا القالب
- حظر تلقائي لعناوين IP التي تهاجم SSH بالقوة الغاشمة، منذ المحاولات المشبوهة الأولى.
- مرشّحات لخدمات عديدة: SSH، Nginx، Apache، Postfix، WordPress، ومرشّحات مخصّصة.
- بصمة ضئيلة: يعمل دون مشاكل على أصغر خوادم VPS.
- حظر تصاعدي (التكرار): كلما عاود عنوان IP المخالفة، طالت مدة الحظر.
- إشعارات بالبريد الإلكتروني عند كل حظر لمتابعة الهجمات.
- مستقلّ ومحلّي بالكامل: بلا أي اعتماد على الشبكة، سهل التدقيق وإدارة الإصدارات.
المتطلبات اللازمة لاستضافته
Fail2ban اقتصادي للغاية: يعمل على أي خادم VPS، حتى بمعالج vCPU واحد / 512 ميغابايت، دون أثر ملحوظ. يُثبَّت مباشرةً على النظام (دون حاجة إلى Docker) ويتطلّب صلاحية الوصول بحساب root، وواجهة خلفية لجدار ناري (iptables أو nftables، موجودان افتراضيًا)، والوصول إلى سجلات الخدمات المراد حمايتها (/var/log/auth.log لـ SSH، وسجلات access/error لـ Nginx). لا يلزم أي نطاق أو منفذ إضافي. القاعدة الذهبية: اضبط دائمًا قائمة بيضاء (ignoreip) بعنوان IP الثابت الخاص بك قبل تفعيل الحظر، كي لا تحبس نفسك خارج خادمك.
تثبيت Fail2ban وإعداده على خادمك VPS
تثبيت Fail2ban
على Debian/Ubuntu: sudo apt update && sudo apt install fail2ban. تبدأ الخدمة تلقائيًا. تحقّق باستخدام sudo systemctl status fail2ban.
إنشاء ملف jail.local
لا تعدّل jail.conf مباشرةً أبدًا. بل انسخ إعداداتك إلى /etc/fail2ban/jail.local: هناك تحدّد bantime و findtime و maxretry وقبل كل شيء ignoreip = 127.0.0.1/8 VOTRE_IP لحماية نفسك من الحظر الذاتي.
تفعيل حماية SSH
في jail.local، فعّل الـ jail المسمّى [sshd] مع، على سبيل المثال، maxretry = 3 و bantime = 1h. بعد 3 حالات فشل خلال findtime، يُحظر عنوان IP لمدة ساعة على مستوى الجدار الناري.
إضافة jail لـ Nginx
فعّل الـ jails المسمّاة [nginx-http-auth] و [nginx-botsearch] بتوجيه logpath إلى سجلات Nginx لديك. يحظر ذلك محاولات المصادقة المتكرّرة وعمليات مسح عناوين URL الخبيثة.
إعادة التحميل والتحقّق من الـ jails النشطة
طبّق الإعداد: sudo systemctl restart fail2ban، ثم يسرد sudo fail2ban-client status الـ jails النشطة، ويُظهر sudo fail2ban-client status sshd عناوين IP المحظورة حاليًا.
اختبار الحظر وإلغاؤه
تحقّق من صحة العمل باستخدام sudo fail2ban-client status sshd. لتحرير عنوان IP مشروع حُظر بالخطأ: sudo fail2ban-client set sshd unbanip X.X.X.X.
فعّل الحظر التصاعدي لإنهاك المعاودين: في jail.local، اضبط bantime.increment = true و bantime.factor = 2. كل معاودة جديدة تضاعف مدة الحظر، التي تنتقل بذلك من ساعة واحدة إلى عدة أيام لعناوين IP الأكثر إلحاحًا. اقرن ذلك بتغيير منفذ SSH الافتراضي وتعطيل المصادقة بكلمة المرور (مفاتيح SSH فقط): عندئذٍ يصبح Fail2ban شبكة أمان بدلًا من أن يكون حصنك الوحيد.
الوثائق الرسمية
للإعداد المتقدّم والخيارات الخاصة بالأداة وتغييرات الإصدارات، ارجع إلى الوثائق الرسمية لـ Fail2Ban. يغطّي هذا الدليل النشر على خادم ServOrbit VPS؛ وتبقى وثائق الناشر المرجع للضبط الدقيق.