Fail2ban ضد تخمين كلمات المرور
كيف تثبّت Fail2ban وتعدّه: حظر تخمين SSH ونماذج الويب، وإدراج عناوينك في القائمة البيضاء، والتحقق من عمله، ورفع الحظر عن نفسك.
آخر تحديث 23 أغسطس 2026
يقرأ Fail2ban السجلات، ويحصي محاولات تسجيل الدخول الفاشلة من عنوان واحد، ويحظره مؤقتًا بقاعدة جدار حماية. وهو لا يغني عن تسجيل الدخول بالمفتاح، لكنه يزيل معظم حركة القوة الغاشمة في الخلفية ويخفف الحمل عن سجلاتك.
التثبيت والإعداد الأساسي
apt install -y fail2ban
استخدم ملفك الخاص، /etc/fail2ban/jail.local — فالتحريرات على jail.conf تُستبدل عند التحديثات:
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
ignoreip = 127.0.0.1/8 203.0.113.5
banaction = ufw
[sshd]
enabled = true
port = 22
maxretry = 3
bantime = 24h
systemctl enable --now fail2ban
fail2ban-client status
fail2ban-client status sshd
ضع عنوان منزلك أو مكتبك في ignoreip — فهذا تأمينك ضد حظر نفسك. وإذا تغيّر عنوانك، تبقى وحدة التحكم في لوحة التحكم على /hosting/vds/m/<id> شبكة أمانك: فهي تعمل بغض النظر عن الشبكة والقواعد.
يجب أن يطابق banaction جدار الحماية لديك: ufw لـ ufw، وnftables-multiport لـ nftables.
أين تتحقق من النتيجة
fail2ban-client status sshd
tail -f /var/log/fail2ban.log
journalctl -u fail2ban -n 50
تُظهر الحالة عدد المحاولات الفاشلة وقائمة العناوين المحظورة. وعلى عنوان عام، يُعدّ العدد اليومي بالمئات أمرًا طبيعيًا، لا دليلًا على هجوم موجّه.
لرفع الحظر عن عنوان (بما في ذلك عنوانك):
fail2ban-client set sshd unbanip 203.0.113.5
الحماية خارج SSH
يستطيع Fail2ban العمل مع أي سجل يُظهر المحاولات الفاشلة.
[nginx-http-auth]
enabled = true
[nginx-limit-req]
enabled = true
logpath = /var/log/nginx/error.log
[postfix-sasl]
enabled = true
لتطبيقك الخاص ستحتاج إلى مرشّح — ملف في /etc/fail2ban/filter.d/ يحتوي على تعبير نمطي يُعلَّم فيه العنوان بـ <HOST>:
[Definition]
failregex = ^.*login failed.*ip=<HOST>.*$
ignoreregex =
اختبر التعبير على سجل حقيقي:
fail2ban-regex /var/log/myapp.log /etc/fail2ban/filter.d/myapp.conf
يُظهر هذا الأمر عدد الأسطر المطابقة. صفر مطابقات يعني أن القاعدة خاطئة — والحماية التي تفشل بصمت أسوأ من عدمها.
الأخطاء الشائعة
| الخطأ | النتيجة | الحل |
|---|---|---|
تحريرات على jail.conf | تُفقد عند التحديث | اكتب في jail.local |
عنوانك ليس في ignoreip | ستحظر نفسك يومًا ما | أضفه، أو اتصل عبر وحدة تحكم لوحة التحكم |
banaction لا يطابق جدار الحماية لديك | لا تُطبَّق الحظرات | طابقه مع ufw أو nftables |
| المرشّح لا يطابق صيغة السجل | صمت بدل الحماية | تحقق باستخدام fail2ban-regex |
| الخدمة لا تستطيع قراءة سجل systemd | حالة فارغة | اضبط backend = systemd |
اختبره فعليًا: أدخل كلمة المرور الخاطئة عمدًا بالعدد المطلوب من المرات من عنوان خارجي، وتأكد من انتهائه في قائمة المحظورات. فـ Fail2ban غير المهيأ يخلق إحساسًا زائفًا بالأمان.
أكمله بتحديد معدل الاتصالات في جدار الحماية نفسه — ufw limit 22/tcp.