SELinux cheat sheet vir stelsel administrateurs: 42 antwoorde op belangrike vrae

Die vertaling van die artikel is spesifiek vir die studente van die kursus voorberei "Linux Administrateur".

SELinux cheat sheet vir stelsel administrateurs: 42 antwoorde op belangrike vrae

Hier kry jy antwoorde op belangrike vrae oor die lewe, die heelal en alles in Linux met verbeterde sekuriteit.

"Die belangrike waarheid dat dinge nie altyd is wat dit lyk nie, is algemene kennis ..."

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

Veiligheid. Verhoogde betroubaarheid. Korrespondensie. Beleid. Four Horsemen of the Apocalypse sysadmin. Benewens ons daaglikse take - monitering, rugsteun, implementering, konfigurasie, opdatering, ens. - is ons ook verantwoordelik vir die sekuriteit van ons stelsels. Selfs daardie stelsels waar die derdeparty-verskaffer aanbeveel dat ons verbeterde sekuriteit deaktiveer. Dit voel soos werk Ethan Hunt uit "Mission: Impossible."

Gekonfronteer met hierdie dilemma, besluit sommige stelseladministrateurs om te neem blou pil, want hulle dink hulle sal nooit die antwoord op die groot vraag van die lewe, die heelal en dit alles weet nie. En soos ons almal weet, is daardie antwoord 42.

In die gees van The Hitchhiker's Guide to the Galaxy, is hier 42 antwoorde op belangrike vrae oor beheer en gebruik. SELinux op jou stelsels.

1. SELinux is 'n gedwonge toegangsbeheerstelsel, wat beteken dat elke proses 'n etiket het. Elke lêer, gids en stelselvoorwerp het ook byskrifte. Beleidreëls beheer toegang tussen gemerkte prosesse en voorwerpe. Die kern dwing hierdie reëls af.

2. Die twee belangrikste konsepte is: etikettering — merke (lêers, prosesse, poorte, ens.) en Tik handhawing (wat prosesse van mekaar isoleer op grond van tipes).

3. Korrekte etiketformaat user:role:type:level (opsioneel).

4. Die doel van die verskaffing van multi-vlak sekuriteit (Multi-Level Security - MLS) is om prosesse (domeine) te bestuur gebaseer op die vlak van sekuriteit van die data wat hulle sal gebruik. Byvoorbeeld, 'n geheime proses kan nie hoogs geheime data lees nie.

5. Verseker multi-kategorie sekuriteit (Multi-kategorie sekuriteit - MCS) beskerm soortgelyke prosesse van mekaar (byvoorbeeld virtuele masjiene, OpenShift-enjins, SELinux-sandkaste, houers, ens.).

6. Kernelopsies vir die verandering van SELinux-modusse tydens opstart:

  • autorelabel=1 → veroorsaak dat die stelsel heretikettering uitvoer
  • selinux=0 → die kern laai nie die SELinux-infrastruktuur nie
  • enforcing=0 → laai in permissiewe modus

7. As jy die hele stelsel moet herbenoem:

# touch /.autorelabel
#reboot

As die stelselmerk 'n groot aantal foute bevat, moet jy dalk in permissiewe modus selflaai om hermerking te slaag.

8. Om te kyk of SELinux geaktiveer is: # getenforce

9. Om SELinux tydelik te aktiveer/deaktiveer: # setenforce [1|0]

10. Gaan SELinux-status na: # sestatus

11. Konfigurasie lêer: /etc/selinux/config

12. Hoe werk SELinux? Hier is 'n voorbeeldmerk vir die Apache-webbediener:

  • Binêre voorstelling: /usr/sbin/httpd→httpd_exec_t
  • Konfigurasiegids: /etc/httpd→httpd_config_t
  • Loglêergids: /var/log/httpd → httpd_log_t
  • Inhoud gids: /var/www/html → httpd_sys_content_t
  • Begin skrip: /usr/lib/systemd/system/httpd.service → httpd_unit_file_d
  • proses: /usr/sbin/httpd -DFOREGROUND → httpd_t
  • Hawens: 80/tcp, 443/tcp → httpd_t, http_port_t

Proses loop in konteks httpd_t, kan interaksie hê met 'n benoemde voorwerp httpd_something_t.

13. Baie opdragte aanvaar 'n argument -Z om konteks te sien, te skep en te verander:

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

Konteks word gevestig wanneer lêers geskep word gebaseer op die konteks van hul ouergids (met enkele uitsonderings). RPM's kan kontekste vestig soos tydens installasie.

14. Daar is vier hoofoorsake van SELinux-foute, wat in meer besonderhede in punte 15-21 hieronder beskryf word:

  • Etikettering kwessies
  • As gevolg van iets wat SELinux moet weet
  • Fout in SELinux-beleid/toepassing
  • Jou inligting kan gekompromitteer word

15. Etikettering probleem: as jou lêers in is /srv/myweb verkeerd gemerk is, kan toegang geweier word. Hier is 'n paar maniere om dit reg te stel:

  • As jy die etiket ken:
    # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
  • As jy 'n lêer met ekwivalente merke ken:
    # semanage fcontext -a -e /srv/myweb /var/www
  • Herstel van die konteks (vir beide gevalle):
    # restorecon -vR /srv/myweb

