اذهب إلى المحتوى

أساسيات الأمن والحماية على خواديم أوبنتو: AppArmor


عبد اللطيف ايمش

إن AppArmor هو وحدة حماية في لينُكس تقيّد وصول البرامج المختلفة إلى قائمة بالملفات التابعة لها والإمكانيات المذكورة في مسودة posix 1003.le.

ubuntu-server-apparmor.thumb.png.1fbd098

إن AppArmor مثبَّت ومفعَّل افتراضيًا، ويستخدم «ملفات ضبط» (profiles) للتطبيقات لتحديد أيّة ملفات وأذونات يتطلبها التطبيق، بعض الحزم تُثبِّت ملفات الضبط الخاصة بها، ويمكن العثور على ملفات ضبط إضافية في حزمة apparmor-profiles.

أدخل الأمر الآتي في الطرفية لتثبيت حزمة apparmor-profiles:

sudo apt-get install apparmor-profiles

لملفات ضبط AppArmor نمطين من التنفيذ:

  • البناء أو التعلم (Complaining/Learning): من المسموح تجاوز ملف الضبط وستُسجَّل تلك التجاوزات؛ يفيد هذا النمط في اختبار وتطوير ملفات ضبط جديدة.
  • الإجبار أو التقييد (Enforced/Confined): إجبار السياسة في ملفات الضبط، وتسجيل التجاوزات أيضًا.

استخدام AppArmor

تنويه: هذا القسم معلول بعلِّة1، فللأسف لن تعمل الأوامر التي فيه كما يجب.

تحتوي حزمة apparmor-utils على أدوات سطر أوامر تمكِّنك من تغيير نمط تنفيذ AppArmor، أو معرفة حالة ملف ضبط، أو إنشاء ملفات جديدة ...إلخ.

  • يُستخدَم الأمر apparmor_status لعرض حالة ملفات ضبط AppArmor.

sudo apparmor_status
  • يضع الأمر aa-complain ملفَ ضبطٍ قيدَ البناء:

sudo aa-complain /path/to/bin
  • الأمر aa-enforce يضعُ ملفَ ضبطٍ قيدَ التنفيذ:

