0%
تأمين خادم Linux في 10 خطوات أساسية

تأمين خادم Linux في 10 خطوات أساسية

دليل عملي لتأمين خوادم Linux بفعالية ضد التهديدات الحالية، مع أوامر ملموسة وشروحات مفصلة

I

InSkillCoach

· دقيقة

تأمين خادم Linux في 10 خطوات أساسية

يُعدّ تأمين خادم Linux مهارة أساسية لكل مسؤول نظم. ومع تزايد الهجمات الإلكترونية ومحاولات الاختراق، من الضروري وضع استراتيجية فعّالة للتحصين (hardening) منذ النشر الأول للخادم.

يستعرض هذا الدليل 10 خطوات أساسية لتعزيز أمان خوادم Linux لديكم بشكل ملحوظ، سواء كانت مستضافة في بنيتكم التحتية أو في السحابة.

1. إبقاء النظام محدَّثًا

يبدأ أساس أي استراتيجية أمنية بالتحديثات المنتظمة. فالتصحيحات الأمنية تصدر بشكل متكرر لسدّ الثغرات المكتشفة.

لأنظمة Debian/Ubuntu:

# Mise à jour de la liste des paquets
sudo apt update

# Installation des mises à jour
sudo apt upgrade -y

# Mise à jour du noyau et des paquets critiques
sudo apt dist-upgrade -y

لأنظمة RHEL/CentOS/Fedora:

# Mise à jour de tous les paquets
sudo dnf update -y
# ou avec yum sur les systèmes plus anciens
sudo yum update -y

نصيحة احترافية: فعّلوا التحديثات الأمنية التلقائية باستخدام unattended-upgrades على Debian/Ubuntu أو dnf-automatic على Fedora/RHEL.

# Sur Debian/Ubuntu
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

# Sur RHEL/CentOS 8/Fedora
sudo dnf install dnf-automatic
sudo systemctl enable --now dnf-automatic.timer

2. تأمين SSH

غالبًا ما يكون SSH المدخل الرئيسي إلى خادمكم، مما يجعله هدفًا مفضّلًا للمهاجمين.

تغيير المنفذ الافتراضي

عدّلوا الملف /etc/ssh/sshd_config:

# Remplacez 22 par un port non standard (entre 1024 et 65535)
Port 2222

تعطيل المصادقة بكلمة المرور

PasswordAuthentication no
ChallengeResponseAuthentication no

إعداد المصادقة بالمفاتيح

على جهازكم المحلي:

# Créer une paire de clés si vous n'en avez pas
ssh-keygen -t ed25519 -a 100

# Copier la clé publique sur le serveur
ssh-copy-id -i ~/.ssh/id_ed25519.pub utilisateur@serveur

تقييد وصول root والمستخدمين المصرّح لهم

PermitRootLogin no
AllowUsers utilisateur1 utilisateur2

تطبيق التغييرات

sudo systemctl restart sshd

3. إعداد جدار حماية

يُعدّ جدار الحماية المضبوط بشكل صحيح ضروريًا للتحكم في حركة المرور الواردة والصادرة.

UFW (Uncomplicated Firewall) لأنظمة Debian/Ubuntu

# Installation
sudo apt install ufw

# Configuration de base
sudo ufw default deny incoming
sudo ufw default allow outgoing

# Autoriser SSH (sur le port modifié si nécessaire)
sudo ufw allow 2222/tcp

# Autoriser d'autres services selon les besoins
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# Activer le pare-feu
sudo ufw enable

Firewalld لأنظمة RHEL/CentOS/Fedora

# Installation si nécessaire
sudo dnf install firewalld

# Activation du service
sudo systemctl enable --now firewalld

# Configuration de base
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https

# Si vous avez modifié le port SSH
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --permanent --add-port=2222/tcp

# Appliquer les changements
sudo firewall-cmd --reload

4. تثبيت Fail2ban وإعداده

يراقب Fail2ban سجلات نظامكم ويحظر مؤقتًا عناوين IP التي تظهر عليها علامات نشاط خبيث.

# Installation
sudo apt install fail2ban # Debian/Ubuntu
sudo dnf install fail2ban # RHEL/CentOS/Fedora

# Création d'un fichier de configuration local
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

عدّلوا الملف /etc/fail2ban/jail.local لتخصيص الإعدادات:

