بسم الله الرحمن الرحيم
الحمد لله رب العالمين، وصلى الله وسلم وبارك على عبده ورسوله نبينا محمد وعلى آله وصحبه أجمعين
السلام عليكم ورحمة الله وبركاته
يعتبر AppArmor واحدًا من أهم أنظمة الحماية المتقدمة في توزيعات لينكس. وهو نظام أمان يعتمد على فرض القيود والتحكم في صلاحيات التطبيقات، بهدف الحدّ من الأضرار المحتملة في حال تعرّض برنامج للاختراق.
يُستخدم AppArmor على نطاق واسع في توزيعات مثل Ubuntu و Debian و openSUSE.
في هذا المقال، سأشرح لك مفهوم AppArmor، طريقة عمله، ميزاته، مكوناته، كيفية إنشاء ملفات الحماية (Profiles)، الفرق بينه وبين SELinux، وأمثلة عملية.
1. تعريف AppArmor
AppArmor (Application Armor)
هو نظام MAC – Mandatory Access Control.
يعني ذلك أنه يفرض سياسة وصول صارمة تُحدد ما يستطيع التطبيق فعله حتى لو كان يعمل بصلاحيات الجذر root.
بدل أن يعتمد النظام على صلاحيات المستخدم فقط (DAC)، يقوم AppArmor بتحديد قائمة واضحة من:
الملفات المسموح للتطبيق قراءتها
الملفات المسموح كتابتها
الشبكات التي يمكن الوصول إليها
القدرات (Capabilities) التي يمكن استخدامُها
المناطق المحظورة بالكامل
هذه السياسة تُكتب داخل ملفات تُعرف باسم profiles.
2. لماذا نحتاج AppArmor؟
لنفترض وجود برنامج ضعيف يحتوي ثغرة.
لو استغلّها مهاجم، فإنه يستطيع:
✔ الوصول لملفات النظام
✔ تنفيذ أوامر بجانب التطبيق
✔ التجسس على الشبكة
✔ تحميل ملفات ضارة
لكن مع AppArmor:
❌ التطبيق المخترق لن يستطيع الوصول لملفات غير مصرح بها
❌ لن يستطيع الاتصال بشبكة غير محددة
❌ لن يستطيع تنفيذ أوامر خارج حدود ملف الحماية
وهذا ما يجعل AppArmor فعالًا جدًا.
3. مكونات AppArmor
يتكون AppArmor من ثلاثة عناصر رئيسية:
(1) نواة AppArmor Kernel Module
وهو الجزء المسؤول عن تطبيق القيود مباشرة داخل نواة لينكس.
(2) ملفات الحماية (Profiles)
توجد عادة في:
```
/etc/apparmor.d/
```
وهي ملفات نصية تحدد المسموح والممنوع لكل تطبيق.
(3) أدوات الإدارة Userspace Tools
مثل:
`aastatus` لعرض الحالة
`aaenforce` لتفعيل الوضع الصارم
`aacomplain` وضع الشكوى (تسجيل فقط)
`aalogprof` إنشاء بروفايلات تلقائيًا من السجلات
`apparmor_parser` لتحميل البروفايلات في النواة
4. أوضاع عمل AppArmor
لـ AppArmor وضعي تشغيل:
🔹 Enforce Mode (الوضع الصارم)
يمنع كل ما هو غير مسموح ويسجل المخالفة.
```
sudo aaenforce /etc/apparmor.d/usr.bin.firefox
```
🔹 Complain Mode (وضع الشكوى)
لا يمنع شيئًا، لكنه يسجل أي محاولة مخالِفة.
يُستخدم لإنشاء بروفايلات جديدة بدون تخريب عمل البرنامج.
```
sudo aacomplain /etc/apparmor.d/usr.bin.firefox
```
5. طريقة عمل AppArmor — كيف يفرض الحماية؟
يعتمد AppArmor على تحديد مسارات الملفات pathbased بدل الـ labelbased (مثل SELinux).
فكل تطبيق يملك ملف حماية يحدد:
الملفات التي يمكنه قراءتها `r`
الكتابة `w`
التنفيذ `x`
الشبكات `network`
القدرات `capability`
وموارد النظام الأخرى
مثال بسيط على قواعد AppArmor:
```
/usr/bin/curl {
/etc/resolv.conf r,
/tmp/ rw,
network inet6 stream,
}
```
هنا:
يمكن للبرنامج قراءة resolv.conf
يمكنه القراءة/الكتابة داخل /tmp
يمكنه فتح اتصال شبكي عبر IPv6 فقط
أي مخالفة → يتم منعها وتسجيلها.
6. مزايا AppArmor
✔ سهل التعلم مقارنة بـ SELinux
✔ يعتمد على الملفات pathbased
✔ إنشاء بروفايلات تلقائيًا عبر `aalogprof`
✔ حماية قوية لتطبيقات السيرفر مثل Apache – MySQL
✔ حماية snap packages (Ubuntu)
✔ تكامل ممتاز مع Ubuntu و Debian
✔ يمكن تشغيله مع Docker و LXD
7. عيوب AppArmor
❌ أقل قوة وعمقًا مقارنةً بـ SELinux
❌ يعتمد على المسارات، فإذا تم تغيير المسار يجب تحديث البروفايل
❌ ليس مثبتًا افتراضيًا في جميع التوزيعات
❌ بعض التطبيقات قد تحتاج ضبطًا يدويًا
8. الفرق بين AppArmor و SELinux
AppArmor أسهل
SELinux أقوى.
9. كيفية إدارة AppArmor في لينكس
عرض حالة AppArmor
```
sudo aa-status
```
إذا ظهر خطأ أيضًا، فهذا يعني غالبًا أن AppArmor غير مثبت أو غير مفعل على نظامك (خصوصًا على Debian إذا لم تثبّته يدويًا).
✅ تثبيت AppArmor على Debian/Ubuntu
sudo apt update
sudo apt install apparmor apparmor-utils
إيقاف AppArmor مؤقتًا
```
sudo systemctl stop apparmor
```
تفعيل AppArmor
```
sudo systemctl start apparmor
```
إعادة تحميل بروفايل
```
sudo apparmor_parser r /etc/apparmor.d/usr.bin.firefox
```
10. مثال ملف حماية كامل (Profile Example)
مثال لبروفايل Firefox:
```
الملف: /etc/apparmor.d/usr.bin.firefox
/usr/bin/firefox {
السماح بقراءة ملفات النظام الأساسية
/usr/lib/firefox/ r,
/etc/ r,
السماح بإنشاء ملفات داخل home
owner @{HOME}/.mozilla/ rwk,
منع الوصول إلى /root
/root/ DENY,
السماح بالاتصال بالشبكة
network inet stream,
network inet6 stream,
}
```
11. متى نحتاج كتابة بروفايل؟
عادةً عند:
تشغيل برنامج حساس مثل سيرفر ويب
تطبيق جديد غير مدعوم
حماية سكربتات Bash أو Python
حاويات docker
برامج الطرف الثالث
لذلك يعتبر AppArmor جزءًا أساسيًا من أمان .
يعتبر AppArmor هو نظام حماية قوي يعتمد على التحكم الإجباري MAC، ويسمح لك بحصر التطبيقات في صلاحيات محددة جدًا لمنع أي استغلال أو وصول غير مصرح به.
إن كنت تستخدم Ubuntu أو Debian فهو الخيار المثالي.
وإن أردت أمانًا أعمق وتتحمل التعقيد → استخدم SELinux.
ليست هناك تعليقات:
إرسال تعليق
(( مَا يَلْفِظُ مِنْ قَوْلٍ إِلَّا لَدَيْهِ رَقِيبٌ عَتِيدٌ))