Shkalla për sistem administratorët mbi SELinux: 42 përgjigje për pyetje të rëndësishme

Përkthimi i artikullit është përgatitur veçanërisht për studentët e kursit "Administrator Linux".

Shkalla për sistem administratorët mbi SELinux: 42 përgjigje për pyetje të rëndësishme

Këtu do të merrni përgjigje për pyetje të rëndësishme rreth jetës, universit dhe çdo gjëje tjetër në Linux me siguri të përmirësuar.

«E vĂ«rteta e rĂ«ndĂ«sishme Ă«shtĂ« se gjĂ«rat nuk janĂ« gjithmonĂ« ajo qĂ« duken, Ă«shtĂ« e njohur »

―Douglas Adams, UdhĂ«timi me gishta nĂ« GalaktikĂ«

Siguria. Rritja e besueshmĂ«risĂ«. PĂ«rputhshmĂ«ria. Politika. KatĂ«r JezuitĂ«t e Apokalipsit tĂ« administratorit tĂ« sistemit. PĂ«rveç detyrave tona tĂ« pĂ«rditshme — monitorimi, backup, implementimi, konfigurimi, pĂ«rditĂ«simi, etj. — ne gjithashtu jemi pĂ«rgjegjĂ«s pĂ«r sigurinĂ« e sistemeve tona. Edhe pĂ«r ato sisteme ku ofruesi i palĂ«s sĂ« tretĂ« na rekomandon tĂ« çaktivizojmĂ« sigurinĂ« e pĂ«rmirĂ«suar. Kjo Ă«shtĂ« si puna e Ethan Hunt nĂ« “Misionin e PashmangshĂ«m”.

Duke u përballur me këtë dilemë, disa administratorë sistemi vendosin të marrin tabletën blu, sepse mendojnë se nuk do ta dinë kurrë përgjigjen e pyetjes së madhe rreth jetës, universit dhe çdo gjëje tjetër. Dhe, siç e dimë të gjithë, kjo përgjigje është 42.

NĂ« frymĂ«n e “UdhĂ«timit me gishta nĂ« galaktikĂ«â€, kĂ«tu janĂ« 42 pĂ«rgjigje pĂ«r pyetje tĂ« rĂ«ndĂ«sishme mbi menaxhimin dhe pĂ«rdorimin SELinux nĂ« sistemet tuaja.

1. SELinux Ă«shtĂ« njĂ« sistem i menaxhimit tĂ« detyruar tĂ« qasjes, qĂ« do tĂ« thotĂ« se çdo proces ka njĂ« etiketĂ« (label). Çdo skedar, katror dhe objekt sistemik gjithashtu kanĂ« etiketa. Rregullat e politikĂ«s menaxhojnĂ« qasjen midis proceseve dhe objekteve tĂ« etiketuar. BĂ«rthama garanton zbatimin e kĂ«tyre rregullave.

2. Dy konceptet mĂ« tĂ« rĂ«ndĂ«sishme janĂ«: Etiketimi — etiketime (skedarĂ«, procese, porte etj.) dhe Zbatimi i tipit (i cili izolon proceset nga njĂ«ra-tjetra nĂ« bazĂ« tĂ« llojeve).

3. Formati i duhur i etiketës user:role:type:level (opsionale).

4. Qëllimi i sigurimit të sigurisë shumë-nivel është menaxhimi i proceseve (domenëve) në bazë të nivelit të sigurisë së të dhënave që do të përdorin. Për shembull, një proces sekret nuk mund të lexojë të dhëna të mbrojtura.Sigurimi i sigurisë shumë-kategori është mbrojtja e proceseve të ngjashme nga njëra-tjetra (për shembull, makinat virtuale, mekanizmat OpenShift, rërëzit SELinux, kontejnerët etj.).Parametrat e bërthamës për të ndryshuar regjimet SELinux gjatë nisjes:

5. autorelabel=1→ bĂ«n qĂ« sistemi tĂ« nisĂ« ri-etiketiminselinux=0

6. → bĂ«rthama nuk ngarkon infrastrukturĂ«n SELinux

  • enforcing=0 → ngarkimi nĂ« modu permissive
  • → ngarkimi nĂ« modin e lejuar → bĂ«rthama nuk ngarkon infrastrukturĂ«n SELinux
  • enforcing=0 → ngarkimi nĂ« modin permissive

7. Nëse ju nevojitet të rimerkoni të gjithë sistemin:

# touch /.autorelabel
#reboot

Nëse merkimi i sistemit përmban një numër të madh gabimesh, mund t'ju nevojitet ngarkimi në modin permissive për t'u siguruar që rimerkimi të kalojë me sukses.

8. Për të verifikuar nëse SELinux është aktiv: # getenforce

9. Për të aktivizuar/çaktivizuar përkohësisht SELinux: # setenforce [1|0]

