SELinux palapala hoʻopunipuni no nā luna ʻōnaehana: 42 pane i nā nīnau koʻikoʻi

Ua hoʻomākaukau ʻia ka unuhi ʻana o ka ʻatikala no nā haumāna o ka papa "Ka Luna Hoʻokele Linux".

SELinux palapala hoʻopunipuni no nā luna ʻōnaehana: 42 pane i nā nīnau koʻikoʻi

Maanei ʻoe e loaʻa ai nā pane i nā nīnau koʻikoʻi e pili ana i ke ola, ke ao holoʻokoʻa a me nā mea āpau ma Linux me ka palekana maikaʻi.

"ʻO ka ʻoiaʻiʻo koʻikoʻi ʻaʻole like nā mea i nā manawa a lākou e ʻike ai he ʻike maʻamau ..."

-Douglas Adams, ʻO ke alakaʻi a ka Hitchhiker i ka Galaxy

Palekana. Hoʻonui i ka hilinaʻi. Palapala leka. Kulekele. ʻEhā Lio o ka Apocalypse sysadmin. Ma waho aʻe o kā mākou mau hana i kēlā me kēia lā - nānā, hoʻihoʻi, hoʻokō, hoʻonohonoho, hoʻonui, a me nā mea ʻē aʻe - no mākou ke kuleana no ka palekana o kā mākou ʻōnaehana. ʻO kēlā mau ʻōnaehana kahi e ʻōlelo ai ka mea hāʻawi ʻaoʻao ʻekolu e hoʻopau mākou i ka palekana i hoʻonui ʻia. Me he hana lā Ethan Hunt mai "Mission: Impossible."

Ke alo nei i kēia pilikia, ua hoʻoholo kekahi mau luna ʻōnaehana e lawe pilo uliuli, no ka mea, manaʻo lākou ʻaʻole lākou e ʻike i ka pane i ka nīnau nui o ke ola, ke ao a me nā mea a pau. A e like me kā mākou i ʻike ai, ʻo ia pane he 42.

Ma ka manaʻo o The Hitchhiker's Guide to the Galaxy, eia nā pane 42 i nā nīnau koʻikoʻi e pili ana i ka mana a me ka hoʻohana. SELinux ma kāu mau ʻōnaehana.

1. ʻO SELinux kahi ʻōnaehana hoʻokele mana, ʻo ia ka mea i loaʻa i kēlā me kēia kaʻina kahi lepili. Loaʻa nā lepili i kēlā me kēia faila, papa kuhikuhi a me nā mea ʻōnaehana. Hoʻoponopono nā lula kulekele i ke komo ʻana ma waena o nā kaʻina hana a me nā mea. Hoʻokō ka kernel i kēia mau lula.

2. ʻO nā manaʻo koʻikoʻi ʻelua: Ke kālaulā - nā hōʻailona (nā faila, nā kaʻina hana, nā awa, a me nā mea ʻē aʻe) a ʻAno hoʻokō (ka mea e hoʻokaʻawale i nā kaʻina hana mai kekahi i kekahi ma muli o nā ʻano).

3. Hōʻano lepili pololei user:role:type:level (koho).

4. ʻO ke kumu o ka hoʻolako ʻana i ka palekana multi-level (Palekana Nui - MLS) e hoʻokele i nā kaʻina hana (domains) e pili ana i ka pae o ka palekana o ka ʻikepili a lākou e hoʻohana ai. No ka laʻana, ʻaʻole hiki i kahi kaʻina hana huna ke heluhelu i ka ʻikepili huna kiʻekiʻe.

5. E hōʻoia ana i ka palekana o nā ʻano he nui (Palekana Māhele Nui - MCS) pale i nā kaʻina hana like mai kekahi i kekahi (no ka laʻana, nā mīkini virtual, OpenShift engines, SELinux sandboxes, containers, etc.).

6. Nā koho Kernel no ka hoʻololi ʻana i nā mode SELinux ma ka boot:

  • autorelabel=1 → ke kumu e holo hou ai ka ʻōnaehana
  • selinux=0 → ʻaʻole hoʻouka ka kernel i ka ʻōnaehana SELinux
  • enforcing=0 → hoʻouka ʻia ma ke ʻano ʻae

7. Inā pono ʻoe e hōʻailona hou i ka ʻōnaehana holoʻokoʻa:

# touch /.autorelabel
#reboot

Inā loaʻa i ka māka ʻōnaehana he helu nui o nā hewa, pono paha ʻoe e hoʻopaʻa i ke ʻano ʻae no ka ʻōlelo ʻana e kūleʻa.

8. E nānā inā hiki iā SELinux: # getenforce

9. No ka hoʻā ʻana a hoʻopau iā SELinux no ka manawa pōkole: # setenforce [1|0]

10. Ke nānā nei i ke kūlana SELinux: # sestatus

11. waihona hoʻonohonoho: /etc/selinux/config

