في بعض الحالات قد تحتاج إلى إعادة تشغيل السيرفر من خلال منطقة العميل، خصوصًا إذا فقدت الاتصال...
يُعدّ Fail2Ban من الأدوات الفعّالة لحماية السيرفرات العاملة بأنظمة Linux، إذ يراقب سجلات الدخول ويكتشف محاولات الدخول الفاشلة المتكرّرة (مثل هجمات التخمين على SSH) ثم يحظر العناوين المهاجمة مؤقتًا عبر الجدار الناري.
المتطلبات قبل البدء
- صلاحية وصول root أو sudo.
- اتصال إنترنت فعّال لتثبيت الحزم.
- معرفة منفذ SSH المستخدم (الافتراضي 22).
تثبيت Fail2Ban حسب نوع التوزيعة
توزيعات RHEL (AlmaLinux / Rocky / CloudLinux / CentOS)
sudo dnf install -y fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
sudo systemctl start fail2ban
مسار سجل الدخول الافتراضي في هذه الأنظمة هو:
/var/log/secure
توزيعات Debian وUbuntu
sudo apt update
sudo apt install -y fail2ban
sudo apt install -y fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
sudo systemctl start fail2ban
مسار سجل الدخول الافتراضي في هذه الأنظمة هو:
/var/log/auth.log
الإعداد الأساسي (مشترك لجميع التوزيعات)
- إنشاء نسخة إعداد محلية:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
- فتح الملف للتحرير:
sudo nano /etc/fail2ban/jail.local
- تفعيل الحماية (Jail) الخاصة بـ SSH كما يلي:
[sshd]
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
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.sudo systemctl restart fail2ban
التحقق من الحالة والاختبار
sudo fail2ban-client status
sudo fail2ban-client status sshd
تنبيه: تأكد من صحة
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. تأكد من المسار الصحيح وأعد تشغيل الخدمة.
هل تحتاج مساعدة؟ إذا واجهت أي مشكلة أثناء الإعداد، لا تتردد في فتح تذكرة دعم.