🛡️ دليل إجراءات تحصين النظام (Host Security Hardening SOP)

التصنيف: داخلي / مقيد (Internal / Restricted)
نظام التشغيل المستهدف: Fedora Linux (Workstation/Server)
المؤلف: Youssef Khafaja (0xAlphaDark)
الإصدار: 1.1.0


⚠️ إخلاء مسؤولية (Disclaimer)

يركز هذا الدليل على أقصى درجات الأمان، وأحياناً يكون ذلك على حساب الراحة وسهولة الاستخدام.

تنبيه: طبق التغييرات تدريجياً واختبرها دائماً على بيئة افتراضية (VM) أولاً.
بعض الإعدادات قد تعطل الـ VPN، الحاويات (Containers)، أو أدوات التطوير المحلية.


🎯 الجمهور المستهدف

  • مستخدمو لينكس المتقدمون (Power Users).
  • باحثو الأمن السيبراني.
  • مهندسو الأنظمة والعمليات الأمنية (DevSecOps).
  • المهتمون بالخصوصية الرقمية القصوى.

هذا الدليل غير موجه للمستخدم العادي (Casual User).


1. الملخص التنفيذي ونموذج التهديد

يؤسس هذا الإجراء وضعية “الدفاع في العمق” (Defense in Depth). نحن نفترض أن محيط الشبكة (Network Perimeter) قد تم اختراقه بالفعل، ونركز على صمود الجهاز نفسه.

نموذج التهديد (Threat Model):

  1. اختراق الشبكة (Network Intrusion): خدمات غير مرغوب فيها تستمع على 0.0.0.0.
  2. تصعيد الصلاحيات المحلي (LPE): استغلال ملفات SUID، ثغرات النواة، أو الأخطاء في الإعدادات.
  3. التحكم الإلزامي بالوصول (MAC): منع الأضرار بصلاحيات Root عبر SELinux.
  4. الاستدامة (Persistence): برمجيات خبيثة تختبئ في مساحة المستخدم (~/.config)، أو وحدات systemd، أو المهام المجدولة.
  5. الوصول الفيزيائي: هجمات “Evil Maid” والـ BadUSB.

2. المرحلة الأولى: الأساس (SELinux & Firewall)

الهدف: إنشاء طبقات الاحتواء والعزل الأساسية.

2.1. فرض SELinux (غير قابل للنقاش)

هو درع فيدورا الأقوى. حتى لو تم اختراق خدمة ما، يقوم SELinux بحصر الضرر ومنع الانتشار.

1sestatus | grep -i mode
2# يجب أن تكون النتيجة: enforcing

إذا كان معطلاً (Disabled):

1sudo nano /etc/selinux/config
2# قم بتغيير القيمة إلى: SELINUX=enforcing
3sudo touch /.autorelabel
4sudo reboot

2.2. جدار الحماية القائم على المناطق (Zone-Based Firewall)

الإعدادات الافتراضية لـ firewalld غالباً ما تكون متساهلة. سننتقل إلى استراتيجية “الرفض الكامل” (Deny All).

⚠️ تحذير: قد يؤدي هذا لقطع اتصال SSH إذا كنت تعمل عن بعد.

1# 1. تعيين المنطقة الافتراضية لتقوم بإسقاط جميع الحزم (Drop)
2sudo firewall-cmd --set-default-zone=drop

أو استخدام block (يرسل رد ICMP بالرفض، مفيد للـ Debugging):

1sudo firewall-cmd --set-default-zone=block

السماح فقط بالخدمات الضرورية:

1# مثال: السماح لعميل DHCP
2sudo firewall-cmd --permanent --add-service=dhcpv6-client
3# تطبيق التغييرات
4sudo firewall-cmd --reload

التحقق:

1sudo firewall-cmd --list-all

3. المرحلة الثانية: تقليل سطح الهجوم (Attack Surface Reduction)

الهدف: إغلاق المنافذ غير الضرورية وتقليل نقاط الدخول.

3.1. تدقيق المنافذ المستمعة (Listening Ports)

تحديد جميع الخدمات “المزعجة” التي تستمع على الشبكة.

1# -t (tcp), -u (udp), -l (listening), -p (processes), -n (numeric ports)
2sudo ss -tulpn
  • الحالة المستهدفة: مخرجات نظيفة. لا يجب أن تكون هناك خدمة تستمع على 0.0.0.0 ما لم تكن مصرحاً بها صراحة.

3.2. تعطيل البروتوكولات القديمة وبروتوكولات الاستكشاف

خدمات مثل wsdd (استكشاف ويندوز) و avahi (mDNS) توسع سطح الهجوم بشكل غير ضروري.

