Despre Linux

  • Facebook
  • Twitter
  • LinkedIn
  • Acasă
  • Linux
    • Comenzi Linux
    • Tutoriale
  • Kubernetes
  • RHCSA
    • Exerciții RHCSA
    • SELinux
    • Permisiuni
  • General
    • Open source
  • Contact

Funcționarea SELinux

26 august 2018 By Bobses Un comentariu

SELinux operează la nivel de kernel, ceea ce înseamnă că, dacă un obiect Linux (un proces, un user, etc.) încearcă să acceseze un alt obiect (de exemplu, un fișier de configurare), kernelul verifică politica SELinux atribuită obiectelor date pentru a vedea dacă accesul ar trebui permis sau nu.

În fond, SELinux se compune din două părți:

  • contextul de securitate
  • tipul politicii de securitate.

Contexte de securitate

SELinux atribuie etichete fiecărui obiect Linux de pe mașină. Un astfel de obiect poate fi absolut orice:

  • conturi de utilizator
  • grupuri
  • fișiere
  • directoare
  • procese

Aceste etichete se numesc contexte SELinux sau contexte de securitate.

Vizualizarea contextelor de securitate

Pentru a vedea contextele de securitate ale unui obiect, folosim opțiunea -Z, opțiune care însoțește mai multe comenzi; una dintre ele este comanda  ls. SELinux atribuie automat un anumit context de securitate obiectelor nou-create.

# touch fisier-test.txt
# ls -Z fisier-test.txt
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 fisier-test.txt

După cum se observă în exemplul de mai sus, fiecare context SELinux este format din 4 părți delimitate de caracterul :. Cele 4 părți componente ale contextului de securitate dat ca exemplu sunt:

  • unconfined_u
  • object_r
  • admin_home_t
  • s0

Aceste elemente se numesc și atribute de securitate. Le voi descrie mai amănunțit într-un articol ulterior, dar deocamdată menționez că ele reprezintă un user (_u), un rol (_r), un tip (_t) și sensibilitatea (s0).

Aceste contexte de securitate sunt inutile fără tipurile de politici de securitate care le dau sens și care reprezintă, de fapt, funcționarea SELinux.

Exemple de comenzi care pot fi folosite cu opțiunea -Z:

  • comanda id:

# id -Z
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

  • comanda ps:

# ps -efZ | head
LABEL UID PID PPID C STIME TTY TIME CMD
system_u:system_r:init_t:s0 root 1 0 0 13:13 ? 00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 32
system_u:system_r:kernel_t:s0 root 2 0 0 13:13 ? 00:00:00 [kthreadd]
system_u:system_r:kernel_t:s0 root 3 2 0 13:13 ? 00:00:00 [rcu_gp]

  • comanda netstat:

Tipuri de politici

Ne putem gândi că o politică de securitate SELinux este ca o carte foarte mare care conține câte o intrare pentru fiecare atribut de securitate, urmată de o listă de alte atribute de securitate la care îi este permis accesul.

Pentru a interoga politicile SELinux vom folosi instrumentul sesearch (parte a pachetului  setools-console, așa cum am menționat în primul articol despre SELinux). Comanda de mai jos caută prin toate politicile SELinux și afișează pe o singură linie numărul total de politici:

# sesearch --all | wc -l
182962

Comanda de mai jos caută după regulile de tip allow în toate politicile SELinux și afișează doar primele 10 rânduri din output:

# sesearch --allow | head
allow NetworkManager_etc_rw_t NetworkManager_etc_rw_t:filesystem associate;
allow NetworkManager_etc_t NetworkManager_etc_t:filesystem associate;
allow NetworkManager_exec_t NetworkManager_exec_t:filesystem associate;
allow NetworkManager_initrc_exec_t NetworkManager_initrc_exec_t:filesystem associate;
allow NetworkManager_log_t NetworkManager_log_t:filesystem associate;
allow NetworkManager_log_t tmp_t:filesystem associate;
allow NetworkManager_log_t tmpfs_t:filesystem associate;
allow NetworkManager_ssh_t NetworkManager_ssh_t:association sendto;
allow NetworkManager_ssh_t NetworkManager_ssh_t:capability { dac_read_search setgid setuid };
allow NetworkManager_ssh_t NetworkManager_ssh_t:dbus send_msg;

Fiecare intrare a unui anumit tip de politică poate fi numită o regulă a acelei politici de securitate. Aceste pot fi modificate la un nivel mai înalt prin configurarea sebooleans, care va fi descrisă într-un articol ulterior.

Există 3 tipuri de politici de securitate pentru SELinux: targeted (cea mai folosită), minimum și mls. Vor fi descrise într-un alt articol. De asemenea, există câteva tipuri de reguli pentru fiecare politică (--allow, --neverallow, etc.) care pot fi consultate citind pagina de manual pentru sesearch - man sesearch.

În imaginea de mai jos sunt exemplificate câteva reguli allow referitoare la un obiect de tipul httpd_content_type:


Să ne uităm un pic la regula de mai jos:

allow httpd_t httpd_content_type:file { getattr ioctl lock map open read };

Regula spune că oricărui obiect de tipul httpd_t îi este permis să acceseze un obiect de tipul httpd_content_type, atât timp cât acest obiect este un fișier. Mergând mai departe, vedem și ce fel de acces îi este permis: { getattr ioctl lock map open read }.

Toate regulile de tip allow sunt, în general, structurate aproximativ la fel ca cea descrisă.

Partajează asta:

  • Dă clic pentru a partaja pe Facebook(Se deschide într-o fereastră nouă)
  • Dă clic pentru a partaja pe LinkedIn(Se deschide într-o fereastră nouă)
  • Dă clic pentru a partaja pe Twitter(Se deschide într-o fereastră nouă)

Similare

Din categoria: SELinux Etichete: RHCSA, SELinux

Trackbacks

  1. Tipuri de politici și atribute SELinux. Politica targeted | Despre Linux spune:
    20 iunie 2021 la 11:46

    […] articolul anterior am menționat că o politică SELinux este ca o carte uriașă care conține regulile […]

    Răspunde

Lasă un răspuns Anulează răspunsul

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.

Copyright © 2023 · Bobses

Administrează consimțămintele pentru cookie-uri
Pentru a oferi cea mai bună experiență, folosim tehnologii, cum ar fi cookie-uri, pentru a stoca și/sau accesa informațiile despre dispozitive. Consimțământul pentru aceste tehnologii ne permite să procesăm date, cum ar fi comportamentul de navigare sau ID-uri unice pe acest site. Dacă nu îți dai consimțământul sau îți retragi consimțământul dat poate avea afecte negative asupra unor anumite funcționalități și funcții.
Funcționale Mereu activ
Stocarea tehnică sau accesul sunt strict necesare în scopul legitim de a permite utilizarea unui anumit serviciu cerut în mod explicit de către un abonat sau un utilizator sau în scopul exclusiv de a executa transmiterea unei comunicări printr-o rețea de comunicații electronice.
Preferințe
Stocarea tehnică sau accesul este necesară în scop legitim pentru stocarea preferințelor care nu sunt cerute de abonat sau utilizator.
Statistici
Stocarea tehnică sau accesul care sunt utilizate exclusiv în scopuri statistice. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
Stocarea tehnică sau accesul sunt necesare pentru a crea profiluri de utilizator pentru a trimite publicitate sau pentru a urmări utilizatorul pe un site web sau pe mai multe site-uri web în scopuri de marketing similare.
Administrează opțiunile Administrează serviciile Administrează vânzătorii Citește mai multe despre aceste scopuri
Vizualizează preferințele
{title} {title} {title}