ورقة الغش لمسؤول نظام SELinux: 42 إجابة على الأسئلة المهمة

تم إعداد ترجمة لهذه المقالة خصيصًا لطلاب دورة Linux Administrator .




ستحصل هنا على إجابات لأسئلة مهمة حول الحياة والكون وكل ما في Linux مع تعزيز الأمان.

"الحقيقة المهمة هي أن الأمور ليست دائما ما يبدو أنها معروفة جيدا ..."

glDouglas Adams ، دليل Hitchhiker إلى Galaxy

الأمن. تحسين الموثوقية. الامتثال. السياسة. أربعة فرسان من نهاية العالم من مسؤول النظام. بالإضافة إلى مهامنا اليومية - المراقبة ، النسخ الاحتياطي ، التنفيذ ، التكوين ، التحديث ، إلخ - نحن مسؤولون أيضًا عن أمان أنظمتنا. حتى تلك الأنظمة التي يوصي فيها موفر خارجي بأن نوقف تشغيل الأمان المحسن. هذا مشابه لعمل إيثان هانت من مهمة مستحيلة.

في مواجهة هذه المعضلة ، يقرر بعض مسؤولي النظام تناول حبوب منع الحمل الزرقاء لأنهم يعتقدون أنهم لن يعرفوا أبدًا إجابة السؤال الكبير عن الحياة والكون وكل ذلك. وكما نعلم جميعا ، هذه الإجابة هي 42.

انطلاقًا من "دليل Hitchhiker إلى المجرة" ، إليك 42 إجابة على أسئلة مهمة حول إدارة واستخدام SELinux على أنظمتك.

1. SELinux هو نظام مراقبة الدخول القسري ، مما يعني أن كل عملية لها علامة. يحتوي كل ملف ودليل وكائن نظام أيضًا على علامات. تتحكم قواعد السياسة في الوصول بين العمليات والكائنات المميزة. يفرض النواة هذه القواعد.

2. المفهومان الأكثر أهمية هما: التصنيف - وضع العلامات (الملفات ، العمليات ، المنافذ ، إلخ) وفرض النوع (الذي يعزل العمليات عن بعضها البعض بناءً على الأنواع).

3. تنسيق التسمية الصحيح هو user:role:type:level (اختياري).

4. الهدف من توفير الأمان متعدد المستويات (MLS ) هو إدارة العمليات (المجالات) بناءً على مستوى أمان البيانات التي سيستخدمونها. على سبيل المثال ، لا يمكن قراءة عملية سرية بيانات سرية للغاية.

5. يحمي ضمان الأمن متعدد الفئات (MCS ) العمليات المماثلة من بعضها البعض (على سبيل المثال ، الأجهزة الافتراضية وآليات OpenShift وصناديق الرمل SELinux والحاويات وغيرها).

6. معلمات Kernel لتغيير أوضاع SELinux عند التمهيد:

  • autorelabel=1 يفرض النظام لبدء إعادة وضع العلامات
  • selinux=0 لا يقوم kernel بتحميل البنية التحتية لـ SELinux
  • enforcing=0 التحميل في وضع متساهل

7. إذا كنت بحاجة إلى إعادة وضع علامة على النظام بأكمله:

# touch /.autorelabel
#reboot


إذا كانت علامة النظام تحتوي على عدد كبير من الأخطاء ، فقد تحتاج إلى التمهيد في وضع متساهل لنجاح العلامة.

8. للتحقق مما إذا تم تمكين SELinux: # getenforce

9. لتمكين / تعطيل SELinux مؤقتًا: # setenforce [1|0]

10. التحقق من حالة SELinux: # sestatus

11. ملف التكوين: /etc/selinux/config

12. كيف يعمل سيلينو؟ فيما يلي نموذج لتسمية خادم الويب Apache:

  • التمثيل الثنائي: /usr/sbin/httpd→httpd_exec_t
  • دليل التكوين: /etc/httpd→httpd_config_t
  • دليل ملف السجل: /var/log/httpd → httpd_log_t
  • دليل المحتوى: /var/www/html → httpd_sys_content_t
  • تشغيل البرنامج النصي: /usr/lib/systemd/system/httpd.service → httpd_unit_file_d
  • العملية: /usr/sbin/httpd -DFOREGROUND → httpd_t
  • المنافذ: 80/tcp, 443/tcp → httpd_t, http_port_t