1# إيقاف، تعطيل، وحجب الخدمات (Mask) لمنع تشغيلها كـ Dependency
2sudo systemctl stop wsdd avahi-daemon cups
3sudo systemctl disable wsdd avahi-daemon cups
4sudo systemctl mask wsdd avahi-daemon cups

3.3. تحصين systemd-resolved

منع هجمات الانتحال المحلية (LLMNR/mDNS Poisoning).

الإجراء: عدل الملف /etc/systemd/resolved.conf:

1[Resolve]
2LLMNR=no               # تعطيل بروتوكول مايكروسوفت القديم
3MulticastDNS=no        # تعطيل mDNS إلا إذا كنت تحتاجه للطابعات
4DNSOverTLS=yes         # تشفير استعلامات DNS
5DNSSEC=yes             # التحقق من صحة الردود (قد يسبب بطء مع بعض المزودين)

التطبيق: sudo systemctl restart systemd-resolved

3.4. تحصين SSH (إذا كانت الخدمة مطلوبة)

إذا كان sshd ضرورياً، تأكد من التزامه بمعايير المصادقة الصارمة.

الإجراء: عدل /etc/ssh/sshd_config:

PermitRootLogin no          # منع دخول الروت مباشرة
PasswordAuthentication no   # استخدام المفاتيح فقط (SSH Keys)
X11Forwarding no            # منع تجاوز عزل الواجهة الرسومية
Banner no                   # عدم تسريب معلومات النظام

إعادة التحميل: sudo systemctl reload sshd


4. المرحلة الثالثة: سلامة النظام والصلاحيات

الهدف: اكتشاف أي تلاعب سابق وإغلاق حدود المستخدم.

4.1. التحقق من سلامة الحزم (RPM Integrity - The Gold Check)

استخدام قاعدة بيانات الحزم غير القابلة للتغيير لاكتشاف الملفات المعدلة.