10. Kontrolli i statusit të SELinux: # sestatus

11. Skeda e konfigurimit: /etc/selinux/config

12. Si funksionon SELinux? Ky është një shembull i një merkimi për serverin e uebit Apache:

  • PĂ«rfaqĂ«simi binar: /usr/sbin/httpd→httpd_exec_t
  • Katalogu i konfigurimit: /etc/httpd→httpd_config_t
  • Katalogu i skedave tĂ« tĂ« dhĂ«nave: /var/log/httpd → httpd_log_t
  • Katalogu i pĂ«rmbajtjes: /var/www/html → httpd_sys_content_t
  • Skripti i nisjes: /usr/lib/systemd/system/httpd.service → httpd_unit_file_d
  • Procesi: /usr/sbin/httpd -DFOREGROUND → httpd_t
  • Portat: 80/tcp, 443/tcp → httpd_t, http_port_t

Procesi që ekzekutohet në kontekstin httpd_t, mund të interaktojë me objektin me etiketë httpd_something_t.

13. Shumë komanda pranojnë argumentin -Z për të parë, krijuar dhe ndryshuar kontekstin:

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

Kontekste vendosen kur skedat krijohen mbi bazën e kontekstit të katalogut të tyre prind (me disa përjashtime). RPM mund të vendosin kontekste gjatë instalimit.

14. Ka katër arsye kryesore për gabimet e SELinux, të cilat janë përshkruar më hollësisht në pikën 15-21 më poshtë:

  • Problemet me etiketimin
  • PĂ«r ndonjĂ« gjĂ« qĂ« SELinux duhet tĂ« dijĂ«
  • Gabim nĂ« politikĂ«n/aplikacionin e SELinux
  • Informacioni juaj mund tĂ« jetĂ« i komprometuar

15. Problemi me etiketimin: nëse skedat tuaj janë /srv/myweb të etiketuar gabim, mund të ndalohet qasja. Këtu janë disa mënyra për ta rregulluar këtë:

  • NĂ«se e dini etiketĂ«n:
    # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
  • NĂ«se e dini skedĂ«n me etiketĂ«n e barabartĂ«:
    # semanage fcontext -a -e /srv/myweb /var/www
  • Rivendosni kontekstin (pĂ«r tĂ« dy rastet):
    # restorecon -vR /srv/myweb

16. Problemi me etiketimin: nëse e lëvizni skedën në vend që ta kopjoni, skeda do të ruajë kontekstin e saj origjinal. Për ta rregulluar këtë:

  • Ndryshoni komandĂ«n e kontekstit me etiketimin:
    # chcon -t httpd_system_content_t /var/www/html/index.html
  • Ndryshoni komandĂ«n e kontekstit me etiketĂ«n e lidhjes:
    # chcon --reference /var/www/html/ /var/www/html/index.html
  • Rivendosni kontekstin (pĂ«r tĂ« dy rastet): # restorecon -vR /var/www/html/

17. Nëse SELinux duhet të dijë, që HTTPD dëgjon portin 8585, informoni SELinux:

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

18. SELinux duhet të dijë vlera logjike që lejojnë ndryshimin e pjesëve të politikës së SELinux gjatë ekzekutimit pa njohuri për riparimin e politikës së SELinux. Për shembull, nëse dëshironi që httpd të dërgojë email, shkruani: # setsebool -P httpd_can_sendmail 1

19. SELinux duhet të dijë vlera logjike të aktivizimit/çaktivizimit të cilësimeve të SELinux:

  • PĂ«r tĂ« parĂ« tĂ« gjitha vlerat logjike: # getsebool -a
  • PĂ«r tĂ« parĂ« pĂ«rshkrimin e secilĂ«s: # semanage boolean -l
  • PĂ«r tĂ« vendosur njĂ« vlerĂ« logjike: # setsebool [_boolean_] [1|0]
  • PĂ«r njĂ« vendosje tĂ« pĂ«rhershme shtoni -P. PĂ«r shembull: # setsebool httpd_enable_ftp_server 1 -P

20. Politikat/aplikacionet e SELinux mund të përmbajnë gabime, duke përfshirë:

  • RrugĂ«t e pazakonta tĂ« kodit
  • Konfigurimet
  • Redirectimi stdout
  • ShkĂ«putjet e deshkruesve tĂ« skedarĂ«ve
  • Memoria ekzekutuese
  • Biblioteka tĂ« ndĂ«rtuara keq

Hapni tiketë (mos dërgoni raport në Bugzilla; në Bugzilla nuk ka SLA).

21. Informacioni juaj mund të jetë i komprometuar, nëse keni domain të kufizuara që përpiqen të:

  • Ngarkoni module bĂ«rthamore
  • Çaktivizoni modin e zbatuar SELinux
  • Shkruani nĂ« etc_t/shadow_t
  • Ndryshoni rregullat iptables