16. Etikettering probleem: as jy die lêer skuif in plaas daarvan om dit te kopieer, sal die lêer sy oorspronklike konteks behou. Om hierdie probleem op te los:

  • Verander die konteks opdrag met die etiket:
    # chcon -t httpd_system_content_t /var/www/html/index.html
  • Verander die konteks opdrag met die skakel etiket:
    # chcon --reference /var/www/html/ /var/www/html/index.html
  • Herstel die konteks (vir beide gevalle): # restorecon -vR /var/www/html/

17. As SELinux wat jy moet weetdat HTTPD op poort 8585 luister, vertel SELinux:

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

18. SELinux wat jy moet weet Boole-waardes wat toelaat dat dele van die SELinux-beleid tydens looptyd verander word sonder dat kennis van die SELinux-beleid oorskryf word. Byvoorbeeld, as jy wil hê httpd moet e-pos stuur, voer in: # setsebool -P httpd_can_sendmail 1

19. SELinux wat jy moet weet logiese waardes om SELinux-instellings te aktiveer/deaktiveer:

  • Om alle Boolese waardes te sien: # getsebool -a
  • Om 'n beskrywing van elk te sien: # semanage boolean -l
  • Om 'n Boolese waarde te stel: # setsebool [_boolean_] [1|0]
  • Vir 'n permanente installasie, voeg by -P. Byvoorbeeld: # setsebool httpd_enable_ftp_server 1 -P

20. SELinux-beleide/-toepassings kan foute bevat, insluitend:

  • Ongewone kode paaie
  • Konfigurasies
  • Herlei tans standout
  • Lêerbeskrywing lek
  • Uitvoerbare geheue
  • Swak geboude biblioteke

Maak kaartjies oop (moenie 'n verslag by Bugzilla indien nie; Bugzilla het geen SLA nie).

21. Jou inligting kan gekompromitteer wordas jy beperkte domeine het wat probeer om:

  • Laai kernmodules
  • Deaktiveer gedwonge SELinux-modus
  • Skryf na etc_t/shadow_t
  • Verander iptables-reëls

22. SELinux-nutsgoed vir die ontwikkeling van beleidsmodules:

# yum -y install setroubleshoot setroubleshoot-server

Herlaai of herbegin auditd na installasie.

23. Gebruik

journalctl

om 'n lys te vertoon van alle logs wat daarmee geassosieer word setroubleshoot:

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

24. Gebruik journalctl om alle logs wat met 'n spesifieke SELinux-merker geassosieer word, te lys. Byvoorbeeld:

# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0

25. As 'n SELinux-fout voorkom, gebruik die logboek setroubleshoot bied verskeie moontlike oplossings.
Byvoorbeeld, van 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. Aanteken: SELinux teken inligting op baie plekke aan:

  • / var / log / boodskappe
  • /var/log/oudit/oudit.log
  • /var/lib/setroubleshoot/setroubleshoot_database.xml

27. Teken: soek na SELinux-foute in die ouditlogboek:

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

28. Om SELinux Access Vector Cache (AVC) boodskappe vir 'n spesifieke diens te vind:

# ausearch -m avc -c httpd

29. Nuts audit2allow versamel inligting uit logs van verbode bedrywighede en genereer dan SELinux-toestemmingsbeleidreëls. Byvoorbeeld:

  • Om 'n mens-leesbare beskrywing te skep van hoekom toegang geweier word: # audit2allow -w -a
  • Om 'n tipe afdwingingsreël te sien wat toegang geweier toelaat: # audit2allow -a
  • Om 'n pasgemaakte module te skep: # audit2allow -a -M mypolicy
  • opsie -M skep 'n tipe afdwingingslêer (.te) met die gespesifiseerde naam en stel die reël saam in 'n beleidspakket (.pp): mypolicy.pp mypolicy.te
  • Om 'n pasgemaakte module te installeer: # semodule -i mypolicy.pp

30. Om 'n aparte proses (domein) op te stel om in permissiewe modus te werk: # semanage permissive -a httpd_t

31. As jy nie meer wil hê dat die domein permissief moet wees nie: # semanage permissive -d httpd_t

32. Om alle permissiewe domeine te deaktiveer: # semodule -d permissivedomains

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

SELINUX=permissive
SELINUXTYPE=mls

Maak seker dat SELinux in permissiewe modus werk: # setenforce 0
Gebruik 'n skrif fixfilesom te verseker dat die lêers met die volgende herlaai herbenoem word:

# fixfiles -F onboot # reboot

34. Skep 'n gebruiker met 'n spesifieke MLS-reeks: # useradd -Z staff_u john

Gebruik die opdrag useradd, karteer die nuwe gebruiker na 'n bestaande SELinux-gebruiker (in hierdie geval, staff_u).

35. Om die kartering tussen SELinux- en Linux-gebruikers te sien: # semanage login -l

36. Definieer 'n spesifieke reeks vir die gebruiker: # semanage login --modify --range s2:c100 john

37. Om die gebruiker se tuisgids-etiket reg te stel (indien nodig): # chcon -R -l s2:c100 /home/john

38. Om huidige kategorieë te sien: # chcat -L

39. Om kategorieë te verander of jou eie te begin skep, wysig die lêer soos volg:

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

40. Om 'n opdrag of skrip in 'n spesifieke lêer, rol en gebruikerskonteks uit te voer:

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

  • -t lêer konteks
  • -r rolkonteks
  • -u gebruikerskonteks

41. Houers wat loop met SELinux gedeaktiveer:

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

42. As jy die houer volle toegang tot die stelsel moet gee:

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

En nou weet jy reeds die antwoord. So asseblief: moenie paniekerig raak nie en aktiveer SELinux.

verwysings:

Bron: will.com

Voeg 'n opmerking