Skip to content
VDS · الأمان

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.