SELinux svindlblað fyrir kerfisstjóra: 42 svör við mikilvægum spurningum

Þýðing greinarinnar var unnin sérstaklega fyrir nemendur námskeiðsins "Linux stjórnandi".

SELinux svindlblað fyrir kerfisstjóra: 42 svör við mikilvægum spurningum

Hér færðu svör við mikilvægum spurningum um lífið, alheiminn og allt í Linux með bættu öryggi.

«Важная истина, что вещи не всегда являются тем, чем кажутся, общеизвестна…»

-Douglas Adams, The Hitchhiker's Guide to the Galaxy

Öryggi. Aukinn áreiðanleiki. Bréfaskipti. Stefna. Four Horsemen of the Apocalypse sysadmin. Auk daglegra verkefna okkar - eftirlit, öryggisafrit, innleiðing, stillingar, uppfærslur o.s.frv. - berum við einnig ábyrgð á öryggi kerfa okkar. Jafnvel þau kerfi þar sem þriðji aðili mælir með því að við slökkva á auknu öryggi. Það líður eins og vinna Ethan Hunt úr "Mission: Impossible."

Frammi fyrir þessu vandamáli ákveða sumir kerfisstjórar að taka bláa pilla, vegna þess að þeir halda að þeir muni aldrei vita svarið við stóru spurningunni um lífið, alheiminn og allt það. Og eins og við vitum öll er svarið 42.

Í anda The Hitchhiker's Guide to the Galaxy eru hér 42 svör við mikilvægum spurningum um stjórn og notkun. SELinux á kerfum þínum.

1. SELinux er þvingað aðgangsstýringarkerfi, sem þýðir að hvert ferli hefur merki. Hver skrá, skrá og kerfishlutur hefur einnig merki. Stefnureglur stjórna aðgangi milli merktra ferla og hluta. Kjarninn framfylgir þessum reglum.

2. Двумя наиболее важными концепциями являются: Merkingar — merkingar (skrár, ferlar, hafnir osfrv.) og Tegund fullnustu (sem einangrar ferla hvert frá öðru út frá gerðum).

3. Rétt merkimiðasnið user:role:type:level (valfrjálst).

4. Tilgangurinn með því að veita fjölþrepa öryggi (Öryggi á mörgum stigum - MLS) er að stjórna ferlum (lénum) út frá öryggisstigi gagna sem þau munu nota. Til dæmis getur leynilegt ferli ekki lesið leynileg gögn.

5. Tryggja fjölflokka öryggi (Öryggi í mörgum flokkum - MCS) verndar svipuð ferla hvert frá öðru (til dæmis sýndarvélar, OpenShift vélar, SELinux sandkassa, gáma osfrv.).

6. Kjarnavalkostir til að breyta SELinux stillingum við ræsingu:

  • autorelabel=1 → veldur því að kerfið keyrir endurmerkingu
  • selinux=0 → kjarninn hleður ekki SELinux innviði
  • enforcing=0 → hleðsla í leyfilegri ham

7. Ef þú þarft að endurmerkja allt kerfið:

# touch /.autorelabel
#reboot

Ef kerfismerkingin inniheldur mikinn fjölda villna gætir þú þurft að ræsa þig í leyfilegum ham til að athugasemdir nái árangri.

8. Til að athuga hvort SELinux sé virkt: # getenforce

9. Til að virkja/slökkva tímabundið á SELinux: # setenforce [1|0]

10. Проверка статуса SELinux: # sestatus

11. Stillingarskrá: /etc/selinux/config

12. Hvernig virkar SELinux? Hér er dæmi um merkingu fyrir Apache vefþjóninn:

  • Tvöfaldur framsetning: /usr/sbin/httpd→httpd_exec_t
  • Stillingarskrá: /etc/httpd→httpd_config_t
  • Skráasafn: /var/log/httpd → httpd_log_t
  • Каталог содержимого: /var/www/html → httpd_sys_content_t
  • Ræsa handrit: /usr/lib/systemd/system/httpd.service → httpd_unit_file_d
  • Aðferð: /usr/sbin/httpd -DFOREGROUND → httpd_t
  • Hafnir: 80/tcp, 443/tcp → httpd_t, http_port_t

Ferli í gangi í samhengi httpd_t, getur haft samskipti við merktan hlut httpd_something_t.

13. Margar skipanir samþykkja rök -Z для просмотра, создания и изменения контекста:

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

Samhengi er komið á þegar skrár eru búnar til byggt á samhengi yfirmöppu þeirra (með nokkrum undantekningum). RPM getur komið á samhengi eins og við uppsetningu.

14. Það eru fjórar meginorsakir SELinux villna, sem lýst er nánar í liðum 15-21 hér að neðan:

  • Merkingamál
  • Vegna einhvers sem SELinux þarf að vita
  • Villa í stefnu/forriti SELinux
  • Upplýsingunum þínum gæti verið í hættu

15. Merkingarvandamál: ef skrárnar þínar eru í /srv/myweb eru rangt merktir, gæti aðgangi verið hafnað. Hér eru nokkrar leiðir til að laga þetta:

  • Если вы знаете метку:
    # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
  • Ef þú þekkir skrá með samsvarandi merkingum:
    # semanage fcontext -a -e /srv/myweb /var/www
  • Að endurheimta samhengið (í báðum tilvikum):
    # restorecon -vR /srv/myweb

16. Merkingarvandamál: ef þú færir skrána í stað þess að afrita hana mun hún halda upprunalegu samhengi sínu. Til að laga þetta vandamál:

  • Breyttu samhengisskipuninni með merkimiðanum:
    # chcon -t httpd_system_content_t /var/www/html/index.html
  • Breyttu samhengisskipuninni með tenglamerkinu:
    # chcon --reference /var/www/html/ /var/www/html/index.html
  • Endurheimtu samhengið (í báðum tilvikum): # restorecon -vR /var/www/html/