12. Pehea e hana ai ʻo SELinux? Eia kahi hōʻailona hōʻailona no ka pūnaewele pūnaewele Apache:

  • Hōʻikeʻike binary: /usr/sbin/httpd→httpd_exec_t
  • Papa kuhikuhi hoʻonohonoho: /etc/httpd→httpd_config_t
  • Papa kuhikuhi waihona waihona: /var/log/httpd → httpd_log_t
  • Papa kuhikuhi maʻiʻo: /var/www/html → httpd_sys_content_t
  • Hoʻomaka ka palapala: /usr/lib/systemd/system/httpd.service → httpd_unit_file_d
  • Hoʻomākaukau: /usr/sbin/httpd -DFOREGROUND → httpd_t
  • Nā awa: 80/tcp, 443/tcp → httpd_t, http_port_t

Ke holo nei ke kaʻina hana ma ka pōʻaiapili httpd_t, hiki ke launa me kekahi mea i hoailonaia httpd_something_t.

13. Nui nā kauoha e ʻae i ka hoʻopaʻapaʻa -Z e nānā, hana a hoʻololi i ka pōʻaiapili:

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

Hoʻokumu ʻia nā ʻatikala ke hana ʻia nā faila ma muli o ka pōʻaiapili o kā lākou papa kuhikuhi makua (me kekahi mau ʻokoʻa). Hiki i nā RPM ke hoʻokumu i nā pōʻaiapili e like me ke kau ʻana.

14. ʻEhā kumu nui o nā hewa SELinux, i wehewehe ʻia i nā kikoʻī ma nā helu 15-21 ma lalo.

  • Nā pilikia lepili
  • Ma muli o kahi mea e pono ai ʻo SELinux e ʻike
  • Hapa i ka SELinux policy/application
  • Hiki ke hoʻopili ʻia kāu ʻike

15. Pilikia lepili: inā aia kāu mau faila /srv/myweb hōʻailona hewa ʻia, hiki ke hōʻole ʻia ke komo ʻana. Eia kekahi mau ala e hoʻoponopono ai i kēia:

  • Inā ʻike ʻoe i ka lepili:
    # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
  • Inā ʻike ʻoe i kahi faila me nā kaha like:
    # semanage fcontext -a -e /srv/myweb /var/www
  • Hoʻihoʻi hou i ka pōʻaiapili (no nā hihia ʻelua):
    # restorecon -vR /srv/myweb

16. Pilikia lepili: inā hoʻoneʻe ʻoe i ka faila ma mua o ke kope ʻana, e paʻa ka waihona i kona ʻano kumu. No ka hoʻoponopono ʻana i kēia pilikia:

  • E hoʻololi i ke kauoha pōʻaiapili me ka lepili:
    # chcon -t httpd_system_content_t /var/www/html/index.html
  • E hoʻololi i ke kauoha pōʻaiapili me ka lepili loulou:
    # chcon --reference /var/www/html/ /var/www/html/index.html
  • Hoʻihoʻi i ka pōʻaiapili (no nā hihia ʻelua): # restorecon -vR /var/www/html/

17. ina SELinux pono ʻoe e ʻikee hoʻolohe ana ʻo HTTPD ma ke awa 8585, e haʻi iā SELinux:

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

18. SELinux pono ʻoe e ʻike ʻO nā waiwai Boolean e ʻae i nā ʻāpana o ke kulekele SELinux e hoʻololi ʻia i ka wā holo me ka ʻike ʻole o ke kulekele SELinux i kākau ʻia. No ka laʻana, inā makemake ʻoe iā httpd e hoʻouna i ka leka uila, e komo: # setsebool -P httpd_can_sendmail 1

19. SELinux pono ʻoe e ʻike nā waiwai kūpono no ka hiki ʻana a hoʻopau i nā hoʻonohonoho SELinux:

  • No ka ʻike ʻana i nā waiwai boolean a pau: # getsebool -a
  • E ʻike i ka wehewehe ʻana o kēlā me kēia: # semanage boolean -l
  • No ka hoʻonohonoho ʻana i kahi waiwai boolean: # setsebool [_boolean_] [1|0]
  • No kahi hoʻokomo mau, hoʻohui -P. ^ E Ha yM. Ma ke ʻano he: # setsebool httpd_enable_ftp_server 1 -P

20. Loaʻa i nā kulekele / noi SELinux nā hewa, me:

  • Nā ala code maʻamau
  • Nā hoʻonohonoho
  • Ke kuhikuhi hou nei i ka stdout
  • Leʻaleʻa ka mea wehewehe waihona
  • Hoʻomanaʻo hoʻokō
  • Nā hale waihona puke maikaʻi ʻole

E wehe i nā tiketi (mai hoʻouna i kahi hōʻike iā Bugzilla; ʻaʻohe SLA iā Bugzilla).

21. Hiki ke hoʻopili ʻia kāu ʻikeinā he mau kāʻei kapu kāu e hoʻāʻo nei e:

  • E hoʻouka i nā modula kernel
  • Hoʻopau i ke ʻano SELinux i hoʻokō ʻia
  • Kākau iā etc_t/shadow_t
  • E hoʻololi i nā lula iptables

