Home Knowledge base Skyline Cloud كيفية حماية الخادم باستخدام UFW وFail2ban KNOWLEDGE BASE

كيفية حماية الخادم باستخدام UFW وFail2ban

دليل عملي خطوة بخطوة لتأمين خادم لينكس باستخدام جدار الحماية UFW ونظام منع التسلل Fail2ban — إغلاق المنافذ غير المستخدمة، تحديد معدل اتصالات SSH، والحظر التلقائي لهجمات التخمين.

ما الذي ستبنيه

يتعرّض كل خادم متصل بالإنترنت للفحص خلال دقائق من تشغيله — إذ تبحث البرامج الآلية عن المنافذ المفتوحة وتنهال على خدمة SSH بمحاولات تخمين كلمات المرور. توجد أداتان خفيفتان ومجرّبتان تتوليان معظم هذه الحماية نيابةً عنك:

  • UFW (جدار الحماية غير المعقّد) — واجهة سهلة الاستخدام لـ iptables/nftables تتحكم في المنافذ المفتوحة.
  • Fail2ban — يراقب ملفات السجل بحثاً عن محاولات الدخول الفاشلة المتكررة، ويحظر عناوين IP المسيئة مؤقتاً.

يشرح هذا الدليل إعداد كلتيهما على خادم Debian أو Ubuntu (الأوامر متطابقة تقريباً على التوزيعات الأخرى). ينطبق سواء كنت تشغّل خادماً سحابياً أو افتراضياً أو مخصّصاً، وهو جزء من مجموعة المعرفة الخاصة بنا حول الخوادم الافتراضية والسحابية في السعودية.

المتطلبات المسبقة

  • خادم لينكس يمكنك الوصول إليه عبر SSH.
  • مستخدم يملك صلاحيات sudo (لا تنفّذ ذلك بصفتك root عبر اتصال مكشوف دون وجود وسيلة احتياطية).
  • منفذ SSH الخاص بك (الافتراضي هو 22؛ وإذا غيّرته فاستخدم قيمتك الفعلية في كل الخطوات).

تحذير: قد يمنعك جدار الحماية من الوصول إلى خادمك. قبل تفعيل UFW، تأكد من وجود القاعدة التي تسمح باتصال SSH. وإذا كنت تستخدم مزوّداً سحابياً، فأبقِ وحدة التحكم عبر الويب أو وصول الاستعادة متاحاً لتتمكن من التعافي إذا ارتكبت خطأ.

الخطوة الأولى — تثبيت UFW وإعداده

تأتي أداة UFW ضمن معظم نسخ Ubuntu. ثبّتها عند الحاجة:

sudo apt update
sudo apt install ufw

اضبط الإعدادات الافتراضية السليمة — رفض كل حركة المرور الواردة، والسماح بكل الصادرة:

sudo ufw default deny incoming
sudo ufw default allow outgoing

هذا هو جوهر السياسة الجيدة لجدار الحماية: لا شيء يصل إلى خدماتك ما لم تسمح به صراحةً.

الخطوة الثانية — السماح بالخدمات التي تحتاجها فعلاً

قبل تشغيل جدار الحماية، افتح المنافذ التي يستخدمها خادمك. اسمح بـ SSH أولاً دائماً وإلا ستُقطع عنك الجلسة:

sudo ufw allow OpenSSH

تقرأ UFW ملفات تعريف التطبيقات المسمّاة من /etc/ufw/applications.d. اعرض المتاح منها عبر sudo ufw app list. وإذا غيّرت منفذ SSH، فاسمح به صراحةً بدلاً من ذلك:

sudo ufw allow 2222/tcp

افتح حركة الويب إذا كنت تشغّل موقعاً أو خدمات البريد الإلكتروني للأعمال والويب:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

يمكنك حصر القاعدة على مصدر موثوق — مثلاً، السماح بالوصول إلى قاعدة البيانات من خادم التطبيق لديك فقط:

sudo ufw allow from 10.0.0.5 to any port 3306 proto tcp

الخطوة الثالثة — تحديد معدل SSH وتفعيل جدار الحماية

تعمل قاعدة limit في UFW على تقييد الاتصالات من أي عنوان IP يحاول الاتصال أكثر من 6 مرات خلال 30 ثانية — وهي عقبة رخيصة وفعّالة في وجه أدوات التخمين:

sudo ufw limit OpenSSH

والآن فعّل جدار الحماية:

sudo ufw enable

تأكّد من قواعدك عبر عرض مرقّم:

sudo ufw status numbered

يشبه الناتج المتوقّع ما يلي:

Status: active

     To                         Action      From
     --                         ------      ----
[ 1] OpenSSH                    LIMIT       Anywhere
[ 2] 80/tcp                     ALLOW       Anywhere
[ 3] 443/tcp                    ALLOW       Anywhere