يمكن أن تتفاعل العملية التي يتم تشغيلها في سياق httpd_t مع كائن يسمى httpd_something_t .

13. تقبل العديد من الأوامر الوسيطة -Z لعرض السياق -Z وتغييره:

  • ls -Z
  • id -Z
  • ps -Z
  • netstat -Z
  • cp -Z
  • mkdir -Z

يتم تعيين السياقات عند إنشاء ملفات استنادًا إلى سياق الدليل الأصل (مع بعض الاستثناءات). يمكن RPMs تعيين سياقات كما هو الحال أثناء التثبيت.

14- هناك أربعة أسباب رئيسية لأخطاء SELinux ، يرد وصفها بمزيد من التفصيل في الفقرات 15-21 أدناه:

  • مشاكل وضع العلامات
  • بسبب شيء يحتاج SELinux إلى معرفته
  • خطأ في سياسة / تطبيق SELinux
  • قد تكون المعلومات الخاصة بك للخطر.

15. مشكلة في وضع علامة : إذا تم وضع علامة على ملفاتك في /srv/myweb بشكل غير صحيح ، فقد يتم رفض الوصول. فيما يلي بعض الطرق لإصلاح هذا:

  • إذا كنت تعرف الملصق:
    # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
  • إذا كنت تعرف ملفًا ذا علامات مكافئة:
    # semanage fcontext -a -e /srv/myweb /var/www
  • بعد استعادة السياق (لكلتا الحالتين):
    # restorecon -vR /srv/myweb

16. مشكلة وضع العلامات: إذا قمت بنقل الملف بدلاً من نسخه ، فسيحتفظ الملف بسياقه الأصلي. لإصلاح هذه المشكلة:

  • تغيير أمر السياق المسمى:
    # chcon -t httpd_system_content_t /var/www/html/index.html
  • قم بتغيير أمر السياق باستخدام تسمية الرابط:
    # chcon --reference /var/www/html/ /var/www/html/index.html
  • استعادة السياق (في كلتا الحالتين): # restorecon -vR /var/www/html/

17. إذا كانت SELinux بحاجة إلى معرفة أن HTTPD تستمع على المنفذ 8585 ، فأخبر SELinux:

# semanage port -a -t http_port_t -p tcp 8585

18. يحتاج SELinux إلى معرفة القيم المنطقية التي تسمح لك بتغيير أجزاء من سياسة SELinux في وقت التشغيل دون معرفة إعادة كتابة سياسات SELinux. على سبيل المثال ، إذا كنت تريد أن يقوم httpd بإرسال بريد إلكتروني ، فأدخل: # setsebool -P httpd_can_sendmail 1

19. يحتاج SELinux إلى معرفة القيم المنطقية لتمكين / تعطيل إعدادات SELinux:

  • لمشاهدة كل القيم المنطقية: # getsebool -a
  • لرؤية وصف لكل: # semanage boolean -l
  • لتعيين قيمة منطقية: # setsebool [_boolean_] [1|0]
  • للتثبيت الدائم ، أضف -P . على سبيل المثال: # setsebool httpd_enable_ftp_server 1 -P

20. قد تحتوي سياسات / تطبيقات SELinux على أخطاء ، بما في ذلك:

  • مسارات كود الهوى
  • تكوينات
  • إعادة توجيه stdout
  • تسرب ملف واصف
  • ذاكرة قابلة للتنفيذ
  • مكتبات سيئة البناء

تذاكر مفتوحة (لا ترسل تقريراً إلى Bugzilla ؛ لا يوجد جيش تحرير السودان في Bugzilla).

21. قد يتم اختراق معلوماتك إذا كان لديك نطاقات محدودة تحاول:

  • تنزيل وحدات kernel
  • تعطيل وضع SELinux القسري
  • اكتب في etc_t/shadow_t
  • تغيير قواعد iptables

22. أدوات SELinux لتطوير وحدات السياسة:

# yum -y install setroubleshoot setroubleshoot-server

أعد تشغيل أو أعد تشغيل auditd بعد التثبيت.

23. استخدام
 journalctl 
لسرد جميع السجلات المرتبطة setroubleshoot :

# journalctl -t setroubleshoot --since=14:20

24. استخدام journalctl لسرد جميع السجلات المرتبطة تسمية SELinux معينة. على سبيل المثال:

# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0