[DEFAULT]
# Bannir une IP pendant 1 heure (3600 secondes)
bantime = 3600
# Bannir après 5 tentatives échouées
maxretry = 5
# Période d'observation des tentatives (en secondes)
findtime = 600

[sshd]
enabled = true
port = 2222
logpath = %(sshd_log)s
maxretry = 3

فعّلوا الخدمة وشغّلوها:

sudo systemctl enable --now fail2ban

5. تقسيم القرص الآمن وخيارات التركيب

إذا كنتم تُعدّون خادمًا جديدًا، ففكّروا في مخطط تقسيم يتضمن أقسامًا منفصلة لكل من /home و/tmp و/var و/var/log و/var/log/audit، لتجنّب أن يؤثر امتلاء المساحة على النظام بأكمله.

بالنسبة للأنظمة القائمة، أحكموا خيارات التركيب (mount) في الملف /etc/fstab:

# Montage de /tmp avec noexec, nosuid et nodev
/dev/sdXY  /tmp  ext4  defaults,nosuid,nodev,noexec  0 0

# Montage de /home avec nosuid et nodev
/dev/sdXZ  /home  ext4  defaults,nosuid,nodev  0 0

إذا لم تكن لديكم أقسام منفصلة، يمكنكم استخدام أنظمة ملفات مؤقتة:

# Ajouter au /etc/fstab
tmpfs  /tmp  tmpfs  defaults,nosuid,nodev,noexec,size=1G  0 0

طبّقوا التغييرات:

sudo mount -o remount /tmp

6. تأمين النواة باستخدام sysctl

عدّلوا الملف /etc/sysctl.conf لتعزيز إعدادات أمان النواة:

# Désactiver le transfert IP si ce n'est pas un routeur
net.ipv4.ip_forward = 0

# Protection contre les attaques de type Spoofing
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# Ignorer les réponses ICMP broadcast
net.ipv4.icmp_echo_ignore_broadcasts = 1

# Protection contre les attaques SYN flood
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2

# Protection contre les attaques de type martian packets
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1

# Désactiver les pings (optionnel)
net.ipv4.icmp_echo_ignore_all = 1

# Désactiver le protocole IPv6 si non utilisé
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

طبّقوا التغييرات:

sudo sysctl -p

7. تدقيق الحزم المثبّتة والحدّ منها

قلّلوا سطح الهجوم بتثبيت الحزم الضرورية فقط.

سرد الحزم المثبّتة

# Debian/Ubuntu
dpkg -l

# RHEL/CentOS/Fedora
rpm -qa

حذف الحزم غير الضرورية

# Debian/Ubuntu
sudo apt remove paquet-inutile
sudo apt autoremove

# RHEL/CentOS/Fedora
sudo dnf remove paquet-inutile

التحقق من الخدمات قيد التشغيل

sudo systemctl list-units --type=service --state=active

تعطيل الخدمات غير الأساسية

sudo systemctl disable service-non-essentiel
sudo systemctl stop service-non-essentiel

8. إعداد نظام لكشف التسلل

AIDE (Advanced Intrusion Detection Environment) أداة للتحقق من السلامة تكشف التعديلات غير المصرّح بها على ملفات النظام.

# Installation
sudo apt install aide # Debian/Ubuntu
sudo dnf install aide # RHEL/CentOS/Fedora

# Initialiser la base de données
sudo aideinit
# ou
sudo aide --init

# La commande crée une base de données dans /var/lib/aide/aide.db.new
# Sur certains systèmes, il faut la renommer
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db

# Vérifier régulièrement l'intégrité
sudo aide --check

أعدّوا مهمة cron لإجراء فحوصات دورية:

echo "0 4 * * * root /usr/sbin/aide --check | mail -s 'AIDE Integrity Check' admin@example.com" | sudo tee /etc/cron.d/aide-check

9. تعزيز سياسة كلمات المرور

تُعدّ سياسة كلمات المرور القوية ضرورية حتى لو كنتم تستخدمون المصادقة بمفاتيح SSH.

ثبّتوا libpam-pwquality على Debian/Ubuntu أو pam_pwquality على RHEL/CentOS/Fedora.

sudo apt install libpam-pwquality # Debian/Ubuntu
sudo dnf install pam_pwquality # RHEL/CentOS/Fedora