22. Nā mea hana SELinux no ka hoʻomohala ʻana i nā modula kulekele:

# yum -y install setroubleshoot setroubleshoot-server

Hoʻomaka hou a hoʻomaka hou auditd ma hope o ke kau ʻana.

23. E hoʻohana

journalctl

e hōʻike i kahi papa inoa o nā moʻolelo a pau e pili ana setroubleshoot:

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

24. E hoʻohana journalctl e papa inoa i nā lāʻau a pau e pili ana i kahi hōʻailona SELinux kikoʻī. ʻo kahi laʻana:

# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0

25. Inā loaʻa kahi hewa SELinux, e hoʻohana i ka log setroubleshoot hāʻawi i kekahi mau mea hiki ke hoʻonā.
No ka laʻana, mai 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. Logging: Hoʻopaʻa ʻo SELinux i ka ʻike ma nā wahi he nui:

  • / var / log / memo
  • /var/log/audit/audit.log
  • /var/lib/setroubleshoot/setroubleshoot_database.xml

27. Hoʻopaʻa inoa: e ʻimi ana i nā hewa SELinux ma ka loiloi loiloi:

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

28. No ka huli ʻana i nā memo SELinux Access Vector Cache (AVC) no kahi lawelawe kikoʻī:

# ausearch -m avc -c httpd

29. Mea hoʻohana audit2allow hōʻiliʻili i ka ʻike mai nā loina o nā hana i pāpā ʻia a laila hoʻopuka i nā lula kulekele ʻae SELinux. ʻo kahi laʻana:

  • No ka hana ʻana i kahi wehewehe hiki ke heluhelu ʻia e ke kanaka no ke kumu i hōʻole ʻia ai ke komo ʻana: # audit2allow -w -a
  • No ka ʻike ʻana i kahi lula hoʻokō ʻano e ʻae ʻia ke komo ʻole: # audit2allow -a
  • No ka hana ʻana i kahi module maʻamau: # audit2allow -a -M mypolicy
  • Koho -M hana i kahi faila hoʻokō ʻano (.te) me ka inoa i ʻōlelo ʻia a hōʻuluʻulu i ka lula i loko o kahi pūʻolo kulekele (.pp): mypolicy.pp mypolicy.te
  • No ka hoʻouka ʻana i kahi module maʻamau: # semodule -i mypolicy.pp

30. No ka hoʻonohonoho ʻana i kahi kaʻina kaʻawale (domain) e hana ma ke ʻano ʻae: # semanage permissive -a httpd_t

31. Inā ʻaʻole ʻoe makemake hou e ʻae ʻia ka domain: # semanage permissive -d httpd_t

32. E hoʻopau i nā kāʻei kapu ʻae a pau: # semodule -d permissivedomains

33. E ʻae ana i ke kulekele MLS SELinux: # yum install selinux-policy-mls
в /etc/selinux/config:

SELINUX=permissive
SELINUXTYPE=mls

E hōʻoia e holo ana ʻo SELinux ma ke ʻano ʻae: # setenforce 0
E hoʻohana i kahi palapala fixfilese hōʻoia i ka hoʻopaʻa inoa ʻia ʻana o nā faila i ka reboot aʻe:

# fixfiles -F onboot # reboot

34. E hana i mea hoʻohana me kahi laulā MLS kikoʻī: # useradd -Z staff_u john

Ke hoʻohana nei i ke kauoha useradd, palapala ʻāina i ka mea hoʻohana hou i kahi mea hoʻohana SELinux i loaʻa (ma kēia hihia, staff_u).

35. E nānā i ka palapala 'āina ma waena o SELinux a me nā mea hoʻohana Linux: # semanage login -l

36. E wehewehe i kahi laulā kikoʻī no ka mea hoʻohana: # semanage login --modify --range s2:c100 john

37. No ka hoʻoponopono ʻana i ka lepili papa kuhikuhi home o ka mea hoʻohana (inā pono): # chcon -R -l s2:c100 /home/john

38. E nānā i nā waeʻano o kēia manawa: # chcat -L

39. No ka hoʻololi ʻana i nā waeʻano a i ʻole e hoʻomaka i ka hana ʻana i kāu iho, hoʻoponopono i ka faila penei:

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

40. No ka holo ʻana i kahi kauoha a i ʻole palapala ma kahi faila, kuleana, a me ka pōʻaiapili mea hoʻohana:

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

  • -t pōʻaiapili waihona
  • -r pōʻaiapili kuleana
  • -u pōʻaiapili mea hoʻohana

41. Ua pio nā pahu e holo ana me SELinux:

  • Podman: # podman run --security-opt label=disable …
  • Pākuʻi: # docker run --security-opt label=disable …

42. Inā pono ʻoe e hāʻawi i ka pahu i ke komo piha i ka ʻōnaehana:

  • Podman: # podman run --privileged …
  • Pākuʻi: # docker run --privileged …

A i kēia manawa ua ʻike ʻoe i ka pane. No laila e ʻoluʻolu: mai hopohopo a hiki iā SELinux.

Nā Manaʻo:

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka