SELinux sistema-administratzaileentzako iruzur orria: galdera garrantzitsuetarako 42 erantzun

Artikuluaren itzulpena ikastaroko ikasleentzat bereziki prestatu zen "Linux administratzailea".

SELinux sistema-administratzaileentzako iruzur orria: galdera garrantzitsuetarako 42 erantzun

Hemen Linux-en bizitzari, unibertsoari eta guztiari buruzko galdera garrantzitsuen erantzunak jasoko dituzu segurtasun hobetuarekin.

"Gauzak beti diruditena ez direla dioen egia garrantzitsua jakina da..."

-Douglas Adams, Autoestopistaren gida Galaxia

Segurtasuna. Fidagarritasuna handitu. Korrespondentzia. Politika. Four Horsemen of the Apocalypse sistemako administratzailea. Gure eguneroko zereginez gain -monitorizazioa, babeskopia, ezarpena, konfigurazioa, eguneratzea, etab.- gure sistemen segurtasunaz ere arduratzen gara. Hirugarrenen hornitzaileak segurtasun hobetua desgaitzea gomendatzen duten sistemak ere. Lan bat bezala sentitzen da Ethan Hunt "Mission: Impossible"-tik.

Dilema honen aurrean, sistema-administratzaile batzuek hartzea erabakitzen dute pilula urdina, uste baitute ez dutela inoiz jakingo bizitzaren, unibertsoaren eta horren guztiaren galdera handiaren erantzuna. Eta denok dakigunez, erantzun hori 42 da.

The Hitchhiker's Guide to the Galaxy-ren izpirituan, hona hemen kontrolari eta erabilerari buruzko galdera garrantzitsuen 42 erantzun. SELinux zure sistemetan.

1. SELinux behartutako sarbidea kontrolatzeko sistema bat da, hau da, prozesu bakoitzak etiketa bat dauka. Fitxategi, direktorio eta sistemako objektu bakoitzak etiketak ere baditu. Politika-arauek etiketatutako prozesuen eta objektuen arteko sarbidea kontrolatzen dute. Nukleoak arau hauek betetzen ditu.

2. Bi kontzeptu garrantzitsuenak hauek dira: Etiketatua — markaketak (fitxategiak, prozesuak, atakak, etab.) eta Mota betearaztea (moten arabera prozesuak elkarrengandik isolatzen dituena).

3. Etiketa formatu zuzena user:role:type:level (aukerakoa).

4. Maila anitzeko segurtasuna eskaintzearen helburua (Maila anitzeko segurtasuna - MLS) prozesuak (domeinuak) kudeatzea da, erabiliko dituzten datuen segurtasun mailaren arabera. Adibidez, prozesu sekretu batek ezin ditu sekretu nagusiak irakurri.

5. Kategoria anitzeko segurtasuna bermatzea (Kategoria anitzeko segurtasuna - MCS) antzeko prozesuak elkarrengandik babesten ditu (adibidez, makina birtualak, OpenShift motorrak, SELinux sandboxak, edukiontziak, etab.).

6. Abioan SELinux moduak aldatzeko nukleoaren aukerak:

  • autorelabel=1 → sistema berriro etiketatzea exekutatzen du
  • selinux=0 → nukleoak ez du SELinux azpiegitura kargatzen
  • enforcing=0 → modu permisiboan kargatzea

7. Sistema osoa berriro etiketatu behar baduzu:

# touch /.autorelabel
#reboot

Sistemaren markaketak errore ugari baditu, baliteke modu baimenduan abiarazi behar izatea oharrak arrakasta izan dezan.

8. SELinux gaituta dagoen egiaztatzeko: # getenforce

9. SELinux aldi baterako gaitzeko/desgaitzeko: # setenforce [1|0]

10. SELinux egoera egiaztatzea: # sestatus

11. Konfigurazio fitxategia: /etc/selinux/config

12. Nola funtzionatzen du SELinux-ek? Hona hemen Apache web zerbitzarirako markaketa adibide bat:

  • Irudikapen bitarra: /usr/sbin/httpd→httpd_exec_t
  • Konfigurazio direktorioa: /etc/httpd→httpd_config_t
  • Log-fitxategien direktorioa: /var/log/httpd → httpd_log_t
  • Edukien direktorioa: /var/www/html → httpd_sys_content_t
  • Abiarazteko gidoia: /usr/lib/systemd/system/httpd.service → httpd_unit_file_d
  • Prozesu: /usr/sbin/httpd -DFOREGROUND → httpd_t
  • Portuak: 80/tcp, 443/tcp → httpd_t, http_port_t

Testuinguruan exekutatzen ari den prozesua httpd_t, etiketatutako objektu batekin elkarreragin dezake httpd_something_t.

13. Komando askok argumentu bat onartzen dute -Z testuingurua ikusteko, sortzeko eta aldatzeko:

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

Testuinguruak fitxategiak beren direktorio nagusiaren testuinguruan oinarrituta sortzen direnean ezartzen dira (salbuespenak salbuespen). RPM-ek testuinguruak ezar ditzakete instalazioan bezala.

14. SELinux akatsen lau kausa nagusi daude, xehetasun gehiagorekin deskribatzen direnak beheko 15-21 puntuetan:

  • Etiketatze arazoak
  • SELinuxek jakin behar duen zerbaitengatik
  • Errore bat SELinux politika/aplikazioan
  • Zure informazioa arriskuan egon daiteke

15. Etiketatze arazoa: zure fitxategiak barruan badaude /srv/myweb gaizki markatuta daude, sarbidea ukatu egin daiteke. Hona hemen hau konpontzeko modu batzuk:

  • Etiketa ezagutzen baduzu:
    # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
  • Marka baliokideak dituen fitxategi bat ezagutzen baduzu:
    # semanage fcontext -a -e /srv/myweb /var/www
  • Testuingurua berreskuratzea (bi kasuetarako):
    # restorecon -vR /srv/myweb

16. Etiketatze arazoa: fitxategia kopiatu beharrean mugitzen baduzu, fitxategiak jatorrizko testuingurua mantenduko du. Arazo hau konpontzeko:

  • Aldatu testuinguruaren komandoa etiketarekin:
    # chcon -t httpd_system_content_t /var/www/html/index.html
  • Aldatu testuinguruaren komandoa estekaren etiketarekin:
    # chcon --reference /var/www/html/ /var/www/html/index.html
  • Berrezarri testuingurua (bi kasuetarako): # restorecon -vR /var/www/html/

17. Bada SELinux ezagutu behar duzuHTTPD 8585 atakan entzuten ari dela, esan SELinux-i:

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

18. SELinux ezagutu behar duzu SELinux politikaren zatiak exekuzio garaian aldatzeko aukera ematen duten balio boolearrak SELinux politika gainidatzi gabe jakin gabe. Adibidez, httpd-ek mezu elektronikoa bidaltzea nahi baduzu, idatzi: # setsebool -P httpd_can_sendmail 1

19. SELinux ezagutu behar duzu SELinux ezarpenak gaitzeko/desgaitzeko balio logikoak:

  • Balio boolear guztiak ikusteko: # getsebool -a
  • Bakoitzaren deskribapena ikusteko: # semanage boolean -l
  • Balio boolearra ezartzeko: # setsebool [_boolean_] [1|0]
  • Instalazio iraunkor bat izateko, gehitu -P. Adibidez: # setsebool httpd_enable_ftp_server 1 -P

20. SELinux politikak/aplikazioek akatsak izan ditzakete, besteak beste:

  • Ezohiko kode-bideak
  • Konfigurazioak
  • stdout birbideratzen
  • Fitxategien deskribatzailea filtrazioak
  • Memoria exekutagarria
  • Gaizki eraikitako liburutegiak

Ireki txartelak (ez bidali txostenik Bugzillari; Bugzillak ez du SLArik).

21. Zure informazioa arriskuan egon daitekedomeinu mugatuak badituzu saiatzen ari zarenean:

  • Kargatu nukleoaren moduluak
  • Desgaitu behartutako SELinux modua
  • Idatzi etc_t/shadow_t
  • Aldatu iptables arauak

