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
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) أثناء التشخيص
- أصلح السياسات أو السياقات بدل إلغاء الحماية بالكامل
- وثق أي تعديل أمني قمت به
سيناريو شائع: الخدمة تعمل يدويًا لكن تفشل كنظام
- تحقق من logs عبر journalctl
- ابحث عن denied من AppArmor/SELinux
- راجع policy/profile المرتبط بالخدمة
- اختبر بعد التعديل مع الحفاظ على الحماية مفعلة
تمرين عملي: فحص حالة 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