Pepa tinihanga a SELinux mo nga kaiwhakahaere punaha: 42 nga whakautu ki nga patai nui

Ko te whakamaoritanga o te tuhinga i whakaritea mo nga akonga o te akoranga "Kaiwhakahaere Linux".

Pepa tinihanga a SELinux mo nga kaiwhakahaere punaha: 42 nga whakautu ki nga patai nui

I konei ka whiwhi koe i nga whakautu ki nga patai nui mo te oranga, te ao me nga mea katoa i roto i te Linux me te pai ake o te haumarutanga.

"Ko te mea nui ko nga mea ehara i te mea he rite tonu te ahua he mohio noa..."

- Douglas Adams, Te Aratohu a te Hitchhiker ki te tupuni

Haumaru. Kua piki ake te pono. Nga reta reta. Kaupapa here. Tokowha nga Kaieke hoiho o te Apocalypse sysadmin. I tua atu i a maatau mahi o ia ra - te aroturuki, te taapiri, te whakatinanatanga, te whirihoranga, te whakahou, me etahi atu - kei a matou ano te kawenga mo te haumarutanga o a maatau punaha. Ahakoa nga punaha e kii ana te kaiwhakarato tuatoru kia whakakorehia e matou te haumarutanga ake. He rite ki te mahi Etana Hunt mai i "Miihana: Kaore e taea."

I mua i tenei raruraru, ka whakatau etahi o nga kaiwhakahaere punaha ki te tango pire puru, no te mea e whakaaro ana ratou kare rawa ratou e mohio ki te whakautu ki te patai nui o te oranga, te ao me era atu mea. A, e mohio ana tatou katoa, ko te whakautu ko te 42.

I runga i te wairua o te Aratohu a te Hitchhiker ki te tupuni, e 42 nga whakautu ki nga patai nui mo te whakahaere me te whakamahi. SELinux i runga i o punaha.

1. Ko te SELinux he punaha mana uru, ko te tikanga he tapanga nga mahinga katoa. He tapanga hoki kei ia kōnae, whaiaronga me te ahanoa punaha. Ko nga ture kaupapa here e whakahaere ana i te uru ki waenga i nga tukanga me nga taonga kua tohua. Ka whakamanahia e te kernel enei ture.

2. Ko nga ariā tino nui e rua ko: Te tapanga — tohu (kōnae, tukanga, tauranga, etc.) me Momo uruhi (e wehe ana i nga tukanga mai i a raatau ano i runga i nga momo).

3. Te whakatakotoranga tapanga tika user:role:type:level (kōwhiringa).

4. Ko te kaupapa o te whakarato haumarutanga taumata-maha (Haumarutanga Taumata-maha - MLS) ko te whakahaere i nga tukanga (nga rohe) i runga i te taumata o te haumarutanga o nga raraunga ka whakamahia e ratou. Hei tauira, kaore e taea e te tukanga ngaro te panui i nga raraunga ngaro o runga.

5. Te whakarite i te haumarutanga maha-waahanga (Haumarutanga-Kawai-maha - MCS) ka tiaki i nga tukanga rite mai i a raatau ano (hei tauira, nga miihini mariko, nga miihini OpenShift, nga pouaka kirikiri SELinux, nga ipu, me etahi atu).

6. Ko nga whiringa Kernel mo te whakarereke i nga momo SELinux i te boot:

  • autorelabel=1 → ka whakahaere te punaha tapanga
  • selinux=0 → kaore te kernel e utaina te hanganga SELinux
  • enforcing=0 → te uta i roto i te aratau whakaae

7. Mena ka hiahia koe ki te tapanga ano i te punaha katoa:

# touch /.autorelabel
#reboot

Mena he maha nga hapa kei roto i te tohu punaha, ka hiahia pea koe ki te whakaara i te aratau whakaae kia angitu te korero.

8. Hei taki mena kua whakahohea a SELinux: # getenforce

9. Hei whakaahei/whakakore i te SELinux mo te wa poto: # setenforce [1|0]

10. Takina te mana SELinux: # sestatus

11. Kōnae whirihora: /etc/selinux/config