22. SELinux tresnak politika-moduluak garatzeko:

# yum -y install setroubleshoot setroubleshoot-server

Berrabiarazi edo berrabiarazi auditd instalatu ondoren.

23. erabilera

journalctl

lotutako erregistro guztien zerrenda bistaratzeko setroubleshoot:

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

24. erabilera journalctl SELinux etiketa zehatz batekin lotutako erregistro guztiak zerrendatzeko. Adibidez:

# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0

25. SELinux errore bat gertatzen bada, erabili erregistroa setroubleshoot hainbat irtenbide posible eskainiz.
Adibidez, tik 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. Erregistroa: SELinux-ek informazioa leku askotan erregistratzen du:

  • / Var / log / mezuak
  • /var/log/audit/audit.log
  • /var/lib/setroubleshoot/setroubleshoot_database.xml

27. Erregistroa: SELinux akatsen bilaketa auditoretza erregistroan:

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

28. Zerbitzu zehatz baterako SELinux Access Vector Cache (AVC) mezuak aurkitzeko:

# ausearch -m avc -c httpd

29. Erabilgarritasuna audit2allow debekatutako eragiketen erregistroetatik informazioa biltzen du eta, ondoren, SELinux baimen-politika arauak sortzen ditu. Adibidez:

  • Sarbidea ukatu egiten zaion deskribapen bat sortzeko: # audit2allow -w -a
  • Sarbide ukatua onartzen duen mota betearazteko arau bat ikusteko: # audit2allow -a
  • Modulu pertsonalizatu bat sortzeko: # audit2allow -a -M mypolicy
  • Aukera -M mota betearazteko fitxategi bat (.te) sortzen du zehaztutako izenarekin eta araua politika pakete batean konpilatzen du (.pp): mypolicy.pp mypolicy.te
  • Modulu pertsonalizatu bat instalatzeko: # semodule -i mypolicy.pp

30. Prozesu bereizi bat (domeinua) konfiguratzeko modu permisiboan lan egiteko: # semanage permissive -a httpd_t

31. Domeinua baimendua izatea nahi ez baduzu: # semanage permissive -d httpd_t

32. Domeinu baimendu guztiak desgaitzeko: # semodule -d permissivedomains

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

SELINUX=permissive
SELINUXTYPE=mls

Ziurtatu SELinux modu permisiboan exekutatzen ari dela: # setenforce 0
Erabili gidoi bat fixfileshurrengo berrabiaraztean fitxategiak berriro etiketatuta daudela ziurtatzeko:

# fixfiles -F onboot # reboot

34. Sortu erabiltzaile bat MLS barruti zehatz batekin: # useradd -Z staff_u john

Komandoa erabiliz useradd, mapatu erabiltzaile berria lehendik dagoen SELinux erabiltzaile batekin (kasu honetan, staff_u).

35. SELinux eta Linux erabiltzaileen arteko mapa ikusteko: # semanage login -l

36. Definitu erabiltzailearen barruti zehatz bat: # semanage login --modify --range s2:c100 john

37. Erabiltzailearen etxeko direktorioaren etiketa zuzentzeko (beharrezkoa bada): # chcon -R -l s2:c100 /home/john

38. Uneko kategoriak ikusteko: # chcat -L

39. Kategoriak aldatzeko edo zurea sortzen hasteko, editatu fitxategia honela:

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

40. Komando edo script bat fitxategi, rol eta erabiltzailearen testuinguru jakin batean exekutatzeko:

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

  • -t fitxategiaren testuingurua
  • -r rolaren testuingurua
  • -u erabiltzailearen testuingurua

41. SELinux desgaituta dauden edukiontziak:

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

42. Edukiontziari sistemarako sarbide osoa eman behar badiozu:

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

Eta orain dagoeneko badakizue erantzuna. Beraz, mesedez: ez beldurtu eta gaitu SELinux.

erreferentziak:

Iturria: www.habr.com

Gehitu iruzkin berria