SELinux cheat sheet sistemos administratoriams: 42 atsakymai į svarbius klausimus

Straipsnio vertimas buvo parengtas specialiai kurso studentams "Linux administratorius".

SELinux cheat sheet sistemos administratoriams: 42 atsakymai į svarbius klausimus

Čia gausite atsakymus į svarbius klausimus apie gyvenimą, visatą ir viską Linux su patobulinta sauga.

„Svarbi tiesa, kad viskas ne visada yra taip, kaip atrodo, yra visiems žinoma...“

-Douglasas Adamsas, Autostopu vadovas po galaktiką

Saugumas. Padidėjęs patikimumas. Susirašinėjimas. politika. Keturi Apokalipsės raiteliai sysadmin. Be kasdienių užduočių – stebėjimo, atsarginių kopijų kūrimo, diegimo, konfigūravimo, atnaujinimo ir kt. – esame atsakingi ir už savo sistemų saugumą. Net tose sistemose, kuriose trečiosios šalies teikėjas rekomenduoja išjungti padidintą apsaugą. Jaučiasi kaip darbas Etanas Hantas iš „Misija: neįmanoma“.

Susidūrę su šia dilema, kai kurie sistemos administratoriai nusprendžia imtis mėlyna tabletė, nes jie mano, kad niekada nesužinos atsakymo į didelį gyvenimo, visatos ir viso to klausimą. Ir kaip mes visi žinome, atsakymas yra 42.

Pagal „Galaktikos autostopo vadovo“ dvasią pateikiame 42 atsakymus į svarbius klausimus apie valdymą ir naudojimą. Selinux jūsų sistemose.

1. SELinux yra priverstinės prieigos kontrolės sistema, o tai reiškia, kad kiekvienas procesas turi etiketę. Kiekvienas failas, katalogas ir sistemos objektas taip pat turi etiketes. Politikos taisyklės kontroliuoja prieigą tarp pažymėtų procesų ir objektų. Branduolys vykdo šias taisykles.

2. Dvi svarbiausios sąvokos yra šios: Ženklinimas — žymėjimai (failai, procesai, prievadai ir kt.) ir Tipo vykdymas (kuris išskiria procesus vienas nuo kito pagal tipus).

3. Teisingas etiketės formatas user:role:type:level (neprivaloma).

4. Kelių lygių saugumo užtikrinimo tikslas (Kelių lygių apsauga – MLS) yra valdyti procesus (domenus) pagal duomenų, kuriuos jie naudos, saugumo lygį. Pavyzdžiui, slaptas procesas negali nuskaityti itin slaptų duomenų.

5. Kelių kategorijų saugumo užtikrinimas (Kelių kategorijų apsauga – MCS) apsaugo panašius procesus vienas nuo kito (pavyzdžiui, virtualios mašinos, OpenShift varikliai, SELinux smėlio dėžės, konteineriai ir kt.).

6. Branduolio parinktys keičiant SELinux režimus įkrovos metu:

  • autorelabel=1 → sukelia sistemos perženklinimą
  • selinux=0 → branduolys neįkelia SELinux infrastruktūros
  • enforcing=0 → įkeliama leistinuoju režimu

7. Jei reikia perženklinti visą sistemą:

# touch /.autorelabel
#reboot

Jei sistemos žymėjime yra daug klaidų, gali reikėti paleisti leistinuoju režimu, kad pastabos būtų sėkmingos.

8. Norėdami patikrinti, ar SELinux įjungtas: # getenforce

9. Norėdami laikinai įjungti / išjungti SELinux: # setenforce [1|0]

10. Tikrinama SELinux būsena: # sestatus

11. Konfigūracijos failas: /etc/selinux/config