لحذف قاعدة، أشِر إلى رقمها: sudo ufw delete 2.

الخطوة الرابعة — تثبيت Fail2ban

تغلق UFW المنافذ، لكن المنافذ التي يجب أن تبقى مفتوحة (مثل SSH) لا تزال معرّضة للتخمين. يراقب Fail2ban السجلات ويحظر المسيئين المتكررين:

sudo apt install fail2ban

على الأنظمة الحديثة يقرأ Fail2ban سجلّه عبر systemd، لذا يعمل مباشرةً دون إعداد إضافي. تأكّد من أن الخدمة قيد التشغيل:

sudo systemctl status fail2ban

الخطوة الخامسة — إعداد Fail2ban عبر ملف jail.local

لا تعدّل ملف jail.conf مباشرةً أبداً — فهو يُستبدل عند الترقية. أنشئ بدلاً منه ملف تجاوز محلي:

sudo nano /etc/fail2ban/jail.local

أضف ما يلي:

[DEFAULT]
# لا تحظر شبكاتك الموثوقة. أضف عنوان مكتبك أو منزلك.
ignoreip = 127.0.0.1/8 ::1

# مدة استمرار الحظر (10 دقائق).
bantime  = 10m

# النافذة الزمنية لاحتساب الإخفاقات.
findtime = 10m

# عدد الإخفاقات المسموح بها قبل الحظر.
maxretry = 5

# اطلب من Fail2ban التنفيذ عبر UFW.
banaction = ufw

[sshd]
enabled = true

تستخدم منظومة [sshd] مرشّح sshd المدمج الموجود في /etc/fail2ban/filter.d/sshd.conf. وضبط banaction = ufw يجعل Fail2ban يُدرج قواعد الرفض عبر جدار حمايتك القائم بدلاً من العبث بـ iptables الخام.

أعد التشغيل لتطبيق التغييرات:

sudo systemctl restart fail2ban

الخطوة السادسة — التحقق والمراقبة

تحقّق من الحالة العامة ومن منظومة SSH تحديداً:

sudo fail2ban-client status
sudo fail2ban-client status sshd

تُظهر حالة المنظومة عناوين IP الفاشلة والمحظورة حالياً:

Status for the jail: sshd
|- Filter
|  |- Currently failed: 1
|  |- Total failed:     23
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 1
   |- Total banned:     4
   `- Banned IP list:   203.0.113.42

لرفع الحظر عن عنوان يدوياً:

sudo fail2ban-client set sshd unbanip 203.0.113.42

الخط الأساسي الموصى به

الإعداد القيمة السبب
الوارد الافتراضي في UFW deny مغلق افتراضياً
قاعدة SSH limit تبطئ التخمين
bantime 10m1h تعاقب المسيئين المتكررين
maxretry 35 صارمة لكنها تتسامح مع الأخطاء المطبعية
ignoreip عناوين الإدارة لديك تجنّب حظر نفسك

خطوات إضافية متقدمة

في خوادم الإنتاج، فعّل أيضاً منظومات (jails) لأي خدمة تكشفها (مثل nginx-http-auth أو منظومة البريد لديك)، واستخدم مفاتيح SSH بدلاً من كلمات المرور، وفكّر في bantime أطول أو تصاعدي. يُعدّ UFW وFail2ban خطاً أساسياً قوياً، لكنهما ليسا برنامجاً أمنياً متكاملاً — أبقِ الحزم محدّثة بالتصحيحات وانسخ بياناتك احتياطياً بانتظام عبر النسخ الاحتياطي السحابي.

تُعدّ استضافة أعمالك داخل المملكة أمراً مهماً للأداء ولتلبية متطلبات إقامة البيانات الخاصة بـ نظام حماية البيانات الشخصية (PDPL) والهيئة الوطنية للأمن السيبراني (NCA) والهيئة السعودية للبيانات والذكاء الاصطناعي (SDAIA). تشغّل سكايلاين كلاود خوادم سحابية وافتراضية وأجهزة مخصّصة داخل السعودية مع دعم محلي بالعربية وتسعير شفّاف.

هل أنت مستعد لنشر خادم محصّن؟ أنشئ حسابك في سكايلاين كلاود وأطلق خادماً افتراضياً خلال دقائق.

SKYLINE Engineering

@skyline

The engineering team at SKYLINE Industrial Solutions. We publish field-tested guides drawn from real KSA and GCC deployments.

See author profile
SKYLINE engineering services

Need this implemented for you?

Reading is free — building it right takes a team. SKYLINE engineers ship Skyline Cloud for Aramco vendors, banks, hospitals and government agencies across Saudi Arabia. Talk to us before you start.

Aramco Approved Contractor ISO 9001 · ISO 27001 SAMA CSF aligned NCA ECC ready 247+ KSA clients

Comments

0 total · 0 threads
Be the first to leave a comment.