د سیسټم مدیرانو لپاره د 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 څنګه کار کوي؟ دلته د اپاچي ویب سرور لپاره نښه کول یوه بیلګه ده:

  • بائنری نمایش: /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 تاسو اړتیا لرئ پوه شئ د بولین ارزښتونه چې د 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 تګلارې/ غوښتنلیکونه ممکن تېروتنې ولري، په شمول:

  • غیر معمولي کوډ لارې
  • CONFIGURACII
  • د 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 / پیغامونه
  • /var/log/audit/audit.log
  • /var/lib/setroubleshoot/setroubleshoot_database.xml

27. ننوتل: د پلټنې لاګ کې د SELinux غلطیو لټون:

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

28. د ځانګړي خدمت لپاره د SELinux لاسرسي ویکتور کیچ (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 او لینکس کاروونکو ترمنځ نقشه لیدلو لپاره: # 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

Add a comment