12. Kaip veikia SELinux? Štai „Apache“ žiniatinklio serverio žymėjimo pavyzdys:

  • Dvejetainis vaizdavimas: /usr/sbin/httpd→httpd_exec_t
  • Konfigūracijos katalogas: /etc/httpd→httpd_config_t
  • Žurnalo failų katalogas: /var/log/httpd → httpd_log_t
  • Turinio katalogas: /var/www/html → httpd_sys_content_t
  • Paleisti scenarijų: /usr/lib/systemd/system/httpd.service → httpd_unit_file_d
  • Procesas: /usr/sbin/httpd -DFOREGROUND → httpd_t
  • Prievadai: 80/tcp, 443/tcp → httpd_t, http_port_t

Procesas vyksta kontekste httpd_t, gali sąveikauti su pažymėtu objektu httpd_something_t.

13. Daugelis komandų priima argumentą -Z peržiūrėti, kurti ir keisti kontekstą:

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

Kontekstai nustatomi, kai failai sukuriami remiantis pirminio katalogo kontekstu (su kai kuriomis išimtimis). RPM gali nustatyti kontekstą, kaip ir diegimo metu.

14. Yra keturios pagrindinės SELinux klaidų priežastys, kurios išsamiau aprašytos toliau pateiktuose 15–21 punktuose:

  • Ženklinimo problemos
  • Dėl to, ką SELinux turi žinoti
  • Klaida SELinux politikoje / programoje
  • Jūsų informacija gali būti pažeista

15. Ženklinimo problema: jei jūsų failai yra /srv/myweb yra pažymėtos neteisingai, prieiga gali būti uždrausta. Štai keletas būdų, kaip tai išspręsti:

  • Jei žinote etiketę:
    # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
  • Jei žinote failą su lygiaverčiais ženklais:
    # semanage fcontext -a -e /srv/myweb /var/www
  • Konteksto atkūrimas (abiem atvejais):
    # restorecon -vR /srv/myweb

16. Ženklinimo problema: jei perkelsite failą, o ne nukopijuosite, failas išsaugos pradinį kontekstą. Norėdami išspręsti šią problemą:

  • Pakeiskite konteksto komandą su etikete:
    # chcon -t httpd_system_content_t /var/www/html/index.html
  • Pakeiskite konteksto komandą su nuorodos etikete:
    # chcon --reference /var/www/html/ /var/www/html/index.html
  • Atkurkite kontekstą (abiem atvejais): # restorecon -vR /var/www/html/

17. jei SELinux, kurį reikia žinotikad HTTPD klausosi 8585 prievado, pasakykite SELinux:

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

18. SELinux, kurį reikia žinoti Būlio reikšmės, leidžiančios kai kurias SELinux politikos dalis keisti vykdymo metu, nežinant, kad SELinux politika yra perrašoma. Pavyzdžiui, jei norite, kad httpd išsiųstų el. laišką, įveskite: # setsebool -P httpd_can_sendmail 1

19. SELinux, kurį reikia žinoti SELinux nustatymų įjungimo / išjungimo loginės reikšmės:

  • Norėdami pamatyti visas logines reikšmes: # getsebool -a
  • Norėdami pamatyti kiekvieno aprašą: # semanage boolean -l
  • Norėdami nustatyti loginę reikšmę: # setsebool [_boolean_] [1|0]
  • Norėdami įdiegti nuolat, pridėkite -P. Pavyzdžiui: # setsebool httpd_enable_ftp_server 1 -P

20. SELinux strategijose / programose gali būti klaidų, įskaitant:

  • Neįprasti kodo keliai
  • Konfigūracijos
  • Peradresuoja stdout
  • Failo aprašo nutekėjimas
  • Vykdomoji atmintis
  • Blogai pastatytos bibliotekos

Atviri bilietai (neteikite ataskaitos Bugzilla; Bugzilla neturi SLA).

21. Jūsų informacija gali būti pažeistajei turite apribotus domenus, bandydami:

  • Įkelti branduolio modulius
  • Išjungti priverstinį SELinux režimą
  • Parašyti etc_t/shadow_t
  • Pakeiskite iptables taisykles

22. SELinux įrankiai politikos moduliams kurti:

# yum -y install setroubleshoot setroubleshoot-server

Perkraukite arba paleiskite iš naujo auditd po įdiegimo.

23. Naudokite

journalctl