12. Me pehea te mahi a SELinux? Anei he tauira tohu mo te tūmau tukutuku Apache:

  • Whakaaturanga-rua: /usr/sbin/httpd→httpd_exec_t
  • Whaiaronga whirihoranga: /etc/httpd→httpd_config_t
  • Whaiaronga kōnae rangitaki: /var/log/httpd → httpd_log_t
  • Whaiaronga ihirangi: /var/www/html → httpd_sys_content_t
  • Whakarewa i te tuhinga: /usr/lib/systemd/system/httpd.service → httpd_unit_file_d
  • Tukanga: /usr/sbin/httpd -DFOREGROUND → httpd_t
  • Tauranga: 80/tcp, 443/tcp → httpd_t, http_port_t

Te tukanga e rere ana i roto i te horopaki httpd_t, ka taea te taunekeneke ki tetahi mea kua tapaina httpd_something_t.

13. He maha nga whakahau e whakaae ana ki te tautohetohe -Z hei tiro, te hanga me te huri i te horopaki:

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

Ka whakatauhia nga horopaki i te wa i hangaia ai nga konae i runga i te horopaki o to raatau whaiaronga matua (me etahi rereke). Ka taea e nga RPM te whakarite i nga horopaki penei i te wa o te whakaurunga.

14. E wha nga take matua o nga hapa SELinux, e whakaahuahia ana i roto i nga waahanga 15-21 i raro nei:

  • Nga take tapanga
  • Na tetahi mea e tika ana kia mohio a SELinux
  • Hapa i roto i te kaupapa here/tono SELinux
  • Ka raru pea o korero

15. Raruraru tapanga: mena kei roto o kōnae /srv/myweb kua he te tohu, ka kore te uru. Anei etahi huarahi hei whakatika i tenei:

  • Mena ka mohio koe ki te tapanga:
    # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
  • Mena kei te mohio koe ki tetahi konae me nga tohu rite:
    # semanage fcontext -a -e /srv/myweb /var/www
  • Whakaora i te horopaki (mō ngā take e rua):
    # restorecon -vR /srv/myweb

16. Raruraru tapanga: ki te nukuhia e koe te konae kaore i te kape, ka mau tonu te konae ki tona horopaki taketake. Hei whakatika i tenei raru:

  • Hurihia te tono horopaki me te tapanga:
    # chcon -t httpd_system_content_t /var/www/html/index.html
  • Hurihia te tono horopaki me te tapanga hono:
    # chcon --reference /var/www/html/ /var/www/html/index.html
  • Whakaorangia te horopaki (mō ngā take e rua): # restorecon -vR /var/www/html/

17. ki te SELinux me mohio koekei te whakarongo a HTTPD ki te tauranga 8585, korero ki a SELinux:

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

18. SELinux me mohio koe Ko nga uara Boolean ka taea te whakarereke i nga waahanga o te kaupapa here SELinux i te wa whakahaere me te kore e mohio ki te kaupapa here SELinux kua tuhiruatia. Hei tauira, ki te hiahia koe ki te tuku imeera a httpd, uruhia: # setsebool -P httpd_can_sendmail 1

19. SELinux me mohio koe uara arorau mo te whakahohe/whakakore i nga tautuhinga SELinux:

  • Hei kite i nga uara boolean katoa: # getsebool -a
  • Hei kite i te whakaahuatanga o ia: # semanage boolean -l
  • Hei tautuhi uara boolean: # setsebool [_boolean_] [1|0]
  • Mo te whakaurunga pumau, taapirihia -P. Hei tauira: # setsebool httpd_enable_ftp_server 1 -P

20. Kei roto pea i nga kaupapa here/tono SELinux nga hapa, tae atu ki:

  • Nga ara waehere rereke
  • Whirihoranga
  • E anga ana te stdout
  • Ka turuturu te tuhinga whakaahua
  • Pūmahara taea
  • Ko nga whare pukapuka he kino te hanga

Tuwhera nga tikiti (kaua e tuku purongo ki a Bugzilla; kaore he SLA a Bugzilla).

21. Ka raru pea o koreromena he rohe whakatiki koe e ngana ana ki te:

  • Utaina nga kōwae kernel
  • Monokia te aratau SELinux whakakaha
  • Tuhia ki etc_t/shadow_t
  • Hurihia nga ture iptables

22. Nga taputapu SELinux mo te whakawhanake i nga waahanga kaupapa here:

