حماية خادمك من هجمات القوة الغاشمة أمر ضروري. السؤال هو، كيف بالضبط؟ لحسن الحظ، Fail2Ban على مقربة لحماية خادمك، لكن تحتاج تهيئة افتراضية لـ Fail2Ban بعض التعديل لضمان الأمان الأمثل. لا داعي للقلق، فهذا البرنامج التعليمي سيغطي كل ما تحتاج.
في هذا البرنامج التعليمي، ستتعلم كيفية إعداد Fail2Ban وصدها هجمات القوة الغاشمة عن طريق تأمين خادم SSH الخاص بك.
هل أنت مستعد؟ تابع القراءة لتحسين الأمان لخادم SSH الخاص بك!
المتطلبات المسبقة
يتألف هذا البرنامج التعليمي من تعليمات خطوة بخطوة. إذا كنت ترغب في متابعة، تأكد من وجود ما يلي:
- خوادم Ubuntu و Debian – يستخدم هذا البرنامج التعليمي خادما يعمل بنظام Ubuntu 18.04 LTS لإعداد Fail2Ban وخادم Debian 10 لاختبار تكوينات حظر Fail2Ban.
- الوصول الجذري أو امتيازات sudo على الخادم لتنفيذ الأوامر كمستخدم فائق.
- تم تثبيت Fail2Ban في خادم Ubuntu أو Debian.
إعداد جدار ناري أساسي
تحمي Fail2Ban خادمك من خلال مراقبة السجلات وحظر عناوين IP التي تقوم بمحاولات تسجيل الدخول الكثيرة خلال فترة زمنية معينة. ولكن أولاً، ستقوم بإعداد جدار ناري أساسي يمكنك من خلاله إضافة قواعد لحظر الأفعال الخبيثة على الخادم الخاص بك.
1. أولاً، قم بتشغيل الأمر service
أدناه لإيقاف Fail2Ban (fail2ban stop
) عن العمل. قم بإيقاف Fail2Ban عندما تقوم بإجراء تغييرات على ملفات التكوين الخاصة بك حتى تتمكن من اختبار التغييرات والتأكد من عملها كما هو متوقع.

2. قم بتشغيل الأمر apt install
لتثبيت Sendmail
و IPTables-persistent
. Sendmail هو برنامج يستخدمه Fail2Ban لإخطارك عندما يحظر عنوان IP. بينما IPTables-persistent هو برنامج يحفظ إعدادات التكوين التي تغيرت في ملف /etc/sysconfig/iptables.
تثبيت هذه البرامج يحافظ على إعدادات جدار الحماية الخاص بك سليمة حتى لو حدث شيء غير متوقع، مثل انقطاع التيار الكهربائي.
قم الآن بتشغيل كل أمر iptables
أدناه لإعداد جدار الحماية الخاص بك. لن تقوم هذه الأوامر بإنتاج أي إخراج ولكنها ستضيف أربعة قواعد إلى جدار الحماية الخاص بك. هذه القواعد إما تسمح أو تحظر الاتصالات بخادمك.

4. قم بتشغيل الأمر iptables
أدناه لعرض ملخص لما قمت بإعداده في جدار الحماية الخاص بك.
أدناه، تميزت القواعد التي قمت بإضافتها على جدار الحماية الخاص بك.

5. بعد ذلك، قم بتشغيل الأوامر التالية لحفظ قواعدك في ملف /etc/sysconfig/iptables-config وبدء خدمة Fail2Ban. يحتوي ملف iptables-config على جميع قواعد جدار الحماية الدائمة الخاصة بك.
سيقوم Fail2Ban تلقائيًا بإضافة بعض القواعد إلى جدار الحماية الخاص بك لحماية خادمك.
6. في النهاية، قم بتشغيل الأمر iptables
أدناه لعرض قواعد جدار الحماية الخاص بك.
كما هو موضح أدناه، تميزت باللون الأحمر القواعد الجديدة التي أضافها Fail2Ban إلى جدار الحماية الخاص بك.