kad būtų rodomas visų su susietų žurnalų sąrašas setroubleshoot:

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

24. Naudokite journalctl Norėdami išvardyti visus žurnalus, susietus su konkrečia SELinux žyma. Pavyzdžiui:

# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0

25. Jei įvyksta SELinux klaida, naudokite žurnalą setroubleshoot siūlo keletą galimų sprendimų.
Pavyzdžiui, 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. Registravimas: SELinux įrašo informaciją daugelyje vietų:

  • / var / log / žinutės
  • /var/log/audit/audit.log
  • /var/lib/setroubleshoot/setroubleshoot_database.xml

27. Registravimas: SELinux klaidų paieška audito žurnale:

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

28. Norėdami rasti konkrečios paslaugos SELinux Access Vector Cache (AVC) pranešimus:

# ausearch -m avc -c httpd

29. Naudingumas audit2allow renka informaciją iš draudžiamų operacijų žurnalų ir generuoja SELinux leidimų politikos taisykles. Pavyzdžiui:

  • Norėdami sukurti žmonėms suprantamą aprašymą, kodėl prieiga uždrausta: # audit2allow -w -a
  • Norėdami peržiūrėti tipo vykdymo taisyklę, leidžiančią uždrausti prieigą: # audit2allow -a
  • Norėdami sukurti pasirinktinį modulį: # audit2allow -a -M mypolicy
  • Variantas -M sukuria tipo vykdymo failą (.te) nurodytu pavadinimu ir sukompiliuoja taisyklę į politikos paketą (.pp): mypolicy.pp mypolicy.te
  • Norėdami įdiegti pasirinktinį modulį: # semodule -i mypolicy.pp

30. Norėdami sukonfigūruoti atskirą procesą (domeną), kad jis veiktų leistinuoju režimu: # semanage permissive -a httpd_t

31. Jei nebenorite, kad domenas būtų leistinas: # semanage permissive -d httpd_t

32. Norėdami išjungti visus leidžiamus domenus: # semodule -d permissivedomains

33. MLS SELinux politikos įgalinimas: # yum install selinux-policy-mls
в /etc/selinux/config:

SELINUX=permissive
SELINUXTYPE=mls

Įsitikinkite, kad SELinux veikia leistinuoju režimu: # setenforce 0
Naudokite scenarijų fixfilesNorėdami užtikrinti, kad failai būtų perženklinti kitą kartą paleidžiant iš naujo:

# fixfiles -F onboot # reboot

34. Sukurkite vartotoją su konkrečiu MLS diapazonu: # useradd -Z staff_u john

Naudojant komandą useradd, susieti naują vartotoją su esamu SELinux vartotoju (šiuo atveju, staff_u).

35. Norėdami peržiūrėti „SELinux“ ir „Linux“ vartotojų susiejimą: # semanage login -l

36. Apibrėžkite konkretų naudotojo diapazoną: # semanage login --modify --range s2:c100 john

37. Norėdami pataisyti vartotojo namų katalogo etiketę (jei reikia): # chcon -R -l s2:c100 /home/john

38. Norėdami peržiūrėti dabartines kategorijas: # chcat -L

39. Norėdami pakeisti kategorijas arba pradėti kurti savo, redaguokite failą taip:

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

40. Norėdami paleisti komandą arba scenarijų konkrečiame faile, vaidmenyje ir vartotojo kontekste:

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

  • -t failo kontekstas
  • -r vaidmens kontekstas
  • -u vartotojo kontekstas

41. Sudėtiniai rodiniai, veikiantys su išjungtu SELinux:

  • Podmanas: # podman run --security-opt label=disable …
  • Dokeris: # docker run --security-opt label=disable …

42. Jei jums reikia suteikti konteineriui visą prieigą prie sistemos:

  • Podmanas: # podman run --privileged …
  • Dokeris: # docker run --privileged …

Ir dabar jūs jau žinote atsakymą. Taigi prašau: nepanikuokite ir įjunkite SELinux.

Nuorodos:

Šaltinis: www.habr.com

Добавить комментарий