يُعدّ Fail2Ban من الأدوات الفعّالة لحماية السيرفرات العاملة بأنظمة Linux، إذ يراقب سجلات الدخول ويكتشف محاولات الدخول الفاشلة المتكرّرة (مثل هجمات التخمين على SSH) ثم يحظر العناوين المهاجمة مؤقتًا عبر الجدار الناري.
المتطلبات قبل البدء
- صلاحية وصول root أو sudo.
- اتصال إنترنت فعّال لتثبيت الحزم.
- معرفة منفذ SSH المستخدم (الافتراضي 22).
تثبيت Fail2Ban حسب نوع التوزيعة
توزيعات RHEL (AlmaLinux / Rocky / CloudLinux / CentOS)
sudo systemctl start fail2ban
مسار سجل الدخول الافتراضي في هذه الأنظمة هو:
توزيعات Debian وUbuntu
sudo apt install -y fail2ban
sudo systemctl start fail2ban
مسار سجل الدخول الافتراضي في هذه الأنظمة هو:
الإعداد الأساسي (مشترك لجميع التوزيعات)
- إنشاء نسخة إعداد محلية:
- فتح الملف للتحرير:
- تفعيل الحماية (Jail) الخاصة بـ SSH كما يلي:
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log # في Ubuntu/Debian
# logpath = /var/log/secure # في AlmaLinux/RHEL/Rocky
maxretry = 5
findtime = 600
bantime = 600
شرح إعدادات الحماية (Jail)
- [sshd]: وحدة الحماية الخاصة بخدمة SSH.
- enabled = true: لتفعيل المراقبة على الخدمة.
- port = ssh: رقم المنفذ (عادة 22).
- filter = sshd: يحدد الفلتر الذي يطابق رسائل الدخول الفاشلة.
- logpath: مسار السجل الذي تتم مراقبته. في Ubuntu/Debian يكون
auth.log، وفي RHEL/AlmaLinux يكونsecure. - maxretry = 5: عدد المحاولات قبل الحظر.
- findtime = 600: المدة الزمنية لحساب المحاولات (10 دقائق).
- bantime = 600: مدة الحظر (10 دقائق).
bantime إلى 3600.التحقق من الحالة والاختبار
logpath حسب توزيعتك، وإلا فلن يتم اكتشاف المحاولات الفاشلة.أخطاء شائعة وحلولها
- bash: nano: command not found
الحل: تثبيت محرر nanosudo dnf install nano -y # في RHEL/AlmaLinux
sudo apt install nano -y # في Ubuntu/Debian - Failed to start fail2ban.service: Unit not found
الحل: تحديث المستودعات وإعادة تحميل الخدماتsudo dnf update -y
sudo apt update
sudo systemctl daemon-reload
sudo systemctl enable --now fail2ban - Fail2Ban لا يحظر أي عناوين:
السبب غالبًا خطأ فيlogpath. تأكد من المسار الصحيح وأعد تشغيل الخدمة.