ضبط تكوين Fail2Ban المحلي الخاص بك
الآن بعد أن لديك جدار ناري أساسي يعمل، حان الوقت لضبط ملف تكوين Fail2Ban المحلي لديك لإضافة مزيد من التحكم في تأمين الخادم الخاص بك. يستخدم هذا البرنامج التعليمي ملف التكوين /etc/fail2ban/jail.conf لأنه يحتوي على جميع الخيارات الضرورية لتكوين الإعدادات العامة لتطبيق Fail2Ban.
ربما ترغب في إنشاء قواعد مخصصة لخادم SSH الخاص بك. إذا كان الأمر كذلك، ستقوم بإنشاء ملف جديد بالاسم jail.local (استنادًا إلى ملف jail.conf) ووضع قواعد SSH الخاصة في ملف jail.local. من خلال ذلك، يمكنك تجاوز الإعدادات في ملف jail.conf لخادمك.
1. قم بتشغيل الأمر awk
أدناه لأداء الإجراءات التالية:
- اطبع المحتوى (
'{ printf "# "; print; }'
) من ملف/etc/fail2ban/jail.conf
. - أنشئ ملفًا بالاسم jail.local (استنادًا إلى ملف jail.conf) يمكنك استخدامه لتجاوز الإعدادات الافتراضية في ملف jail.conf.
- قم بتوجيه محتوى ملف
/etc/fail2ban/jail.conf
إلى أمرtee
. سيؤدي ذلك إلى كتابة محتوى ملفjail.conf
إلى نظام الملفات المحلي الخاص بك (/etc/fail2ban/jail.local
).

2. بمجرد إنشاء ملف jail.local، قم بتشغيل الأمر ls
أدناه. يقوم الأمر بسرد محتويات دليل Fail2Ban الخاص بالخادم الخاص بك (/etc/fail2ban
) للتحقق من توليد ملف jail.local بشكل صحيح.
إذا رأيت ملف jail.local الجديد، كما هو موضح أدناه، فإن ملفك المحلي قد تم إنشاؤه بشكل صحيح.

3. افتح ملف /etc/fail2ban/jail.local في محرر النص الذي تفضله وانتقل إلى القسم [ssh].
ألغِ تعليق الخيارات [sshd] و enabled عن طريق حذف الرمز # أمام الخيارات، كما هو موضح أدناه لتمكين SSH.
من هذه النقطة إلى نهاية البرنامج التعليمي، قم بإزالة الرمز # أمام إحدى الأقسام أو الخيارات لتمكينها.

4. انتقل لأسفل، وألغِ تعليق القسم [DEFAULT] الموضح أدناه. هذا القسم هو حيث تقوم بتكوين الإعدادات الافتراضية لـFail2Ban. سيتم تطبيق أي إعدادات في هذا القسم على جميع jails التي يديرها Fail2Ban.

5. بعد ذلك، انتقل لأسفل إلى القسم bantime، وقم بتعيين bantime لمدة 60 دقيقة. يقوم الخيار bantime بتحديد المدة الزمنية، بالدقائق، التي يتم فيها حظر عنوان IP بعد محاولة تسجيل دخول فاشلة.
الإعداد الافتراضي للوقت المحظور هو 600 ثانية (10 دقائق). يمكنك ضبط هذا الإعداد حسب رغبتك، ولكن من المهم ملاحظة أن كلما كانت قيمة الإعداد الافتراضي للوقت المحظور أقل، كلما زادت الحمل على الخادم الخاص بك.

6. تصفح إلى الخيارات findtime و maxretry. احتفظ بقيمة findtime كما هي (10 دقائق) وقلل قيمة maxretry إلى 3.
الخيار findtime يحدد مدة الوقت، بالدقائق، التي يمكن لعنوان الآي بي أن يفشل في تسجيل الدخول قبل أن يتم حظره. بينما يحدد الخيار maxretry عدد محاولات تسجيل الدخول الفاشلة قبل أن يتم حظر عنوان الآي بي.
الإعداد الافتراضي للخيار findtime هو 10 دقائق، و maxretry هو 5 دقائق. ونتيجة لذلك، سيتم حظر عنوان الآي بي الذي يفشل في تسجيل الدخول 5 مرات خلال فترة 10 دقائق.

7. انتقل لأسفل، ألغِ التعليق وقم بتكوين الخيارات destemail, sender, و mta:
- destemail – أدخل عنوان بريد إلكتروني حيث يرسل Fail2Ban الإشعارات إليه.
- sender – ضبط حقل “من” في البريد الإلكتروني الذي يرسله Fail2Ban إلى destemail.
- mta – احتفظ بالإعداد الافتراضي (sendmail) كما هو. الخيار mta يحدد وكيل تسليم البريد الإلكتروني الذي يستخدمه Fail2Ban لإرسال الإشعارات.

