كيف تحمي خادمك باستخدام Fail2Ban في Linux
يعد تأمين الخادم أولوية قصوى لأي عمل أو مؤسسة. يعد Fail2Ban أحد أهم الأدوات في مجموعة أدوات مسؤول النظام. يشرح هذا الدليل ماهية Fail2Ban وكيف يمكنك حماية خادمك باستخدام Fail2Ban في Linux الخاص بك من الهجمات.
ما هو Fail2Ban؟
Fail2Ban هي أداة لمنع التطفل تراقب ملفات السجل وتحظر عناوين IP التي تظهر علامات على نشاط ضار. يقوم بذلك عن طريق إنشاء “عوامل تصفية” تطابق أنماطًا معينة في ملفات السجل وتنفيذ إجراءات ، مثل حظر عنوان IP المخالف.
لماذا استخدم Fail2Ban في Linux؟
هناك عدة أسباب لاستخدام Fail2Ban في Linux. يمكن:
- يوفر لك الوقت عن طريق الحظر التلقائي لعناوين IP الضارة.
- تساعد في تأمين الخادم الخاص بك عن طريق تقليل فرص نجاح الهجوم.
- يمنحك راحة البال مع العلم أن خادمك يخضع للمراقبة والحماية.
تثبيت Fail2Ban في Linux
بشكل افتراضي ، يتوفر Fail2Ban في مستودعات Ubuntu. قم بتثبيته باستخدام apt.
sudo add-apt-repository universe sudo apt update && sudo apt install fail2ban -y
سيقوم Fail2Ban بتعيين خدمته في الخلفية ، لكن systemd سيعطلها افتراضيًا. يمكنك البدء وتمكينه بالأوامر التالية:
sudo systemctl start fail2ban sudo systemctl enable fail2ban
تحقق من تشغيل Fail2Ban باستخدام الأمر التالي:
sudo systemctl status fail2ban
سترى ناتجًا مشابهًا للصورة أدناه.
تكوين Fail2Ban في Linux
يحتوي الدليل “/ etc / fail2ban” على ملفات التكوين الخاصة بـ Fail2Ban. بشكل افتراضي ، يأتي Fail2Ban مع ملف “jail.conf” يحتوي على الإعدادات التي سيتم تطبيقها على جميع الخدمات.
ومع ذلك ، فمن الممارسات الجيدة إنشاء ملف “jail.local” محلي وتجاوز الإعدادات في “jail.conf” ، حيث ستفقد أي تغييرات تجريها على “jail.conf” كلما تم تحديث البرنامج.
يمكنك إنشاء ملف “jail.local” الخاص بك باستخدام الأوامر التالية:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
افتح ملف jail.local لتحريره:
sudo nano /etc/fail2ban/jail.local
من المفيد أن تعرف: تعلم كيفية تمكين عمليات تسجيل الدخول عبر SSH بدون كلمة مرور على نظام LINUX.
استكشاف ملف jail.local
سترى ناتجًا مشابهًا كما هو موضح أدناه وقد تغمره عدد الخيارات المتاحة. لكن لا تقلق ، فنحن نوجهك عبر أهم الخيارات.
سترى رمز “#” في بداية السطر ، مما يشير إلى أنه تعليق. يستخدم Fail2Ban هذه لشرح ما يفعله إعداد معين. يمكنك تمكين بعض الإعدادات هنا عن طريق إزالة هذا الرمز.
يحتوي قسم “[DEFAULT]” على الخيارات المطبقة على جميع السجون. هذا هو التكوين العام لـ Fail2Ban. تُظهر لقطة الشاشة التالية مثالاً على ذلك.
هناك أيضًا أقسام أخرى تبدأ باسم الخدمة. ينطبق هذا السجن على خدمة معينة أعلى السجون العالمية.
على سبيل المثال ، هناك قسم لسجن “sshd”. يحتوي هذا القسم على الخيارات الخاصة بخدمة sshd.
نصيحة: يمكنك أيضًا معرفة المزيد حول تقوية الخادم عن طريق تأمين خادم SSH الخاص بك.
تمكين ميزة Autoban
انتقل إلى إعداد “bantime = 1h” وقم بإزالة الرمز “#” في بداية السطر لتمكينه. يعيّن هذا السطر المدة التي سيستغرقها Fail2Ban في تعطيل عنوان IP. الوحدة الافتراضية هي ساعة واحدة. يمكنك أيضًا استخدام وحدات أخرى ، مثل الدقائق (m) أو الأيام (d) أو حتى الأسابيع (w).
يمكنك زيادة أو تقليل هذه القيمة كما تراه مناسبًا. على سبيل المثال ، يمكنك تغيير هذه القيمة إلى 30 مترًا لتقليل مدة الحظر إلى 30 دقيقة.
تغيير الطول الافتراضي لنافذة تسجيل الدخول
الإعدادات التالية هي “maxretry” و “findtime”. إنهم يحددون عدد محاولات تسجيل الدخول التي يمكن للمهاجم القيام بها قبل أن يحظر Fail2Ban عنوان IP الخاص به.
القيم الافتراضية لـ “maxretry” و “findtime” هي 5 و 10 m. إذا فشل IP في المصادقة خمس مرات في عشر دقائق ، فسيقوم Fail2Ban بحظره طوال المدة المحددة بواسطة إعداد bantime.
يمكنك تغيير هذه القيم إلى ما تريد. على سبيل المثال ، يمكنك ضبط “maxretry” على 3 و “findtime” على 5m: سيعطل Fail2Ban عنوان IP إذا فشل في المصادقة ثلاث مرات في خمس دقائق.
تمكين ميزة إشعار Fail2Ban في Linux
الإعدادات التالية هي destemail و sendername و mta. هذه الإعدادات هي ما سيستخدمه Fail2Ban لتكوين إشعارات البريد الإلكتروني.
- إعداد البريد الإلكتروني هو عنوان البريد الإلكتروني الذي سيرسل البرنامج إشعاراته إليه.
- اسم المرسل هو الاسم الذي سيظهر في الحقل “من” في البريد الإلكتروني للإشعار.
- mta هو وكيل نقل البريد الذي سيستخدمه Fail2Ban لإرسال رسائل البريد الإلكتروني. mta الافتراضي هو sendmail ، ولكن يمكنك تغييره إلى شيء آخر مثل mail.
إذا كنت ترغب في تلقي إشعارات البريد الإلكتروني ، فأنت بحاجة إلى إلغاء التعليق على هذه السطور وإدخال القيم المناسبة كما هو موضح.
عند حدوث حظر ، ستتلقى إشعارًا بالبريد الإلكتروني يحتوي على تفاصيل حول الحظر كما هو موضح.
إنشاء أوامر حظر مخصصة
الإعداد التالي هو “action_ =.” يحدد هذا الإجراء الذي يتخذه Fail2ban عندما يحظر عنوان IP. الإجراء الافتراضي هو استخدام iptables لحجب IP حتى انقضاء “bantime”.
يمكنك أيضًا استخدام إجراءات أخرى ، كما هو موضح أدناه. يتمسك هذا البرنامج التعليمي بالإعداد الافتراضي من أجل البساطة.
- action_mw: يرسل إشعارًا بالبريد الإلكتروني عندما يتم حظر عنوان IP ، مرفقًا بمعلومات WHOIS ذات الصلة.
- action_mwl: يرسل إشعارًا بالبريد الإلكتروني عند حظر عنوان IP ، مرفقًا بمعلومات WHOIS ذات الصلة وإدخالات ملف السجل التي أدت إلى الحظر.
- action_xarf: يرسل إشعارًا بالبريد الإلكتروني بتنسيق X-ARF عندما يتم حظر عنوان IP مع إدخالات ملف السجل التي أدت إلى بدء الحظر.
تتوفر العديد من الإجراءات الأخرى ، ولكن من المستحيل تغطيتها جميعًا في هذا البرنامج التعليمي. يمكنك أن تقرأ عن جميع الإجراءات المتاحة في وثائق Fail2ban.
تمكين التكوين الخاص بالخدمة
بصرف النظر عن تكوين السلوك الافتراضي لـ Fail2ban ، من الممكن أيضًا استخدام “ملفات التصفية” المعدة مسبقًا لبعض خدمات الإنترنت الشائعة. هذه ملفات صغيرة كتبها المطورون للبحث عن مخرجات سجل معينة لخادم معين.
على سبيل المثال ، يحتوي ملف “apache-shellshock.conf” على جميع الإعدادات الضرورية للسماح لـ Fail2ban بالتحقق من أي محاولات ضارة لإنشاء خطأ shellshock.
يمكنك العثور على جميع ملفات التصفية المتاحة لنظامك من خلال سرد الدليل “/etc/fail2ban/filter.d”:
ls /etc/fail2ban/filter.d
بمجرد معرفة المرشحات التي تريد استخدامها ، أخبر Fail2ban بتحميلها أثناء بدء التشغيل عن طريق فتح ملف “jail.local” الخاص بك:
sudo nano /etc/fail2ban/jail.local
قم بإنشاء مساحة في “jail.local” حيث يمكنك تنشيط عوامل التصفية الجديدة الخاصة بك. أقوم بإنشاء خاصتي بين عنوان التعليق والكتلة [INCLUDES].
أضف عوامل التصفية التي تريد تنشيطها. على سبيل المثال ، ما يلي هو مقتطف أستخدمه في التكوين الخاص بي:
# Comments: use '#' for comment lines and ';' (following a space) for inline comments [sshd] enabled = true [nginx-bad-request] enabled = true [bitwarden] enabled = true [INCLUDES]
بمجرد الانتهاء من ذلك ، احفظ وأغلق الملف. أعد تشغيل fail2ban لتطبيق التغييرات.
sudo systemctl restart fail2ban
اختبار التكوين الخاص بك
الآن بعد أن قمت بتهيئة Fail2Ban في Linux، حان الوقت لاختباره.
إن أبسط طريقة لاختبار التكوين الخاص بك هي محاولة تسجيل الدخول باستخدام كلمة مرور غير صحيحة عدة مرات في تتابع سريع. يمكنك استخدام اتصال SSH للقيام بذلك.
على جهاز التخلص ، حاول SSH في خادم Fail2ban الخاص بك باستخدام اسم مستخدم “admin”. استبدل “your_server_ip_address” بعنوان IP الفعلي لخادم Fail2ban الخاص بك.
ssh admin@your_server_ip_address
أدخل كلمة مرور عشوائية عند مطالبتك بذلك وكررها عدة مرات. بعد عدة محاولات ، سترى رسالة تفيد بأن الخادم رفض محاولة الاتصال الخاصة بك.
بصرف النظر عن استخدام ssh ، يمكنك أيضًا اختبار ملفات التصفية الأخرى في Fail2ban عن طريق تشغيل “حالة الفشل”. في حالتي ، أستخدم عامل تصفية “nginx-bad-request” الذي يكتشف ما إذا كان هناك مضيف يغمر الخادم بطلبات غير صالحة.
مع العلم بذلك ، يمكنك اختبار هذه الميزة عن طريق إرسال طلبات فارغة عمداً إلى خادم الويب الخاص بك باستخدام curl:
curl -H "User-Agent:" -H "Host:" https://yourwebsite.com -v
التحقق من إجراءات Fail2Ban في Linux
أخيرًا ، قم بتشغيل الأمر التالي على خادم Fail2ban للتحقق من أن fail2ban قد أضاف القواعد الضرورية إلى iptables.
يقوم الأمر grep بتصفية إخراج الأمر iptables. يخبر الخيار -S iptables أن يطبع القواعد بتنسيق يمكن تحليله بسهولة.
sudo iptables -S | grep f2b
سترى ناتجًا مشابهًا لما في الصورة أدناه. تخبر الوسيطة “–reject-with icmp-port-unreachable” iptables بإرسال رسالة لا يمكن الوصول إلى منفذ ICMP إلى العميل عندما يحاول الاتصال. يمكنك أيضًا مشاهدة عناوين IP للأجهزة التي حظرها الخادم.
نصيحة: يجب عليك أيضًا استخدام SELinux لتأمين خادم Linux الخاص بك.
أسئلة شائعة
س1: لماذا أحصل على إشعار فارغ عبر البريد الإلكتروني عندما يحظر Fail2ban عنوان IP؟
الجواب: إذا تلقيت إشعارًا فارغًا بالبريد الإلكتروني ، فمن المحتمل أنك لم تقم بتهيئة خادم البريد بشكل صحيح. تحقق من تهيئة خادم البريد وتأكد من قدرته على إرسال البريد الإلكتروني.
س2: كيف يمكنني إلغاء حظر عنوان IP؟
الجواب: أولاً ، ابحث عن السجن حيث عنوان IP محظور حاليًا: sudo fail2ban-client status <jail_name> ، ثم قم بإلغاء حظر عنوان IP عن طريق تشغيل ما يلي: sudo fail2ban-client set <jail_name> unsanip <ip_address>.
س3: كيف يمكنني عرض ملف سجل fail2ban؟
الجواب: قد ترغب في عرض ملف سجل fail2ban لاستكشاف المشكلات وإصلاحها أو لمعرفة سبب حظر عنوان IP. يحتوي الملف “/var/log/fail2ban.log” على جميع السجلات التي تم إنشاؤها بواسطة fail2ban. استخدم الأمر cat لعرض ملف سجل fail2ban: cat /var/log/fail2ban.log.
س4: لقد قمت بتمكين ملفات تصفية متعددة. لماذا كلهم لا يعملون؟
الجواب: تحدث هذه المشكلة على الأرجح بسبب قيام عامل تصفية بالكتابة فوق ملف مختلف سبقه. تتمثل إحدى طرق إصلاح ذلك في إنشاء ملف الفلتر الخاص بك عن طريق الجمع بين عدة عوامل تصفية معًا.
س5: هل سيحمي Fail2ban الخادم الخاص بي من هجوم DoS؟
الجواب: نعم و لا. بالنسبة للجزء الأكبر ، سيتمكن Fail2ban من منع أي عنوان IP يقوم بإرسال طلبات غير صالحة إلى الخادم الخاص بك. ومع ذلك ، فإن أحد أكبر قيود هذا البرنامج هو أنه لا يمكنه العمل في الأحداث التي لا تنتج إدخال سجل. على هذا النحو ، لا يزال من المهم تأمين خادم Linux الخاص بك باستخدام أدوات أخرى لهذه الأشكال من الهجمات.