لماذا يكون الـVPS عرضة للخطر منذ لحظة التسليم
بمجرد تخصيص عنوان IP لخادمك، تبدأ الروبوتات الآلية في فحصه. تُفهرس المنافذ المفتوحة باستمرار على الإنترنت. يكشف خادم Linux الجديد عن المنفذ 22 افتراضيًا، ويكون مستخدم root متاحًا من أي عنوان IP في العالم. إذا كانت كلمة مرور root ضعيفة أو معاد استخدامها من تسريب سابق، فقد يُخترق خادمك في غضون ساعات أو دقائق. بدون جدار حماية، كل منفذ تفتحه تطبيقاتك المستقبلية يكون متاحًا بلا قيود. بدون نظام كشف التسلل، لن تتلقى أي تنبيه أثناء هجوم القوة الغاشمة. يعالج هذا الدليل هذه المشاكل الثلاث الأساسية باستخدام أدوات موثوقة متاحة مباشرةً في مستودعات توزيعتك الرسمية.
ما الذي يُهيئه هذا الدليل
- مستخدم غير جذر مع sudo — يُقلص سطح الهجوم بتعطيل تسجيلات الدخول المباشرة كـroot على الخادم
- مصادقة SSH بالمفتاح — تُلغي هجمات القوة الغاشمة على كلمات المرور، فقط مفتاحك الخاص يمنح الوصول
- تعطيل وصول root عبر SSH — حتى لو اختُرقت كلمة مرور root، يظل الدخول المباشر مستحيلًا
- جدار حماية UFW — يحجب كل حركة البيانات الواردة افتراضيًا ويسمح فقط بالمنافذ المُصرَّح بها صراحةً
- fail2ban — يحظر تلقائيًا عناوين IP التي تُكثر من محاولات الاتصال الفاشلة على الخادم
- تحديثات أمنية تلقائية — تُطبَّق الرقع الحرجة دون تدخل يدوي يومي على خادمك
- مزامنة ساعة النظام — تضمن سجلات متسقة وشهادات TLS صالحة عبر الخدمات
المتطلبات الأساسية قبل البدء
قبل اتباع هذا الدليل، تأكد من توفر كل ما تحتاجه. التحضير الجيد سيمنعك من الوقوع في موقف حرج في منتصف الطريق، خاصةً أثناء تكوين SSH حيث يمكن أن يحبسك خطأ واحد خارج الخادم تمامًا.
ما تحتاجه
- وصول SSH بصلاحيات root يعمل — يجب أن تتمكن من الاتصال بـ
ssh [email protected] قبل البدء - Ubuntu 22.04 LTS أو Debian 12 — تم اختبار هذا الدليل على كلتا التوزيعتين والأوامر متطابقة
- زوج مفاتيح SSH مُنشأ محليًا — شغّل
ssh-keygen -t ed25519 على جهازك إذا لم يكن لديك واحد بعد - طرفية بتبويبين مفتوحين — احتفظ دائمًا بجلسة root نشطة أثناء تكوين SSH لتفادي الانقطاع
خطوات التصليب الـ7
تحديث النظام
ابدأ بمزامنة قائمة الحزم وتطبيق جميع الرقع المتاحة: apt update && apt upgrade -y. أعد التشغيل إذا تم تثبيت نواة جديدة: reboot. أعد الاتصال بصفتك root بعد إعادة التشغيل قبل الانتقال إلى الخطوة التالية.
إنشاء مستخدم غير جذر مع sudo
أنشئ مستخدمًا جديدًا سيكون حسابك اليومي للعمل. استبدل deploy باسم من اختيارك: adduser deploy. اتبع التعليمات لتعيين كلمة مرور قوية. ثم أضف هذا المستخدم إلى مجموعة sudo: usermod -aG sudo deploy. تحقق من نجاح الإضافة: يجب أن يعرض groups deploy النتيجة deploy sudo.
نسخ مفتاح SSH إلى المستخدم الجديد
من جهازك المحلي، انسخ مفتاحك العام إلى حساب deploy: ssh-copy-id [email protected]. إذا كان ssh-copy-id غير متاح، انسخ يدويًا بالاتصال بصفتك deploy، ثم شغّل: mkdir -p ~/.ssh && chmod 700 ~/.ssh والصق مفتاحك العام في ~/.ssh/authorized_keys مع chmod 600 ~/.ssh/authorized_keys. اختبر الاتصال فورًا في تبويب جديد: ssh [email protected] — لا تغلق جلسة root حتى يتأكد هذا الاتصال.
تصليب إعدادات SSH
عدّل ملف تكوين الـSSH daemon: nano /etc/ssh/sshd_config. عدّل أو أضف هذه التوجيهات: PermitRootLogin no لمنع وصول root المباشر، PasswordAuthentication no لتعطيل المصادقة بكلمة المرور، واختياريًا Port 2222 لتغيير منفذ الاستماع. أعد تحميل الإعداد: systemctl reload sshd. اختبر فورًا الاتصال بالمستخدم الجديد من طرفية أخرى قبل إغلاق جلستك الحالية.
إعداد جدار الحماية UFW
ثبّت UFW إذا لزم: apt install ufw -y. عيّن السياسة الافتراضية: ufw default deny incoming وufw default allow outgoing. اسمح بالمنافذ التي تحتاجها — إذا غيّرت منفذ SSH: ufw allow 2222/tcp، وإلا ufw allow 22/tcp. أضف منافذ الويب: ufw allow 80/tcp وufw allow 443/tcp. فعّل جدار الحماية: ufw enable. أكّد بـY عند الطلب. تحقق من الحالة: ufw status verbose.
تثبيت وتكوين fail2ban
ثبّت fail2ban: apt install fail2ban -y. أنشئ ملف إعداد محليًا لمنع الكتابة فوق إعداداتك عند التحديثات: cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local. عدّل jail.local لتفعيل حماية SSH: في قسم [sshd]، تأكد من وجود enabled = true واضبط bantime = 1h وfindtime = 10m وmaxretry = 5. أعد التشغيل وفعّل الخدمة: systemctl enable --now fail2ban. تحقق من نشاط الـjail الخاص بـSSH: fail2ban-client status sshd.
تفعيل التحديثات الأمنية التلقائية
ثبّت حزمة unattended-upgrades: apt install unattended-upgrades -y. شغّل مساعد الإعداد: dpkg-reconfigure -plow unattended-upgrades وأجب بـYes. للتحقق، راجع /etc/apt/apt.conf.d/20auto-upgrades: يجب أن يتضمن السطرين APT::Periodic::Update-Package-Lists "1"; وAPT::Periodic::Unattended-Upgrade "1";. تأكد أيضًا من نشاط systemd-timesyncd للحفاظ على دقة الساعة: systemctl status systemd-timesyncd.
نصيحة حرجة: اختبر دائمًا اتصال SSH بمستخدمك الجديد في طرفية ثانية قبل إغلاق جلسة root. إذا أغلقت جلسة root دون التحقق من نجاح المصادقة بالمفتاح لـdeploy، فقد تجد نفسك محجوبًا نهائيًا عن خادمك. في حالة الشك، استخدم وحدة تحكم KVM/VNC المتاحة في لوحة تحكم ServOrbit.
المضي قُدُمًا بعد التصليب الأولي
بمجرد اكتمال الخطوات السبع، يكون خادمك أكثر أمانًا بكثير مما كان عليه لحظة التسليم. لكن الأمن عملية مستمرة لا حالة ثابتة. يمكن لأدوات تكميلية عدة تعزيز وضعك الأمني أكثر حسب السياق. للبيئات التي يجب أن تستوفي متطلبات الامتثال (GDPR، PCI-DSS، ISO 27001)، ثبّت auditd: apt install auditd -y ثم systemctl enable --now auditd. يسجّل هذا الديمون جميع نداءات النظام الحساسة — تنفيذ الأوامر والتعديلات على الملفات والاتصالات — ويُيسّر عمليات التدقيق التنظيمية. لحماية أكثر تقدمًا من شبكات الروبوت وعمليات الفحص المنسقة، يُعدّ CrowdSec بديلًا ممتازًا لـfail2ban بذكائه الجماعي ولوحات مراقبته الحديثة.
fail2ban مقابل CrowdSec: أيهما تختار؟
| المعيار | fail2ban | CrowdSec |
|---|---|---|
| سهولة التثبيت | بسيط جدًا (apt) | بسيط (سكريبت رسمي) |
| الذكاء الجماعي | لا (محلي فقط) | نعم (قاعدة بيانات مشتركة) |
| واجهة المراقبة | CLI فقط | لوحة ويب مدمجة |
| استهلاك الموارد | منخفض جدًا | منخفض إلى متوسط |
| الأنسب لـ | خوادم بسيطة ومبتدئين | بنية تحتية متعددة الخوادم والامتثال |
استكشاف الأخطاء: مشاكل شائعة بعد التصليب
حتى مع إجراء دقيق، قد تجد نفسك محجوبًا أو تواجه سلوكًا غير متوقع. إليك الحالات الثلاث الأكثر شيوعًا وكيفية حلها. الحالة الأولى: احتُجزت خارج SSH. اتصل عبر وحدة تحكم KVM أو VNC في لوحة ServOrbit، التي توفر وصولًا مباشرًا للخادم بمعزل عن SSH. بعد الاتصال عبر وحدة التحكم، يمكنك إصلاح إعداد sshd أو إضافة مفتاحك في authorized_keys أو إعادة تعيين كلمة مرور. الحالة الثانية: حظر fail2ban عنوان IP الخاص بك. أزل الحظر من وحدة التحكم أو من IP آخر: fail2ban-client set sshd unbanip YOUR_IP. لمنع تكراره، أضف IP الثابت الخاص بك في قسم [DEFAULT] من jail.local: ignoreip = 127.0.0.1/8 YOUR_IP. الحالة الثالثة: غيّرت منفذ SSH لكن نسيت فتحه في UFW قبل إعادة تشغيل sshd. أعد الاتصال عبر وحدة التحكم، أضف القاعدة المفقودة ufw allow 2222/tcp وشغّل ufw reload.
الخلاصة
في أقل من ساعة، حوّلت خادمًا هشًا إلى أساس متين: وصول root عبر SSH معطّل، فقط المفاتيح المشفرة تتيح تسجيل الدخول، جدار حماية يصفّي كل حركة بيانات غير مصرّح بها، fail2ban يحجب المهاجمين تلقائيًا، وتُطبَّق رقع الأمان دون تدخل يدوي. تمثّل هذه الخطوات السبع الحدّ الأدنى المطلق لأي خادم مكشوف على الإنترنت. لا تحلّ محل أمان مستوى التطبيق (HTTPS، رؤوس الأمان، التحقق من المدخلات) لكنها تُغلق أكثر متجهات الهجوم استغلالًا على خوادم VPS Linux. احرص على توثيقها في دليل فريقك وتطبيقها منهجيًا على كل خادم جديد تُهيّئه.