في ٢٠٢٥، ٧٠٪ من اختراقات السيرفرات سببها إعدادات افتراضية + كلمات سر ضعيفة + تحديثات متأخرة. المقال ده مش قائمة طويلة من الـ best practices النظرية، ده ١٠ خطوات بنتطبقها فعلاً على كل سيرفر بنديره.

١. غيّر بورت SSH الافتراضي

الـ bot اللي بيمسح الإنترنت بيجرب بورت ٢٢. لو غيّرته لأي بورت تاني (مثلاً ٢٢٢٢ أو ٥٠٢٢)، ٩٥٪ من الهجمات الآلية بتبطل.

# /etc/ssh/sshd_config
Port 5022
PermitRootLogin no
PasswordAuthentication no

الـ PasswordAuthentication no مهم: استخدم SSH keys بس. لو لسه بتستخدم password، أنت معرض لـ brute-force.

٢. فعّل UFW Firewall

Ubuntu Firewall بسيط وفعّال. القاعدة: امتنع الكل، اسمح اللي محتاجه بس.

ufw default deny incoming
ufw default allow outgoing
ufw allow 5022/tcp   # SSH
ufw allow 80/tcp     # HTTP
ufw allow 443/tcp    # HTTPS
ufw enable

لو عندك service تانية (مثلاً قاعدة بيانات على بورت ٣٣٠٦)، ما تفتحهاش للعامة. اربطها بـ 127.0.0.1 فقط.

٣. استخدم Fail2Ban للحماية من brute-force

Fail2Ban بيتابع log بتاع SSH (وأي service تانية) ويحظر IP اللي بيجرب كذا مرة.

apt install fail2ban
# /etc/fail2ban/jail.local
[sshd]
enabled = true
port = 5022
maxretry = 3
bantime = 3600

بعد ٣ محاولات فاشلة، IP بيتحظر ساعة. ممكن تزوّد الـ bantime لـ ٢٤ ساعة.

٤. حدّث كل الـ packages أسبوعياً

الثغرات بتتكتشف يومياً. لو بتحدّث كل شهر، أنت معرض.

# /etc/cron.weekly/auto-update
apt update
apt upgrade -y
apt autoremove -y

أو استخدم unattended-upgrades للتحديثات الأمنية أوتوماتيك:

apt install unattended-upgrades
dpkg-reconfigure -plow unattended-upgrades

٥. أغلق الخدمات اللي مش محتاجها

كل service شغالة = منفذ مفتوح = احتمال اختراق. شوف الخدمات الشغالة:

ss -tlnp

أي service مش محتاجها، أوقفها وامنعها من البدء مع السيرفر:

systemctl stop postfix
systemctl disable postfix

٦. استخدم HTTPS فقط (مع HSTS)

لو عندك موقع، استخدم Let's Encrypt لتوليد شهادة مجانية:

apt install certbot python3-certbot-nginx
certbot --nginx -d example.com

بعدين فعّل HSTS في الـ nginx config:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

HSTS بيخلي المتصفح يرفض HTTP نهائياً، حتى لو المستخدم كتب http://.

٧. اعمل backups آلية + اختبرها

Backup من غير test = وهم. القاعدة:

  • Daily backup لـ /etc, /var/www, /home, /var/lib/mysql.
  • Weekly backup كامل للسيرفر (snapshot).
  • Monthly: استعادة backup على سيرفر test.

اعمل الـ backup على سيرفر تاني (مش نفس السيرفر). ولو ميزانيتك تسمح، على cloud (S3, Backblaze B2).

٨. فعّل Two-Factor Authentication لـ SSH

حتى لو سرقوا مفتاح SSH، محتاج OTP كمان.

apt install libpam-google-authenticator
google-authenticator   # ركّب لكل مستخدم

ثم في /etc/ssh/sshd_config:

ChallengeResponseAuthentication yes
AuthenticationMethods publickey,keyboard-interactive

٩. راقب الـ logs

استخدم logwatch أو rsyslog + central log server. الـ logs المهمة:

  • /var/log/auth.log (محاولات الدخول).
  • /var/log/nginx/access.log و error.log.
  • /var/log/mysql/error.log.
  • /var/log/fail2ban.log.

لو سيرفر مهم، اعمل alerting (مثلاً عبر email أو Telegram bot) عند:

  • محاولة root login فاشلة.
  • زيادة مفاجئة في الـ traffic.
  • امتلاء disk.

١٠. استخدم AIDE أو Lynis للمراجعة الدورية

AIDE (Advanced Intrusion Detection Environment) بيتابع تغييرات الملفات:

apt install aide
aideinit
cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db
# بعد أسبوع:
aide --check

Lynis أداة audit ممتازة بتدّيك تقرير بالثغرات:

apt install lynis
lynis audit system

شغّل Lynis شهرياً، وراجع التحذيرات.

الـ ROI من التأمين

تأمين سيرفر بـ ١٠ خطوات زي دي = يوم شغل. التكلفة: وقتك بس. الفايدة:

  • تقليل احتمال الاختراق بـ ٩٠٪.
  • اكتشاف الاختراق (لو حصل) بسرعة.
  • استعادة سريعة من أي مشكلة.
  • اكتمال متطلبات GDPR و قانون حماية البيانات المصري.

عميل عندنا، قبل التأمين كان بيتعرض لـ ٥٠٠ محاولة SSH يومياً. بعد التأمين، صفر. الفرق مش سحر، ده مجرد إغلاق الأبواب المفتوحة.

الخلاصة

تأمين السيرفر مش هدف، ده عملية مستمرة. ابدأ بـ ٥ خطوات (port, firewall, fail2ban, updates, backups) النهاردة. خلّص الباقي خلال شهر. وبعدها راجع كل ربع سنة.

محتاج مساعدة في تأمين سيرفرك؟ بنقدّم audit أمني شامل مع تقرير بالثغرات وخطوات الإصلاح.