8. توجّه إلى خيارات الـعملية كما هو مبين أدناه، وقم بإلغاء تعليق خيار action_mwl. بفعل ذلك، سيمكن Fail2Ban من إرسال رسائل البريد الإلكتروني لـ logwatch إليك. يمكنك مراجعة رسائل logwatch للتحقيق الإضافي في أي مشاكل أمان محتملة على الخادم الخاص بك.
احفظ التغييرات واخرج من محرر النصوص.

9. قم الآن بتشغيل الأوامر التالية لإعادة تشغيل خدمة fail2ban
الخاصة بك.
10. في النهاية، قم بتشغيل الأمر التالي لفحص حالة خدمة fail2ban
الخاصة بك status
. sudo service fail2ban status
إذا كانت خدمة Fail2Ban تعمل، ستحصل على مخرجات مشابهة لتلك المعروضة أدناه.
إذا كانت خدمة Fail2Ban تعمل، ستحصل على مخرجات مشابهة لتلك المعروضة أدناه.

اختبار تكوينات الحظر الخاصة بك
لقد قمت للتو بتكوين Fail2Ban، لذا الآن حان الوقت لاختبار ما إذا كانت تكوينات الحظر تعمل فعلاً. قم بمحاولة عدة محاولات فاشلة لتسجيل الدخول إلى SSH إلى خادم Fail2Ban الخاص بك من خادم ثانوي وانظر ما إذا كان ذلك الخادم الثانوي قد تم حظره.
1. قم بتسجيل الدخول إلى خادمك الثانوي (ديبيان)، وقم بتشغيل الأمر التالي للاتصال بـ SSH إلى خادم Fail2Ban الخاص بك.
يستخدم هذا العرض التوضيحي خادم Debian 10 بعنوان IP 134.122.20.103 للاتصال بـ fail2ban
إلى خادم fail2ban
الذي يحمل عنوان IP 69.28.83.134
.
2. أدخل كلمة مرور عشوائية عند الطلب واضغط على Enter.
عند المحاولة الأولى، سيتوقف خادم Fail2Ban عن محاولة تسجيل الدخول عبر SSH وسيقوم بطباعة رسالة Permission denied كما هو موضح أدناه. كرّر المحاولة لتسجيل الدخول عبر SSH مرتين إلى ثلاث مرات أخرى، وسيتوقف خادم Fail2Ban في النهاية عن الرد على محاولة تسجيل الدخول عبر SSH الخاصة بك.
في هذه المرحلة، لن تتلقى رسالة Permission denied بعد الآن بل ستظهر لك شاشة فارغة. يشير ظهور شاشة فارغة إلى أن الخادم الثاني الخاص بك (Debian) تم حظره من خادم Fail2Ban.

ولكن ربما لديك بالفعل قائمة بعناوين IP لحظرها من خادم Fail2Ban الخاص بك. إذا كان الأمر كذلك، فافتح ملف jail.local وانتقل إلى القسم [DEFAULT]. قم بإلغاء تعليق الخيار ignoreip وقم بضبط عناوين IP لحظرها، كما هو موضح أدناه.
يمكن أن تكون العناوين إما مدخلات IPv4 أو IPv6 منفصلة أو مفصولة بفواصل.

3. على خادم Fail2Ban الخاص بك (Ubuntu)، قم بإعادة تشغيل الأمر iptables
أدناه لعرض قواعد جدار الحماية الخاص بك.
لاحظ أدناه أن هناك قاعدة جديدة ترفض محاولات تسجيل الدخول عبر SSH من عنوان IP 134.122.20.103.
ستتلقى أيضًا رسالة بريد إلكتروني من Fail2Ban، عند حظر ناجح، مع ملف تسجيل مرفق إذا كان لديك sendmail معدّل على خادم Fail2Ban الخاص بك. تشير إشعارات البريد الإلكتروني إلى أن Fail2Ban قد قام بوقف هجوم القوة العمياء بنجاح وحفظ خادمك من الأضرار المحتملة.

الختام
في جميع أنحاء هذا البرنامج التعليمي، لقد تعلمت كيفية تكوين Fail2Ban على خادم Ubuntu. في هذه اللحظة، يجب أن تكون مجهزًا تجهيزًا جيدًا بالمعرفة لحماية خادم SSH الخاص بك من هجمات الكشف عن كلمات المرور.
الآن، لماذا لا تأخذ هذه المعرفة الجديدة إلى مستوى أعلى؟ ربما تبدأ بـ حظر عناوين IP على جميع المنافذ باستخدام Fail2Ban على خادم Docker؟