سسٽم منتظمين لاءِ SELinux چيٽ شيٽ: اهم سوالن جا 42 جواب

مضمون جو ترجمو خاص طور تي ڪورس جي شاگردن لاء تيار ڪيو ويو "لينڪس ايڊمنسٽريٽر".

سسٽم منتظمين لاءِ SELinux چيٽ شيٽ: اهم سوالن جا 42 جواب

هتي توهان اهم سوالن جا جواب حاصل ڪندا زندگي، ڪائنات ۽ لينڪس ۾ هر شيءِ بابت بهتر سيڪيورٽي سان.

"اهم حقيقت اها آهي ته شيون هميشه نه هونديون آهن جيڪي اهي نظر اچن ٿا، عام ڄاڻ آهي ..."

-ڊوگلس ايڊمز، ڪهڪشان لاءِ ھچ ھائڪر گائيڊ

حفاظت. وڌايل اعتماد. خط و ڪتابت. پاليسي. Apocalypse sysadmin جا چار گھوڙا. اسان جي روزاني ڪمن کان علاوه - مانيٽرنگ، بيڪ اپ، عمل درآمد، ترتيب، تازه ڪاري، وغيره - اسان پڻ اسان جي سسٽم جي حفاظت جا ذميوار آهيون. جيتوڻيڪ اهي سسٽم جتي ٽئين پارٽي فراهم ڪندڙ سفارش ڪري ٿو ته اسان بهتر ٿيل سيڪيورٽي کي بند ڪريون. اهو ڪم وانگر محسوس ٿئي ٿو ايٿن هنٽ "مشن: ناممڪن" کان.

هن مشڪل سان منهن ڏيڻ، ڪجهه سسٽم جي منتظمين وٺڻ جو فيصلو ڪيو نيري گولي، ڇاڪاڻ ته اهي سمجهن ٿا ته اهي ڪڏهن به زندگي جي وڏي سوال جو جواب نه ڄاڻندا، ڪائنات ۽ انهن سڀني جو. ۽ جيئن اسان سڀ ڄاڻون ٿا، اهو جواب 42 آهي.

جي جذبي ۾ هچيڪر جي گائيڊ ٽو دي گليڪس، هتي آهن 42 جوابن جا اهم سوالن جا ڪنٽرول ۽ استعمال بابت. SELinux توهان جي سسٽم تي.

1. SELinux هڪ جبري رسائي ڪنٽرول سسٽم آهي، جنهن جو مطلب آهي ته هر عمل جو هڪ ليبل آهي. هر فائل، ڊاريڪٽري ۽ سسٽم اعتراض پڻ ليبل آهن. پاليسي ضابطا ٽيگ ٿيل عملن ۽ شين جي وچ ۾ رسائي کي ڪنٽرول ڪن ٿا. ڪنييل انهن قاعدن کي لاڳو ڪري ٿو.

2. ٻه سڀ کان اهم تصور آهن: ليبلنگ - نشان (فائل، عمل، بندرگاهن، وغيره) ۽ لاڳو ڪرڻ جو قسم (جيڪو قسم جي بنياد تي هڪ ٻئي کان پروسيس کي الڳ ڪري ٿو).

3. درست ليبل فارميٽ user:role:type:level (اختياري).

4. ملٽي ليول سيڪيورٽي فراهم ڪرڻ جو مقصد (ملٽي ليول سيڪيورٽي - MLS) ڊيٽا جي حفاظت جي سطح جي بنياد تي پروسيس (ڊومينز) کي منظم ڪرڻ آهي جيڪي اهي استعمال ڪندا. مثال طور، هڪ ڳجهي عمل مٿين ڳجهي ڊيٽا کي پڙهي نٿو سگهي.

5. گھڻن درجي جي حفاظت کي يقيني بڻائڻ (ملٽي ڪيٽيگري سيڪيورٽي - MCS) هڪ ٻئي کان ساڳئي عملن کي بچائيندو آهي (مثال طور، مجازي مشينون، OpenShift انجڻ، SELinux سينڊ باڪس، ڪنٽينرز، وغيره).

6. بوٽ تي SELinux موڊس کي تبديل ڪرڻ لاءِ ڪرنل جا اختيار:

  • autorelabel=1 → سسٽم کي ريبلنگ هلائڻ جو سبب بڻائيندو آهي
  • selinux=0 → ڪرنل SELinux انفراسٽرڪچر کي لوڊ نٿو ڪري
  • enforcing=0 → اجازت واري موڊ ۾ لوڊ ڪندي

7. جيڪڏهن توهان کي سڄي سسٽم کي ريبل ڪرڻ جي ضرورت آهي:

# touch /.autorelabel
#reboot

جيڪڏهن سسٽم مارڪنگ ۾ وڏي تعداد ۾ غلطيون شامل آهن، توهان کي ڪامياب ٿيڻ لاء ريمارڪس لاء اجازت واري موڊ ۾ بوٽ ڪرڻ جي ضرورت پوندي.

8. چيڪ ڪرڻ لاءِ ته ڇا SELinux فعال آهي: # getenforce

9. SELinux کي عارضي طور تي فعال/بند ڪرڻ لاءِ: # setenforce [1|0]

10. SELinux اسٽيٽس چيڪ ڪرڻ: # sestatus

11. ٺاھ جوڙ فائيل: /etc/selinux/config

12. SELinux ڪيئن ڪم ڪندو آهي؟ هتي هڪ مثال آهي 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 ڏسڻ، ٺاھڻ ۽ تبديل ڪرڻ لاءِ:

  • 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 توهان کي ڄاڻڻ جي ضرورت آهي Boolean قدر جيڪي 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 ڏانهن موٽڻ
  • فائل جي وضاحت ڪندڙ ليڪ
  • قابل عمل ياداشت
  • ناقص ٺهيل لائبريريون

کليل ٽڪيٽون (بگزيلا کي رپورٽ نه ڏيو؛ بگزيلا وٽ ڪو SLA ناهي).

21. توهان جي معلومات سان ٺاهه ٿي سگهي ٿوجيڪڏهن توهان وٽ محدود ڊومينز ڪوشش ڪري رهيا آهن:

  • ڪرنل ماڊل لوڊ ڪريو
  • نافذ ٿيل 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 / messages
  • /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

پڪ ڪريو ته 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 run --security-opt label=disable …
  • ڊڪر: # docker run --security-opt label=disable …

42. جيڪڏهن توهان کي ڪنٽينر کي سسٽم تائين مڪمل رسائي ڏيڻ جي ضرورت آهي:

  • پوڊمن: # podman run --privileged …
  • ڊڪر: # docker run --privileged …

۽ ھاڻي توھان اڳ ۾ ئي جواب ڄاڻو ٿا. تنھنڪري مھرباني ڪري: گھٻرايو نه ۽ SELinux کي فعال ڪريو.

حوالا:

جو ذريعو: www.habr.com

تبصرو شامل ڪريو