AppArmor vs SELinux في Linux: فهم MAC وتطبيقه عمليًا

بعد تأمين التحديثات وSSH، يمكن إضافة طبقة حماية أقوى عبر Mandatory Access Control.

في Linux أشهر التقنيات هنا: AppArmor وSELinux.

ما هو Mandatory Access Control (MAC)؟

  • طبقة تقييد إضافية فوق صلاحيات Unix التقليدية
  • تحدد ماذا يمكن للتطبيق الوصول إليه حتى لو كان لديه صلاحيات نظام
  • تحدّ من أثر الاختراق إذا تم استغلال خدمة

AppArmor vs SELinux: الفرق العملي

النقطة AppArmor SELinux
الانتشار الشائع Ubuntu/Debian RHEL/CentOS/Fedora
نمط السياسة Path-based Label-based
التعقيد أسهل نسبيًا أقوى ومرن أكثر لكن أعقد

فحص حالة AppArmor

sudo aa-status
systemctl status apparmor

ستشاهد عدد البروفايلات في وضع enforce أو complain.

أوضاع AppArmor الأساسية

  • Enforce: تطبيق القيود ومنع المخالفات
  • Complain: تسجيل المخالفات بدون منع (للتعلم/التجريب)
sudo aa-enforce /etc/apparmor.d/usr.sbin.nginx
sudo aa-complain /etc/apparmor.d/usr.sbin.nginx

فحص حالة SELinux

sestatus
getenforce

القيم الشائعة: Enforcing أو Permissive أو Disabled.

أوضاع SELinux

  • Enforcing: تطبيق السياسة فعليا
  • Permissive: تسجيل الانتهاكات فقط
  • Disabled: غير مفعّل
sudo setenforce 0   # مؤقت: Permissive
sudo setenforce 1   # Enforcing
تنبيه: تغيير وضع SELinux بـ setenforce مؤقت حتى إعادة التشغيل.

فحص سياق SELinux للملفات والعمليات

ls -Z /var/www/html
ps -eZ | head

إذا كان السياق غير صحيح، قد تُمنع الخدمة حتى لو الصلاحيات التقليدية صحيحة.

تشخيص مشاكل AppArmor/SELinux

sudo journalctl -xe | grep -Ei "apparmor|selinux|avc|denied"
sudo ausearch -m AVC -ts recent

ابحث عن كلمات denied وAVC لمعرفة سبب المنع.

أفضل ممارسات عند التعامل مع MAC

  • لا تعطل AppArmor/SELinux دائمًا لحل المشكلة
  • ابدأ بـ mode مراقبة (complain/permissive) أثناء التشخيص
  • أصلح السياسات أو السياقات بدل إلغاء الحماية بالكامل
  • وثق أي تعديل أمني قمت به

سيناريو شائع: الخدمة تعمل يدويًا لكن تفشل كنظام

  1. تحقق من logs عبر journalctl
  2. ابحث عن denied من AppArmor/SELinux
  3. راجع policy/profile المرتبط بالخدمة
  4. اختبر بعد التعديل مع الحفاظ على الحماية مفعلة

تمرين عملي: فحص حالة MAC على نظامك

aa-status || true
sestatus || true
getenforce || true
sudo journalctl -xe | grep -Ei "apparmor|selinux|denied" | tail -n 20

الهدف من التمرين هو معرفة الطبقة المفعّلة وكيفية قراءة رسائل المنع الأساسية.

FAQ: أسئلة شائعة حول AppArmor وSELinux

ما الفرق بين AppArmor وSELinux؟

كلاهما يوفر Mandatory Access Control، لكن AppArmor يعتمد غالبا على مسارات الملفات بينما SELinux يعتمد على labels وسياسات أكثر تفصيلا.

ما معنى Enforcing وPermissive في SELinux؟

Enforcing يطبق السياسة فعليا ويمنع المخالفات، بينما Permissive يسمح بالتنفيذ لكنه يسجل الانتهاكات للمراجعة.

كيف أعرف هل AppArmor أو SELinux مفعّل على النظام؟

استخدم aa-status لفحص AppArmor أو sestatus لفحص SELinux حسب التوزيعة.

الخطوة التالية

في الدرس القادم سنتعلم مراقبة النظام والأمان بشكل مستمر.

التالي: Monitoring & Security
المحرر الذكي

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

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

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

انضم الآن