sudo aa-enforce /path/to/bin
  • المجلد ‎/etc/apparmor.d هو مكان تواجد ملفات ضبط AppArmor؛ يمكن أن يُستخدَم لتعديل «نمط» جميع ملفات الضبط.

    أدخِل ما يلي لوضع كل الملفات في نمط البناء:

    sudo aa-complain /etc/apparmor.d/*

    لوضع جميع الملفات قيد التنفيذ:

      sudo aa-enforce /etc/apparmor.d/*
      • يُستخدَم الأمر apparmor_parser لتحميل ملف ضبط إلى النواة، ويمكن أن يُستخدَم لإعادة تحميل ملف ضبط مُحمَّل مسبقًا باستخدام الخيار ‎-r؛ لتحميل ملف ضبط:

      cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a

      ولإعادة تحميل ملف ضبط محمَّل مسبقًا:

      cat /etc/apparmor.d/profile.name | sudo apparmor_parser -r
      • يمكن استخدام ‎service apparmor لإعادة تحميل كل ملفات الضبط:

      sudo service apparmor reload
      • يمكن استخدام المجلد ‎/etc/apparmor.d/disable مع الخيار ‎‎apparmor_parser‏ ‎‎-R لتعطيل ملف ضبط:

      sudo ln -s /etc/apparmor.d/profile.name /etc/apparmor.d/disable/
      sudo apparmor_parser -R /etc/apparmor.d/profile.name

      لإعادة تفعيل ملف ضبط معطَّل، احذف الوصلة الرمزية إلى الملف في ‎/etc/apparmor.d/disable ثم أعد تحميل ملف الضبط باستخدام الخيار ‎-a:

      sudo rm /etc/apparmor.d/disable/profile.name
      cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a
      • يمكن تعطيل AppArmor، وسيزال تحميل وحدة النواة بإدخال ما يلي:

      sudo service apparmor stop
      sudo update-rc.d -f apparmor remove
      • لإعادة تفعيل AppArmor، أدخِل:

      sudo service apparmor start
      sudo update-rc.d apparmor defaults

      ملاحظة: استبدل profile.name باسم ملف الضبط الذي تريد تعديله، أيضًا استبدل ‎/path/to/bin بمسار الملف التنفيذي الحقيقي؛ على سبيل المثال، للأمر ping استخدم ‎/bin/ping.

      ملفات الضبط

      ملفات الضبط (profiles) هي ملفات نصية بسيطة موجودة في ‎/etc/apparmor.d/‎؛ هذه الملفات مسماةٌ وفقًا للمسار الكامل للملف التنفيذي الذي تضبطه لكن مع إبدال «‎/» بنقطة «.»؛ على سبيل المثال، ‎/etc/apparmor.d/bin.ping هو ملف ضبط AppArmor للأمر ‎/bin/ping.

      هنالك نوعان رئيسيان من القواعد المستخدمة في ملفات الضبط:

      • قيود المسار (Path entries): التي تحدد الملفات التي يمكن للتطبيق الوصول إليها في نظام الملفات.
      • قيود الإمكانيات (Capability entries): تحدد الامتيازات التي يُسمَح لعملية مقيدة بإجرائها.

      ألقِ نظرةً على ‎/etc/apparmor.d/bin.ping كمثال:

      #include <tunables/global>
      /bin/ping flags=(complain) {
        #include <abstractions/base>
        #include <abstractions/consoles>
        #include <abstractions/nameservice>
      
        capability net_raw,
        capability setuid,
        network inet raw,
      
        /bin/ping mixr,
        /etc/modules.conf r,
      }
      • ‎#include <tunables/global>‎: تضمين تعبيرات من ملفات أخرى، وهذا يسمح للعبارات المشتركة بين عدّة تطبيقات بالتواجد في ملف مشترك.
      • (‎/bin/ping flags=(complain: المسار إلى التطبيق صاحب ملف الضبط، وضبط النمط إلى complain.
      • capability net_raw,‎: السماح للتطبيق بالوصول إلى امتياز CAP_NET_RAW Posix.le.
      • /bin/ping mixr,‎: السماح للتطبيق بوصول القراءة والتنفيذ إلى الملف.

      ملاحظة: يجب إعادة تحميل ملف الضبط بعد تعديله، راجع القسم «استخدام AppArmor» للتفاصيل.

      إنشاء ملف ضبط

      1. صمم خطة اختبار: فكر كيف يمكن «تمرين» التطبيق؛ يجب أن تُقسَّم خطة الاختبار إلى حالات اختبار صغيرة، وكل حالة اختبار لها شرح صغير وقائمة بالخطوات التي يجب اتباعها.

      بعض حالات الاختبار القياسية هي:

      • بدء تشغيل البرنامج.
      • إيقاف البرنامج.
      • إعادة تحميل البرنامج.
      • اختبار جميع الأوامر المدعومة من سكربت init.

      2. توليد ملف الضبط الجديد: استخدم aa-genprof لتوليد ملف ضبط جديد؛ من الطرفية:

      sudo aa-genprof exectable

      على سبيل المثال:

      sudo aa-genprof slapd

      3. لكي يُضمَّن ملف الضبط الجديد الخاص بك في حزمة apparmor-profiles، فبلِّغ عن علة في Lanuchpad2 عن حزمة AppArmor:

      • ضمِّن خطة الاختبار وحالات الاختبار.
      • أضف ملف الضبط الجديد إلى العلة.

      تحديث ملفات الضبط

      عندما لا يعمل برنامج ما كما يجب؛ فافحص الرسائل التي تُرسَل إلى ملفات السجل؛ يمكن أن يُستخدَم البرنامج aa-logprof لفحص ملفات السجل لرسائل التدقيق الخاصة ببرنامج AppArmor؛ راجعها وحدِّث ملفات الضبط.

      sudo aa-logprof

      مصادر

      • راجع «AppArmor Administraion Guide» لإعدادات الضبط المتقدمة.
      • للتفاصيل حول استخدام AppArmor مع إصدارات أخرى من أوبنتو، فراجع صفحة ويكي المجتمع حول AppArmor.
      • صفحة «OpenSUSE AppArmor» هي تقديم آخر إلى AppArmor.
      • مكان رائع للسؤال حول المساعدة في AppArmor، والاندماج مع مجتمع خواديم أوبنتو هو قناة ‎ ‎#ubuntu-server على خادوم Freenode (شبكة IRC).

      ترجمة -وبتصرف- للمقال Ubuntu Server Guide: AppArmor.


      تفاعل الأعضاء

      أفضل التعليقات

      لا توجد أية تعليقات بعد



      انضم إلى النقاش

      يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

      زائر
      أضف تعليق

      ×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

        Only 75 emoji are allowed.

      ×   Your link has been automatically embedded.   Display as a link instead

      ×   جرى استعادة المحتوى السابق..   امسح المحرر

      ×   You cannot paste images directly. Upload or insert images from URL.


      ×
      ×
      • أضف...