عدّلوا الملف /etc/pam.d/common-password (Debian/Ubuntu) أو /etc/security/pwquality.conf (RHEL/CentOS/Fedora):

# Exemple pour Debian/Ubuntu dans /etc/pam.d/common-password
password requisite pam_pwquality.so retry=3 minlen=12 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 reject_username enforce_for_root

# Exemple pour RHEL/CentOS/Fedora dans /etc/security/pwquality.conf
minlen = 12
dcredit = -1
ucredit = -1
lcredit = -1
ocredit = -1
difok = 3

لإعداد انتهاء صلاحية كلمات المرور:

sudo chage -M 90 -m 7 -W 14 utilisateur

يقوم هذا الأمر بما يلي:

  • يفرض تغيير كلمة المرور كل 90 يومًا (-M 90)
  • يشترط حدًّا أدنى قدره 7 أيام بين كل تغييرين (-m 7)
  • ينبّه المستخدم قبل 14 يومًا من انتهاء الصلاحية (-W 14)

10. مراقبة النظام وتدقيقه

تُعدّ مراقبة السجلات (logs) أمرًا حاسمًا لكشف محاولات الاختراق.

إعداد التسجيل المركزي

بالنسبة للبنى التحتية الأكبر، ففكّروا في إنشاء خادم مركزي لتجميع السجلات.

إعداد auditd لتسجيل متقدم

# Installation
sudo apt install auditd audispd-plugins # Debian/Ubuntu
sudo dnf install audit # RHEL/CentOS/Fedora

# Activer au démarrage
sudo systemctl enable --now auditd

عدّلوا الملف /etc/audit/rules.d/audit.rules لإضافة قواعد مخصصة:

# Surveiller les modifications des fichiers de configuration
-w /etc/passwd -p wa -k identity
-w /etc/group -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/sudoers -p wa -k identity
-w /etc/ssh/sshd_config -p wa -k sshd_config

# Surveiller les échecs d'authentification
-a always,exit -F arch=b64 -S open -F a1&01003 -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access
-a always,exit -F arch=b32 -S open -F a1&01003 -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access
-a always,exit -F arch=b64 -S open -F a1&01003 -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access
-a always,exit -F arch=b32 -S open -F a1&01003 -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access

أعيدوا تحميل القواعد:

sudo auditctl -R /etc/audit/rules.d/audit.rules

مراقبة الاتصالات باستخدام LogWatch

# Installation
sudo apt install logwatch # Debian/Ubuntu
sudo dnf install logwatch # RHEL/CentOS/Fedora

# Exécution manuelle
sudo logwatch --output mail --mailto admin@example.com --detail high

أعدّوا مهمة cron لإرسال تقارير يومية عبر تعديل الملف /etc/cron.daily/00logwatch.

الخاتمة

يُعدّ تأمين خادم Linux عملية مستمرة تتطلب اليقظة والتحديثات المنتظمة. وستتيح لكم هذه الخطوات العشر إرساء أساس متين لحماية أنظمتكم من معظم التهديدات الشائعة.

ولا تنسوا أن هذه القائمة ليست شاملة. فبحسب بيئتكم واحتياجاتكم الخاصة، قد تحتاجون إلى إجراءات إضافية مثل:

  • اعتماد حلول للنسخ الاحتياطي الآلي
  • تطبيق حل للتحكم في الوصول قائم على الأدوار (RBAC)
  • استخدام نظام لمنع التسلل (IPS)
  • إعداد شبكة VPN للوصول عن بُعد
  • تطبيق SELinux أو AppArmor للتحكم الإلزامي في الوصول

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

ما إجراءات الأمان التي وجدتموها الأكثر فعالية لخوادم Linux لديكم؟ شاركونا تجربتكم في التعليقات!

InSkillCoach

نبذة عن InSkillCoach

خبير في التدريب والتقنيات

مدرّب متخصص في التقنيات المتقدمة والذكاء الاصطناعي، تدعمه شركة GNeurone Inc.

الشهادات:

  • AWS Certified Solutions Architect – Professional
  • شهادات Google Cloud
  • Microsoft Certified: DevOps Engineer Expert
  • Certified Kubernetes Administrator (CKA)
  • CompTIA Security+
939
159

التعليقات

التعليقات مدعومة عبر GitHub Discussions

سجّل الدخول باستخدام GitHub للمشاركة في النقاش

تم نسخ الرابط!