1# تحقق من كل الحزم (-a)، بتفصيل (-V)
2# استبعاد ملفات الإعدادات ('c') لأن تغيرها طبيعي
3sudo rpm -Va | grep -v '^......... c'
  • تنبيه حرج: ابحث عن الرقم 5 (MD5/Digest mismatch) في مسارات /bin/* أو /sbin/*.

4.2. تدقيق ملفات SUID/SGID

البحث عن البرامج التي تعمل بصلاحيات الروت بغض النظر عن المستخدم الذي شغلها.

1# البحث عن ملفات الروت التي تحمل إذن SUID
2sudo find / -user root -perm -4000 -print 2>/dev/null
  • التحليل: تأكد من عدم وجود برمجيات غير متوقعة (مثل python, vim, find) في هذه القائمة. (راجع GTFOBins).

4.3. أذونات الملفات والـ Umask

تقييد رؤية بيانات المستخدم وجعل الملفات الجديدة خاصة افتراضياً.

1# 1. إغلاق مجلد المنزل (منع المستخدمين الآخرين من التلصص)
2sudo chmod 700 /home/alpha
3
4# 2. تعيين umask صارم في /etc/profile أو ~/.bashrc
5# القيمة 077 تجعل الملفات مقروءة ومكتوبة للمالك فقط.
6umask 077

5. المرحلة الرابعة: تحصين النواة ونظام الملفات

الهدف: إعداد النواة لتكون “مرتابة” (Paranoid) وتقييد نقاط التثبيت.

5.1. تحصين Sysctl

الإجراء: أنشئ الملف /etc/sysctl.d/99-security-hardening.conf:

 1# --- حماية النواة الذاتية ---
 2kernel.kptr_restrict = 2             # إخفاء مؤشرات النواة (منع تسريب العناوين)
 3kernel.dmesg_restrict = 1            # قصر الوصول لسجلات dmesg على الروت
 4kernel.yama.ptrace_scope = 1         # تقييد تتبع العمليات (Anti-debugging)
 5kernel.randomize_va_space = 2        # تفعيل العشوائية الكاملة للعناوين (ASLR)
 6net.core.bpf_jit_harden = 2          # تحصين مترجم BPF JIT ضد الهجمات
 7
 8# --- حماية نظام الملفات ---
 9fs.protected_hardlinks = 1           # منع هجمات TOCTOU عبر الروابط الصلبة
10fs.protected_symlinks = 1            # منع هجمات الروابط الرمزية
11fs.protected_fifos = 2
12fs.protected_regular = 2
13
14# --- تحصين الشبكة ---
15net.ipv4.conf.all.accept_redirects = 0  # تجاهل توجيهات ICMP (منع MITM)
16net.ipv6.conf.all.accept_redirects = 0
17net.ipv4.conf.all.accept_source_route = 0
18net.ipv4.conf.all.log_martians = 1      # تسجيل الحزم ذات العناوين المستحيلة

التطبيق: sudo sysctl --system

5.2. خيارات التثبيت الآمنة (Secure Mount Options)

منع تشغيل البرامج من المجلدات المؤقتة.

الإجراء: تحديث /etc/fstab لمجلد /tmp/home إذا كان قسماً منفصلاً).

  • أضف الخيارات: nodev, nosuid, noexec (لـ /tmp).

  • ملاحظة: خيار noexec قد يمنع بعض السكربتات من العمل، اختبر ذلك.


6. المرحلة الخامسة: صيد الاستدامة (Persistence Hunting)

الهدف: اكتشاف البرمجيات الخبيثة التي تعيد تشغيل نفسها.

  • بدء التشغيل التلقائي (XDG Autostart):

    تحقق من ~/.config/autostart/ و /etc/xdg/autostart/.

  • وحدات Systemd للمستخدم:

    1systemctl --user list-unit-files | grep enabled
    
  • تعديلات الشيل (Hooks):

    1grep -E "alias|export" ~/.bashrc ~/.zshrc ~/.profile
    
  • المؤقتات والمهام المجدولة:

    1crontab -l
    2systemctl list-timers --all
    

7. المرحلة السادسة: التسجيل والاكتشاف (Auditd)

الهدف: تأسيس رؤية واضحة حول “من نفذ ماذا”.

الإجراء: أضف القواعد التالية إلى /etc/audit/rules.d/audit.rules:

1## -- مراقبة التنفيذ --
2# تسجيل جميع الأوامر المنفذة (64-bit & 32-bit)
3-a always,exit -F arch=b64 -S execve -k command_execution
4-a always,exit -F arch=b32 -S execve -k command_execution
5
6## -- الهوية وتصعيد الصلاحيات --
7-w /etc/group -p wa -k identity
8-w /etc/passwd -p wa -k identity
9-w /etc/sudoers -p wa -k priv_esc

التطبيق:

1# استخدام reload بدلاً من restart لتجنب قتل العملية
2sudo service auditd reload
3# أو
4sudo augenrules --load

8. المرحلة السابعة: الأمن الفيزيائي وسلاسل التوريد

الهدف: العزل على مستوى العتاد.

8.1. حماية USBGuard (ضد BadUSB)

منع أجهزة USB غير المصرح بها من الاتصال أثناء قفل الشاشة أو إذا كانت مجهولة.

1sudo dnf install usbguard
2# توليد سياسة أولية تسمح بالأجهزة المتصلة حالياً
3sudo usbguard generate-policy > /etc/usbguard/rules.conf
4sudo systemctl enable --now usbguard

8.2. حاويات بلا صلاحيات (Rootless Containers)

تأكد من أن Podman يعمل بدون صلاحيات روت لاحتواء أي اختراق للحاوية.

1podman info | grep "rootless: true"

8.3. الإقلاع الآمن (Secure Boot)

1mokutil --sb-state
2# التحقق من أن Secure Boot مفعل لحماية سلسلة الإقلاع.

9. المرحلة الثامنة: تشفير الأقراص (Disk Encryption)

تحقق من حالة LUKS:

1lsblk -f

تأكد من أن أقسام النظام (root) والبيانات (home) مشفرة بالكامل.


10. المرحلة التاسعة: النسخ الاحتياطي والاستعادة

الأمان بدون خطة استعادة هو أمان ناقص.

الأدوات الموصى بها:

  • BorgBackup: سطر أوامر، مشفر، ومضغوط.

  • Restic: سريع ويدعم التخزين السحابي.

  • Timeshift: لعمل لقطات للنظام (Snapshots) قبل التحديثات.

تأكد أن النسخ الاحتياطية مشفرة ومحفوظة في مكان منفصل (Offline).


11. روتين الصيانة الدوري

أسبوعياً:

  1. تحديث النظام أمنياً: sudo dnf update --security

  2. فحص السلامة: sudo rpm -Va | grep -v ' c '

  3. مراجعة سجلات الأخطاء: sudo journalctl -p err -b

شهرياً:

  • مراجعة قواعد الجدار الناري.

  • تدقيق سياسات USBGuard.

  • التحقق من تحديثات الـ Firmware (fwupdmgr).


12. الخاتمة

يعكس هذا الدليل الممارسات الدفاعية الحقيقية المستخدمة في البيئات المحصنة. الأولوية هنا للعزل، الرؤية، والقدرة على الاستعادة، وليس للراحة.