# yum -y install setroubleshoot setroubleshoot-server

Whakahoutia, whakaara ano ranei auditd i muri i te whakaurunga.

23. Whakamahia

journalctl

hei whakaatu i te rarangi o nga raarangi katoa e hono ana setroubleshoot:

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

24. Whakamahia journalctl ki te whakarārangi i ngā rākau katoa e pā ana ki tētahi tūtohu SELinux motuhake. Hei tauira:

# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0

25. Mena ka puta he hapa SELinux, whakamahia te rangitaki setroubleshoot he maha nga otinga ka taea.
Hei tauira, mai i 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. Takitaki: Ka tuhi a SELinux i nga korero ki nga waahi maha:

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

27. Takitaki: rapu mo nga hapa SELinux i roto i te raarangi arotake:

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

28. Hei kimi i nga karere SELinux Access Vector Cache (AVC) mo tetahi ratonga motuhake:

# ausearch -m avc -c httpd

29. Mahinga audit2allow ka kohikohi i nga korero mai i nga rarangi o nga mahi kua rahuitia ka whakaputa i nga ture kaupapa here whakaaetanga SELinux. Hei tauira:

  • Hei waihanga whakaahuatanga ka taea e te tangata te panui mo te take i kore ai te uru: # audit2allow -w -a
  • Hei tiro i te momo ture whakakaha e taea ai te uru whakahēhia: # audit2allow -a
  • Hei waihanga i te kōwae ritenga: # audit2allow -a -M mypolicy
  • Kōwhiringa -M ka waihanga momo momo konae (.te) me te ingoa kua tohua me te whakahiato i te ture ki roto i te kete kaupapa here (.pp): mypolicy.pp mypolicy.te
  • Hei tāuta i tētahi kōwae ritenga: # semodule -i mypolicy.pp

30. Hei whirihora i tetahi tukanga motuhake (rohe) kia mahi i roto i te aratau whakaae: # semanage permissive -a httpd_t

31. Ki te kore koe e hiahia kia whakaaehia te rohe: # semanage permissive -d httpd_t

32. Hei mono i nga rohe whakaae katoa: # semodule -d permissivedomains

33. Whakahohe kaupapa here MLS SELinux: # yum install selinux-policy-mls
в /etc/selinux/config:

SELINUX=permissive
SELINUXTYPE=mls

Me mohio kei te rere a SELinux i te aratau whakaae: # setenforce 0
Whakamahia he tuhinga fixfileshei whakarite kia tapaina ano nga konae ki te whakaara ano:

# fixfiles -F onboot # reboot

34. Waihangahia he kaiwhakamahi me te awhe MLS motuhake: # useradd -Z staff_u john

Te whakamahi i te whakahau useradd, maherehia te kaiwhakamahi hou ki tetahi kaiwhakamahi SELinux o mua (i tenei keehi, staff_u).

35. Hei tiro i te mapi i waenga i nga kaiwhakamahi SELinux me Linux: # semanage login -l

36. Tautuhia he awhe motuhake mo te kaiwhakamahi: # semanage login --modify --range s2:c100 john

37. Hei whakatika i te tapanga whaiaronga kainga o te kaiwhakamahi (mehemea e tika ana): # chcon -R -l s2:c100 /home/john

38. Hei tiro i nga waahanga o naianei: # chcat -L

39. Hei huri i nga waahanga ka timata ranei ki te hanga i a koe ake, whakatikahia te konae penei:

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

40. Hei whakahaere i tetahi tono, tuhinga tuhi ranei i roto i tetahi konae, mahi, me te horopaki kaiwhakamahi:

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

  • -t horopaki kōnae
  • -r horopaki tūranga
  • -u horopaki kaiwhakamahi

41. Ko nga ipu e rere ana me SELinux kua monokia:

  • Podman: # podman run --security-opt label=disable …
  • Kaitohu: # docker run --security-opt label=disable …

42. Mena ka hiahia koe ki te tuku i te ipu ki te uru katoa ki te punaha:

  • Podman: # podman run --privileged …
  • Kaitohu: # docker run --privileged …

Na inaianei kua mohio koe ki te whakautu. Tena koa: kaua e mataku ka taea te SELinux.

He Tohutoro:

Source: will.com

Tāpiri i te kōrero