25. في حالة حدوث خطأ في SELinux ، استخدم سجل setroubleshoot مع بعض الحلول الممكنة.
على سبيل المثال ، من journalctl :

 Jun 14 19:41:07 web1 setroubleshoot: SELinux is preventing httpd from getattr access on the file /var/www/html/index.html. For complete message run: sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e # sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e SELinux is preventing httpd from getattr access on the file /var/www/html/index.html. ***** Plugin restorecon (99.5 confidence) suggests ************************ If you want to fix the label, /var/www/html/index.html default label should be httpd_syscontent_t. Then you can restorecon. Do # /sbin/restorecon -v /var/www/html/index.html 


26. تسجيل الدخول: تسجل SELinux المعلومات في العديد من الأماكن:

  • / فار / سجل / رسائل
  • /var/log/audit/audit.log
  • /var/lib/setroubleshoot/setroubleshoot_database.xml

27. التسجيل: ابحث عن أخطاء SELinux في سجل التدقيق:

# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today

28. للعثور على رسائل SELinux Access Vector Cache (AVC) لخدمة معينة:

# ausearch -m avc -c httpd

29. تقوم الأداة audit2allow بجمع المعلومات من سجلات العمليات المحظورة ، ثم تقوم بإنشاء قواعد سياسة إذن SELinux. على سبيل المثال:

  • لإنشاء وصف قابل للقراءة لسبب رفض الوصول: # audit2allow -w -a
  • لعرض قاعدة فرض نوع تسمح برفض الوصول: # audit2allow -a
  • لإنشاء وحدة نمطية مخصصة: # audit2allow -a -M mypolicy
  • يقوم الخيار -M بإنشاء ملف فرض نوع (.te) بالاسم المحدد ويجمع القاعدة في حزمة سياسة (.pp): mypolicy.pp mypolicy.te
  • لتثبيت وحدة نمطية مخصصة: # semodule -i mypolicy.pp

30. لتكوين عملية منفصلة (المجال) للعمل في وضع متساهل: # semanage permissive -a httpd_t

31. إذا لم تعد ترغب في أن يكون المجال متساهلاً: # semanage permissive -d httpd_t

32. لتعطيل جميع المجالات المتساهلة: # semodule -d permissivedomains

33. تمكين سياسة MLS SELinux: # yum install selinux-policy-mls
/etc/selinux/config:

SELINUX=permissive
SELINUXTYPE=mls
# yum install selinux-policy-mls
/etc/selinux/config:

SELINUX=permissive
SELINUXTYPE=mls


تأكد من أن SELinux في وضع متساهل: # setenforce 0
استخدم البرنامج النصي fixfiles لضمان إعادة تمييز الملفات أثناء إعادة التشغيل التالية:

# fixfiles -F onboot # reboot

34. إنشاء مستخدم مع مجموعة MLS محددة: # useradd -Z staff_u john

باستخدام الأمر useradd ، قم بتعيين المستخدم الجديد لمستخدم SELinux الحالي (في هذه الحالة ، staff_u ).

35. لمشاهدة المراسلات بين مستخدمي SELinux و Linux: # semanage login -l

36. حدد نطاقًا محددًا للمستخدم: # semanage login --modify --range s2:c100 john

37. لتصحيح الملصق في الدليل الرئيسي للمستخدم (إذا لزم الأمر): # chcon -R -l s2:c100 /home/john

38. لعرض الفئات الحالية: # chcat -L

39. لتغيير الفئات أو البدء في إنشاء الخاصة بك ، قم بتحرير الملف على النحو التالي:

/etc/selinux/_< selinuxtype > _/setrans.conf

40. لتشغيل أمر أو برنامج نصي في ملف محدد ، دور وسياق مستخدم:

# runcon -t initrc_t -r system_r -u user_u yourcommandhere

  • سياق ملف -t
  • سياق دور -r
  • -u سياق المستخدم

41. حاويات العمل مع المعوقين SELinux:

  • Podman: # podman run --security-opt label=disable …
  • عامل الميناء: # docker run --security-opt label=disable …

42. إذا كنت بحاجة إلى منح الحاوية حق الوصول الكامل إلى النظام:

  • Podman: # podman run --privileged …
  • عامل الميناء: # docker run --privileged …

والآن أنت تعرف بالفعل الجواب. لذلك ، من فضلك: لا داعي للقلق وقم بتشغيل SELinux.

المراجع:


Source: https://habr.com/ru/post/ar484896/


All Articles