17. Ef SELinux sem þú þarft að vitaað HTTPD sé að hlusta á port 8585, segðu SELinux:

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

18. SELinux sem þú þarft að vita Boolean gildi sem gera kleift að breyta hlutum SELinux stefnunnar á keyrslutíma án þess að vitneskja um SELinux stefnuna sé yfirskrifuð. Til dæmis, ef þú vilt að httpd sendi tölvupóst skaltu slá inn: # setsebool -P httpd_can_sendmail 1

19. SELinux sem þú þarft að vita rökrétt gildi til að virkja/slökkva á SELinux stillingum:

  • Til að sjá öll boolean gildi: # getsebool -a
  • Til að sjá lýsingu á hverju: # semanage boolean -l
  • Til að stilla Boolean gildi: # setsebool [_boolean_] [1|0]
  • Fyrir varanlega uppsetningu, bætið við -P. Til dæmis: # setsebool httpd_enable_ftp_server 1 -P

20. SELinux reglur/forrit geta innihaldið villur, þar á meðal:

  • Óvenjulegar kóðaleiðir
  • Stillingar
  • Beinir stdout
  • Skráarlýsing lekur
  • Keyranlegt minni
  • Плохо построенные библиотеки

Opnaðu miða (ekki senda skýrslu til Bugzilla; Bugzilla hefur ekkert SLA).

21. Upplýsingunum þínum gæti verið í hættuef þú ert með takmörkuð lén að reyna að:

  • Hlaða kjarnaeiningum
  • Slökktu á þvinguðum SELinux ham
  • Skrifaðu til etc_t/shadow_t
  • Breyttu reglum iptables

22. SELinux verkfæri til að þróa stefnueiningar:

# yum -y install setroubleshoot setroubleshoot-server

Endurræstu eða endurræstu auditd eftir uppsetningu.

23. Используйте

journalctl

til að birta lista yfir alla annála sem tengjast setroubleshoot:

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

24. Используйте journalctl til að skrá alla annála sem tengjast tilteknu SELinux merki. Til dæmis:

# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0

25. Ef SELinux villa kemur upp skaltu nota annálinn setroubleshoot bjóða upp á nokkrar mögulegar lausnir.
Til dæmis frá 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. Skráning: SELinux skráir upplýsingar á mörgum stöðum:

  • / var / log / skilaboð
  • /var/log/audit/audit.log
  • /var/lib/setroubleshoot/setroubleshoot_database.xml

27. Skráning: að leita að SELinux villum í endurskoðunarskránni:

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

28. Til að finna SELinux Access Vector Cache (AVC) skilaboð fyrir tiltekna þjónustu:

# ausearch -m avc -c httpd

29. Gagnsemi audit2allow safnar upplýsingum úr annálum um bannaðar aðgerðir og býr síðan til SELinux leyfisstefnureglur. Til dæmis:

  • Til að búa til mannlæsilega lýsingu á því hvers vegna aðgangi er hafnað: # audit2allow -w -a
  • Til að skoða tegund framfylgdarreglu sem leyfir aðgangi sem er hafnað: # audit2allow -a
  • Til að búa til sérsniðna einingu: # audit2allow -a -M mypolicy
  • Valkostur -M býr til tegund framfylgdarskrá (.te) með tilgreindu nafni og setur regluna saman í stefnupakka (.pp): mypolicy.pp mypolicy.te
  • Чтобы установить пользовательский модуль: # semodule -i mypolicy.pp

30. Til að stilla sérstakt ferli (lén) til að virka í leyfilegum ham: # semanage permissive -a httpd_t

31. Ef þú vilt ekki lengur að lénið sé leyfilegt: # semanage permissive -d httpd_t

32. Чтобы отключить все permissive домены: # semodule -d permissivedomains

33. Virkja MLS SELinux stefnu: # yum install selinux-policy-mls
в /etc/selinux/config:

SELINUX=permissive
SELINUXTYPE=mls

Gakktu úr skugga um að SELinux sé í gangi í leyfilegum ham: # setenforce 0
Notaðu handrit fixfilestil að tryggja að skrárnar séu endurmerktar við næstu endurræsingu:

# fixfiles -F onboot # reboot

34. Búðu til notanda með tiltekið MLS svið: # useradd -Z staff_u john

Að nota skipunina useradd, kortleggðu nýja notandann yfir á núverandi SELinux notanda (í þessu tilfelli, staff_u).

35. Til að skoða kortlagningu milli SELinux og Linux notenda: # semanage login -l

36. Skilgreindu ákveðið svið fyrir notandann: # semanage login --modify --range s2:c100 john

37. Til að leiðrétta merki heimaskrár notanda (ef nauðsyn krefur): # chcon -R -l s2:c100 /home/john

38. Til að skoða núverandi flokka: # chcat -L

39. Til að breyta flokkum eða byrja að búa til þína eigin skaltu breyta skránni sem hér segir:

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

40. Til að keyra skipun eða skriftu í tiltekinni skrá, hlutverki og notendasamhengi:

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

  • -t skráarsamhengi
  • -r hlutverk samhengi
  • -u samhengi notenda

41. Контейнеры, работающие с отключенным SELinux:

  • Podman: # podman run --security-opt label=disable …
  • Hafnarmaður: # docker run --security-opt label=disable …

42. Ef þú þarft að veita ílátinu fullan aðgang að kerfinu:

  • Podman: # podman run --privileged …
  • Hafnarmaður: # docker run --privileged …

Og nú veistu nú þegar svarið. Svo vinsamlegast: ekki örvænta og virkjaðu SELinux.

Tilvísanir:

Heimild: www.habr.com

Bæta við athugasemd