تأمين خادم Linux للمشاريع خطوة بخطوة

تخيل أن مشروعك اشتغل بشكل ممتاز، ثم في يوم عادي تلاحظ محاولات تسجيل دخول غريبة واستهلاك غير طبيعي للموارد. هذا السيناريو يحدث يوميا على أي خادم متصل بالإنترنت.

لذلك تأمين خادم Linux ليس رفاهية، بل خطوة أساسية قبل أي نشر حقيقي. في هذا الدرس سنبني طبقة Hardening عملية تقلل سطح الهجوم وتحافظ على استقرار المشروع.

لماذا Hardening مهم من أول يوم؟

  • الخادم يتعرض لفحص آلي مستمر بمجرد اتصاله بالإنترنت
  • الإعدادات الافتراضية غالبا ليست كافية للإنتاج
  • تقليل الصلاحيات والخدمات المفتوحة يخفف المخاطر بشكل كبير
  • الوقاية المبكرة أسهل بكثير من الاستجابة بعد الاختراق
قاعدة أمنية: لا تعتمد على أداة واحدة فقط. الأمان الحقيقي = تحديثات + SSH آمن + جدار ناري + مراقبة مستمرة.

الخطوة 1: تحديث النظام وتصحيحات الأمان

قبل أي إعداد آخر، اجعل النظام بأحدث حالة أمنية:

sudo apt update
sudo apt upgrade -y
sudo apt autoremove -y

ثغرات كثيرة يتم إغلاقها عبر تحديثات الحزم. اجعل التحديث عادة دورية.

الخطوة 2: إنشاء مستخدم إداري وتعطيل العمل اليومي بـ root

تشغيل كل شيء بحساب root يزيد المخاطر بشكل كبير.

sudo adduser deploy
sudo usermod -aG sudo deploy

بعد ذلك استخدم حساب deploy للعمل اليومي، وفعّل sudo فقط عند الحاجة.

الخطوة 3: تأمين SSH بالمفاتيح فقط

أفضل ممارسة: منع root عبر SSH وإيقاف كلمات المرور.

sudo nano /etc/ssh/sshd_config

تأكد من الإعدادات التالية:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes

ثم أعد تشغيل الخدمة:

sudo systemctl restart ssh
مهم: اختبر اتصال SSH في نافذة جديدة قبل إغلاق الجلسة الحالية، حتى لا تفقد الوصول للخادم.

الخطوة 4: ضبط UFW والسماح فقط بالمنافذ الضرورية

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose

ما الذي يجب فتحه فعليا؟

الخدمة المنفذ متى تفتحه؟
SSH 22 دائما للإدارة (يفضل مع مفاتيح فقط)
HTTP 80 عند تشغيل موقع ويب
HTTPS 443 عند استخدام SSL/TLS (وهو المعيار)

الخطوة 5: تفعيل Fail2ban ضد محاولات التخمين

Fail2ban يراقب السجلات ويحظر عناوين IP التي تكرر محاولات فاشلة.

sudo apt install -y fail2ban
sudo systemctl enable --now fail2ban
sudo fail2ban-client status

لاحقا يمكنك تخصيص jail.local حسب الخدمات التي تستخدمها فعليا.

الخطوة 6: مراجعة المنافذ والخدمات المفتوحة

أي خدمة غير مستخدمة = سطح هجوم إضافي بدون فائدة.

sudo ss -tulpen
systemctl list-unit-files --type=service | grep enabled

راجع النتائج وعطّل أي خدمة لا تحتاجها.

الخطوة 7: مراقبة السجلات وتجهيز النسخ الاحتياطي

  • راقب السجلات عبر journalctl وملفات /var/log
  • فعّل نسخا احتياطية دورية تلقائية
  • اختبر الاسترجاع فعليا بشكل دوري
  • أنشئ تنبيهات عند فشل الخدمات أو ارتفاع الموارد

Checklist سريعة لتأمين VPS

  1. النظام محدث بالكامل
  2. مستخدم إداري منفصل عن root
  3. SSH بالمفاتيح فقط وroot معطّل
  4. UFW مفعّل بأقل منافذ ممكنة
  5. Fail2ban يعمل بدون أخطاء
  6. مراقبة ونسخ احتياطي جاهزان
نتيجة عملية: بهذه الخطوات يصبح الخادم أكثر صلابة، مع تقليل كبير للمخاطر الشائعة في بيئات الإنتاج.

تمرين سريع (15 دقيقة)

على VPS تجريبي، نفذ هذا التسلسل وتحقق من كل نقطة:

sudo apt update && sudo apt upgrade -y
sudo adduser deploy
sudo usermod -aG sudo deploy
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo apt install -y fail2ban
sudo fail2ban-client status

إذا اكتملت الخطوات، فأنت بنيت أساس أمان قوي لخادم مشروعك على Linux.

الأسئلة الشائعة (FAQ)

هل تغيير منفذ SSH وحده يكفي؟

لا. قد يقلل الضجيج، لكنه ليس بديلا عن المفاتيح، تعطيل root، والجدار الناري.

هل UFW يغني عن Fail2ban؟

لا. UFW يتحكم بالمنافذ، بينما Fail2ban يتعامل مع سلوك محاولات الدخول الفاشلة.

متى أراجع إعدادات الأمان؟

بعد كل تغيير كبير في الخدمات، ومع مراجعة دورية على الأقل مرة شهريا.

جاهز للخطوة التالية؟

في الدرس القادم سنبني سكربتات Bash لتسريع مهام التشغيل والصيانة اليومية.

التالي: أتمتة Bash للمشروع
المحرر الذكي

اكتب الكود وشاهد النتيجة فوراً

جرب الآن مجاناً
قناة ديف عربي

تابع أحدث الدروس والتحديثات مباشرة على واتساب

انضم الآن