في المقال السابق تحدثنا عن SELinux. انطباعي عن نظام الأمان هذا ذو شقين. من ناحية أخرى ، لا يوجد الكثير من الأمان في تكنولوجيا المعلومات ، ويحتوي SELinux على كل ما تحتاجه لحماية نظام التشغيل والتطبيقات من الوصول غير المصرح به. من ناحية أخرى ، يبدو مرهقًا للغاية ومعقدًا بشكل غير ضروري ، مما يجعل استخدامه غير عملي. أكثر من مرة أو مرتين في أدلة المستخدم لتثبيت البرامج التجارية ، لقد رأيت توصيات لتنفيذ setenforce 0 قبل بدء التثبيت.
يمكن أن يكون الحل الذي يحتوي على نصف وظائف SELinux ، ولكنه أسهل بكثير في التهيئة والتشغيل ، أكثر موثوقية ، وذلك فقط لأنه ليس من المخيف الخوض في كل هذه المجالات والسياسات والأدوار. هذا هو بالضبط ما يقدمه AppArmor.
مثل SELinux ، يعد AppArmor تطبيقًا إلزاميًا للتحكم في الوصول (MAC) يعتمد على بنية Linux Security Modules (LSM). يدور نموذج أمان المظهر حول ربط سمات التحكم في الوصول ليس للمستخدمين ، ولكن للبرامج. يوفر AppArmor عزلًا مع ملفات التعريف التي يتم تحميلها في kernel ، عادةً عند التمهيد.
يختلف AppArmor عن تطبيقات Linux MAC الأخرى في منهجه القائم على المسار ، كما أنه يسمح بخلط ملفات تعريف التطبيق والتنبيه. بالإضافة إلى ذلك ، يستخدم AppArmor مرفقات الملفات لتسهيل التطوير ولديه عائق أقل للدخول أكثر من SELinux نفسه.
DAC و MAC
تقيد بنية التحكم في الوصول التقديري (DAC) الوصول إلى الموارد الهامة بناءً على سمات الموضوعات أو المجموعة التي ينتمون إليها. تحدد هذه السمات حقوق الوصول إلى موارد نظام الملفات. يدرك كل مسؤول جيدًا أهمية امتيازات القراءة (القراءة) والتسجيل (الكتابة) والتنفيذ (eXecute).
تنطبق هذه السمات على ثلاث فئات من المستخدمين: مستخدم (مالك) ، مجموعة (مجموعة) ، أخرى (أخرى). تشير فئة المالك إلى مستخدم واحد لنظام التشغيل ، بينما يمكن أن تحتوي المجموعة على العديد من مستخدمي نظام التشغيل. تتضمن فئة الباقي هؤلاء المستخدمين الذين لا ينتمون إلى أول اثنين.
يمنح نموذج DAC مالك المورد الحق في تحديد نوع الوصول لفئات محددة من المستخدمين. هذا التمايز في الوصول مناسب للحماية من إجراءات المستخدم غير المقصودة ويسمح لك بالإجابة على الأسئلة التالية:
- ما هي موارد FS المتاحة لمستخدم نظام تشغيل معين للقراءة والكتابة والتنفيذ؟
- ما هي الموارد المالية المتاحة لهذه المجموعة للقراءة والكتابة والتنفيذ؟
- ما هي موارد FS المتاحة للمستخدمين الآخرين للقراءة والكتابة والتنفيذ؟
- أي مستخدم لديه حقوق كافية لتشغيل هذه العملية؟
الشكل: 1 أنظمة أمان DAC و MAC.
يفترض نظام أمان التحكم في الوصول الإلزامي (MAC) تحكمًا مركزيًا في قواعد سياسة الوصول ، حيث لا يكون لدى المستخدمين العاديين القدرة على إجراء أي تغييرات عليها. يحدد مصمم السياسة البرامج أو العمليات التي يمكنها تنفيذ إجراءات معينة على موارد النظام. يركز MAC على البرامج أكثر من تركيزه على المستخدمين ويحل مشكلة تحديد وصول العمليات إلى موارد نظام التشغيل.
في جوهره ، يحاول تصميم MAC تكرار تحديد امتيازات الوصول إلى التوثيق في العالم المادي. إذا كان لموظف معين الحق في قراءة المستندات التي تحمل علامة "سرية للغاية" ، فإنه يتمتع أيضًا بإمكانية الوصول إلى المستندات القياسية السرية والداخلية. لكن العكس ليس صحيحًا. وينطبق الشيء نفسه في سياق امتيازات الوصول لعمليات نظام التشغيل في بنية MAC. لذلك ، إذا كان بإمكان البرنامج قراءة الملف / etc / sudoers ، فسيكون لديه أيضًا وصول إلى / etc / hosts ، لكن العكس أيضًا ليس صحيحًا.
تثبيت وتكوين AppArmor
يتم تثبيت العناصر الأساسية لـ AppArmor مسبقًا في خادم Ubuntu ، أما بالنسبة لأدوات الإدارة ومجموعة ملفات تعريف التطبيق ، فيجب تثبيتها بشكل منفصل.
[admin@server ~]$ sudo aptitude install apparmor-utils apparmor-profiles
التحقق من الحالة قبل الإعداد.
[admin@server ~]$ sudo apparmor_status
apparmor module is loaded.
31 profiles are loaded.
31 profiles are in enforce mode.
/snap/snapd/10492/usr/lib/snapd/snap-confine
/snap/snapd/10492/usr/lib/snapd/snap-confine//mount-namespace-capture-helper
/usr/bin/man
/usr/lib/NetworkManager/nm-dhcp-client.action
/usr/lib/NetworkManager/nm-dhcp-helper
/usr/lib/connman/scripts/dhclient-script
/usr/lib/snapd/snap-confine
/usr/lib/snapd/snap-confine//mount-namespace-capture-helper
/usr/sbin/tcpdump
...
0 profiles are in complain mode.
0 processes have profiles defined.
0 processes are in enforce mode.
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.
تشير الأسطر الأخيرة إلى أوضاع الإنفاذ والشكوى. ما هي هذه الأنظمة باختصار؟
- في وضع فرض ، يفرض kernel القواعد المكتوبة في ملف التوصيف. غير مسموح بالمخالفات ويذهب الإدخال المقابل إلى السجلات.
- في وضع الشكوى ، يسجل AppArmor الانتهاكات فقط دون حظر الإجراءات نفسها.
يوجد محتوى حزمة ملفات تعريف apparmor في المجلد
/usr/share/apparmor/extra-profiles/
، وهناك أكثر من مائة ملف تعريف جاهز هناك.
[admin@server ~]$ ll /usr/share/apparmor/extra-profiles/ |head total 484 -rw-r--r-- 1 root system 1724 May 19 2020 README drwxr-xr-x 3 root system 4096 Dec 8 10:14 abstractions/ -rw-r--r-- 1 root system 1319 May 19 2020 bin.netstat -rw-r--r-- 1 root system 1815 May 19 2020 etc.cron.daily.logrotate -rw-r--r-- 1 root system 948 May 19 2020 etc.cron.daily.slocate.cron -rw-r--r-- 1 root system 722 May 19 2020 etc.cron.daily.tmpwatch -rw-r--r-- 1 root system 2623 May 19 2020 sbin.dhclient [admin@server ~]$ ll /usr/share/apparmor/extra-profiles/ |wc -l 118
قبل أن يصبح ملف التعريف نشطًا ، تحتاج إلى نقله من المجلد
/usr/share/apparmor/extra-profiles/
إلى
/etc/apparmor.d/
. الآن يمكن دراستها وتغييرها إذا رغبت في ذلك. لنأخذ شيئًا أبسط ، على سبيل المثال
/etc/apparmor.d/bin.ping
.
...
#include <tunables/global>
profile ping /{usr/,}bin/{,iputils-}ping flags=(complain) {
#include <abstractions/base>
#include <abstractions/consoles>
#include <abstractions/nameservice>
capability net_raw,
capability setuid,
network inet raw,
network inet6 raw,
/{,usr/}bin/{,iputils-}ping mixr,
/etc/modules.conf r,
# Site-specific additions and overrides. See local/README for details.
#include <local/bin.ping>
}
كل شيء واضح جدًا ، باستثناء أعلام mixr. وصف معاني الأعلام أدناه:
- ص - قراءة ؛
- ث - سجل
- أ - الكتابة المتزايدة حتى نهاية الملف ، من الملحق باللغة الإنجليزية ؛
- ك - قفل الملفات ؛
- ل - إنشاء روابط رمزية للملفات القابلة للتنفيذ ؛
- م - تحميل الملفات القابلة للتنفيذ في الذاكرة ؛
- cx - الانتقال إلى ملف تعريف المستوى الأدنى أثناء التنفيذ ؛
- Cx - الانتقال إلى ملف التعريف ذي المستوى الأدنى عند تنفيذه باستخدام متغيرات بيئة التنظيف ؛
- التاسع - وراثة التنفيذ ؛
- بكسل - يتطلب تعريف ملف تعريف أمان منفصل للمورد ؛
- Px - مطلوب تعريف ملف تعريف الأمان المنفصل للمورد ، ويتم مسح متغيرات البيئة ؛
- ux - لا تتحقق من بدء عمليات جديدة ؛
- Ux - لا تتحقق من بدء عمليات جديدة وتنظيف متغيرات البيئة ؛
يمكنك أيضًا تحديد
Capabilities
نواة Linux التي يُسمح للعملية باستخدامها. قائمتهم الكاملة موجودة في الصفحة المقابلة من الدليل.
للتبديل من وضع التعلم إلى الوضع الإجباري ، تحتاج إلى تنفيذ الأمر
aa-enforce <prog_name>, - aa-complain <prog_name>
. إذا حاول الأمر ping الآن ، بعد تمكين الوضع القسري ، القيام بشيء ما ، فسيحظره AppArmor.
[admin@server ~]$ sudo aa-enforce ping
Setting /usr/bin/ping to enforce mode.
[admin@server ~]$ sudo cp /usr/bin/man /usr/bin/ping
[admin@server ~]$ /usr/bin/ping ping
/usr/bin/ping: can't open the manpath configuration file /etc/manpath.config
إذا كنت بحاجة إلى إنشاء ملف تعريف جديد ، فهذا ليس بالأمر الصعب. تحتاج أولاً إلى إنشاء قالب باستخدام الأمر
aa-autodep
، ثم تعبئته عن طريق التشغيل
aa-genprof
. مثال على حوار تفاعلي aa-genprof مجاني على الرابط .
المواد المستعملة