الApparmor وملفاته , الامن عن طريق Mandatory Access Control

بسم الله، والحمد لله، والصلاة والسلام على رسول الله وعلى آله وصحبه ومن اهتدى بهداه، السلام عليكم ورحمة الله وبركاته تحيه طيبه أما بعد:

الAppArmor “درع التطبيق”: هو إطار تنظيمي للحد من صلاحيات الدخول للتطبيقات الى ملفات النظام. تساعد هذه الحمايه الاستبقايه على الحد من الثغرات المعروفه والغير معروفه في التطبيقات من تخريب او إخلال النظام. (قراءه اكثر هنا و هنا).

ملاحظه: قبل القيام بالخطوات يرجى النظر الى الملاحظات في الاسفل.

  • تسطيب حزم وملفات اضافيه تحتاجها مع الAppArmor في التوزيعات الديبيانيه (حزمه الAppArmor مسطبه ومفعله بشكل تلقائي في ديبيان)

sudo apt install apparmor-utils apparmor-profiles apparmor-profiles-extra

حزمه apparmor-utils: تساعد هذه الحزمه على استخدام امر aa-enforce وهو سنحتاجه لاحقا لجعل ملفات التطبيقات مفعله بشكل دائم

ملفات التطبيقات من apparmor-profiles-extra و apparmor-profiles : وهي ملفات apparmor الخاصه بالتطبيقات المدعومه فقط (اي التي تكون موجوده داخل هاتين القائمتين)

  • التاكد ان كل شيء يعمل قبل الاستمرار

نتاكد ان الapparmor مسطبه ومفعله عن طريق

sudo service apparmor status

سيظهر شيء قريب من هذا: (المهم وجود Active: active)


apparmor.service - Load AppArmor profiles
   Loaded: loaded (/lib/systemd/system/apparmor.service; enabled; vendor preset:
   Active: active (exited) 
     Docs: man:apparmor(7)
           https://gitlab.com/apparmor/apparmor/wikis/home/

نتاكد ان ملفات الapparmor متعرف عليها من قبل تطبيق الapparmor

sudo aa-status

سيظهر شيء قريب من هذا (اسماء ملفات apparmor للتطبيقات المدعومه, وهذه التي تاتي مع apparmor-profiles التي سطبناها سابقا)

user@clearnet:~$ sudo aa-status 
apparmor module is loaded.
30 profiles are loaded.
14 profiles are in enforce mode.
   /usr/bin/pidgin
   /usr/bin/pidgin//sanitized_helper
   /usr/bin/totem
   /usr/bin/totem-audio-preview
   /usr/bin/totem-video-thumbnailer
   /usr/bin/totem//sanitized_helper
   /usr/sbin/apt-cacher-ng
   /usr/sbin/haveged
   nvidia_modprobe
   nvidia_modprobe//kmod
   system_tor
16 profiles are in complain mode.
   /usr/bin/irssi
   /usr/sbin/dnsmasq
   /usr/sbin/dnsmasq//libvirt_leaseshelper
   avahi-daemon
   identd
   klogd
   mdnsd
   nmbd
   nscd
   ping
   smbd
   smbldap-useradd
   smbldap-useradd///etc/init.d/nscd
   syslog-ng
   syslogd
   traceroute
2 processes have profiles defined.
2 processes are in enforce mode.
   /usr/sbin/haveged (479) 
   /usr/bin/tor (615) system_tor
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.
  • فرق الملفات بين الEnforce Mode و الComplain Mode

الملفات التي تكون في حاله الانفاذ Enforce وهي التي تكون متعرف عليها من قبل الApparmor/فعاله وتوفر حد الصلاحيات/الامن المطلوب منها للتطبيق المعين

الملفات التي تكون في حاله الشكوى Complain (معنى اصح الخمول) وهي التي تكون متعرف عليها من قبل الApparmor ولكنها لا توفر الحمايه لانها ليست في حاله تنفيذ ولكن فقط متعرف عليها.

  • تحويل ملف Apparmor من حاله Complain الى Enforce

مثلا من ملفات الapparmor السابقه اريد تحويل ملف الapparmor الخاص بPing الى Enforce mode

sudo aa-enforce ping

سيظهر لك شيء شبيه بهذا

Setting /usr/bin/ping to enforce mode.
Warning: profile ping represents multiple programs

اذا قمت بامر sudo aa-status سيظهر ping تحت الEnforce

  • استخدام ملفات اضافيه لapparmor من apparmor-profiles-extra (او من اي مكان اخر نفس الامر)

الملفات الاضافيه تجدها هنا:

ls /usr/share/apparmor/extra-profiles

اذا اردنا استخدام ملف apparmor لتطبيق نستخدمه مثلا Firefox نلاحظ وجود ثلاثه ملفات له:

usr.lib.firefox.firefox
usr.lib.firefox.firefox.sh
usr.lib.firefox.mozilla-xremote-client

نفرض نريد ان نفعل الثلاثه جميعا , نقوم بنسخها الى /etc/apparmor.d

sudo cp /usr/share/apparmor/extra-profiles/usr.lib.firefox.firefox /etc/apparmor.d

(نفس الامر لباقي الملفات فقط تغير usr.lib.firefox.firefox الى اسم الملف الاخر)

بعد الانتهاء الان نقوم بتحويلها الى Enforce Mode

sudo aa-enforce /etc/apparmor.d/usr.lib.firefox.firefox

(نفس الامر لباقي الملفات فقط تغير usr.lib.firefox.firefox الى اسم الملف الاخر)

انتهى التفعيل واذا كتبت sudo aa-status ستجدها في الEnforce Mode.

الملاحظات والاضافات

  • اذا تستخدم تطبيق وملفات sandboxing مثل Firejail فلا تفعل ملفات الapparmor لنفس التطبيقات لانه سيسبب تعارض بينهم وقد ينتج عنه الغاء احدهم للاخر لذا استخدم هذا او هذا للتطبيق الواحد.

  • مقارنه بين Firejail و Apparmor تجدها هنا.

  • ملفات الApparmor الخاصه بالتطبيقات تجريبيه وليست مستقره لذا ليس مضمون انها ستعمل بدون مشاكل.

  • لا ينصح بتفعيل جميع ملفات الApparmor ولكن فقط فعلها للتطبيقات التي تحتاجها/تستخدمها.

  • يمكنك صناعه ملفات Apparmor خاصه بك راجع هنا.

  • يمكنك اضافه ملفات اضافيه للapparmor من هونكس: (للنظر الى الملفات هنا)
    **لاضافه مستودعات هونكس راجع هنا.
    ** لتسطيب ملفات الapparmor من مستودع هونكس:
    sudo apt install apparmor-profiles-kicksecure

3 إعجابات