22. Mjetet SELinux për zhvillimin e moduleve të politikës:

# yum -y install setroubleshoot setroubleshoot-server

Rinisni ose ripërtërini auditd pas instalimit.

23. Përdorni

journalctl

për të shfaqur listën e të gjitha logeve që lidhen me setroubleshoot:

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

24. Përdorni journalctl për të shfaqur listën e të gjitha logeve që lidhen me një etiketë të caktuar SELinux. Për shembull:

# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0

25. Kur ndodh një gabim SELinux përdorni logun setroubleshoot me disa propozime për zgjidhje të mundshme.
Për shembull, nga journalctl:

Jun 14 19:41:07 web1 setroubleshoot: SELinux po parandalon httpd nga access atributin në skedarin /var/www/html/index.html. Për mesazhin e plotë ekzekutoni: sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e

# sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e
SELinux po parandalon httpd nga access atributin në skedarin /var/www/html/index.html.

***** Plugin restorecon (99.5 besueshmëri) sugjeron ************************

Nëse dëshironi të rregulloni etiketën,
/var/www/html/index.html etiketa e parazgjedhur duhet të jetë httpd_syscontent_t.
Më pas mund të restorni etiketën.
Bëni
# /sbin/restorecon -v /var/www/html/index.html

26. Logimi: SELinux regjistron informacion në shumë vende:

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

27. Logimi: kërkimi i gabimeve SELinux në logun e auditit:

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

28. Për të gjetur mesazhet SELinux Access Vector Cache (AVC) për një shërbim të caktuar:

# ausearch -m avc -c httpd

29. Mjeti audit2allow grupin informacionin nga logjet e operacioneve të ndaluara, dhe më pas gjeneron rregulla për politikën e lejes SELinux. Për shembull:

  • PĂ«r tĂ« krijuar njĂ« pĂ«rshkrim tĂ« lexueshĂ«m tĂ« shkakut tĂ« refuzimit tĂ« aksesit: # audit2allow -w -a
  • PĂ«r tĂ« parĂ« rregullin e detyrueshĂ«m qĂ« lejon aksesin e ndaluar: # audit2allow -a
  • PĂ«r tĂ« krijuar njĂ« modul pĂ«rdoruesi: # audit2allow -a -M mypolicy
  • Opcioni -M krijon njĂ« skedĂ« tĂ« detyrueshme pĂ«r tipin (.te) me emrin e dhĂ«nĂ« dhe kompilon rregullĂ«n nĂ« njĂ« paketĂ« politke (.pp): mypolicy.pp mypolicy.te
  • PĂ«r tĂ« instaluar modul pĂ«rdoruesi: # semodule -i mypolicy.pp

30. Për të konfiguruar një proces të veçantë (domain) për të punuar në modin permissive: # semanage permissive -a httpd_t

31. Nëse nuk dëshironi më që domain të jetë permissive: # semanage permissive -d httpd_t

32. Për të çaktuar të gjithë domainet permissive: # semodule -d permissivedomains

33. Aktivizimi i politikës MLS të SELinux: # yum install selinux-policy-mls
në /etc/selinux/config:

SELINUX=permissive
SELINUXTYPE=mls

Sigurohuni që SELinux të funksionojë në modin permissive: # setenforce 0
Përdorni skriptin fixfiles, për të garantuar që skedarët do të rimarkohen në rinisjen e ardhshme:

# fixfiles -F onboot # reboot

34. Krijoni një përdorues me një gamë të caktuar MLS: # useradd -Z staff_u john

Duke përdorur komandën useradd, lidhni përdoruesin e ri me përdoruesin ekzistues SELinux (në këtë rast, staff_u).

35. Për të parë përputhshmërinë mes përdoruesve SELinux dhe Linux: # semanage login -l

36. Për të përcaktuar një gamë të caktuar për përdoruesin: # semanage login --modify --range s2:c100 john

37. Për të korrigjuar etiketën në katalogun e shtëpisë së përdoruesit (nëse është e nevojshme): # chcon -R -l s2:c100 /home/john

38. Për të parë kategoritë aktuale: # chcat -L

39. Për të ndryshuar kategoritë ose për të filluar të krijoni të tuat, modifikoni skedarin si në vijim:

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

40. Për të ekzekutuar një komandë ose skript në një skedar të caktuar, rolin dhe kontekstin e përdoruesit:

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

  • -t konteksti i skedarit
  • -r konteksti i rolit
  • -u konteksti i pĂ«rdoruesit

41. Kontejnerë që punojnë me SELinux të çaktivizuar:

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

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


42. Nëse duhet të jepni një kontejnerit akses të plotë në sistem:

  • Podman: # podman run --privileged 

  • Docker: # docker run --privileged 


Dhe tani ju tashmë e dini përgjigjen. Prandaj, ju lutem: mos u panicni dhe aktivizoni SELinux.

Lidhjet:

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster