Linux îmbunătățit de securitate

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
SELinux
software
Siglă
Administrator SELinux GUI în Fedora 8
Administrator SELinux GUI în Fedora 8
Tip Securitate IT
Dezvoltator NSA și Red Hat
Data primei versiuni 1 ianuarie 1998
Ultima versiune 2,8 (24 mai 2018)
Sistem de operare Linux
Limba C.
Licență GNU GPL
( licență gratuită )
Site-ul web selinuxproject.org/

În informatică , Security-Enhanced Linux ( SELinux ) este un modul de securitate al kernel-ului Linux care oferă un set de instrumente de utilizare și monitorizare a controlului accesului, inclusiv controlul accesului obligatoriu (MAC), toate folosind framework-uri Linux Security Modules (LSM).

SELinux este un set de modificări care pot fi aplicate sistemelor de operare de tip Unix, cum ar fi Linux și BSD . Arhitectura sa încearcă să separe utilizarea regulilor de securitate de definirea regulilor în sine, reducând numărul de software-uri însărcinate cu verificarea respectării acestora. Conceptele de bază ale SELinux pot fi urmărite înapoi la unele proiecte ale Agenției Naționale de Securitate a SUA (NSA).

Istorie

Prima lucrare care vizează standardizarea controalelor de acces obligatorii și discreționare (MAC și DAC) într-un mediu UNIX (mai precis POSIX) poate fi atribuită grupului de lucru Trusted UNIX (TRUSIX) al Agenției Naționale de Securitate Naționale ( NSA ), care din 1987 până în 1991 a produs un model formal (publicat într-o carte Rainbow Book ) și un prototip de evaluare care, totuși, nu a fost publicat niciodată.

SELinux a fost conceput pentru a demonstra valoarea controalelor de acces obligatorii la comunitatea Linux și modul în care aceste controale ar putea fi adăugate la Linux. Inițial, patch-urile care au fost integrate în SELinux trebuiau aplicate în mod explicit codului sursă de kernel linux, deoarece kernel versiunea 2.6 a fost complet integrat în mod implicit.

Primul dezvoltator SELinux a lansat prima versiune către comunitatea de dezvoltare open source sub GNU GPL pe 22 decembrie 2000. [1] Software-ul s-a alăturat principalului nucleu Linux 2.6.0-test3, lansat pe 8 august 2003.

Linux îmbunătățit de securitate implementează Kernel-ul de securitate Flux Advanced (FLASK). Acest nucleu conține componente arhitecturale concepute pentru sistemul de operare Fluke. Componentele Fluke oferă suport extins pentru aplicarea multor tipuri de politici obligatorii de control al accesului, inclusiv controlul accesului bazat pe execuție, bazat pe roluri (RBAC) și protecții de securitate pe mai multe straturi . FLASK, la rândul său, se bazează pe DTOS, un sistem de operare Trusted Mach, un proiect de cercetare realizat de Trusted Information Systems care a influențat proiectarea și implementarea DTOS.

Descriere

De la echipa Linux îmbunătățită de securitate NSA: [2]

NSA Security-Enhanced Linux este un set de instrumente kernel Linux pentru monitorizarea controlului accesului ( MAC ) instalat în distribuțiile Linux principale.

Oferă un mecanism robust pentru păstrarea intactă a informațiilor confidențiale care altfel ar putea fi modificate, ocolește mecanismele de securitate ale aplicației, limitează și remediază daunele care ar putea fi cauzate de aplicații dăunătoare sau defecte.

SELinux include un set de fișiere de configurare și politici de securitate concepute pentru a îndeplini obiective de securitate comune sau generale.

Un kernel Linux care integrează SELinux impune politici obligatorii de control al accesului care restricționează programele utilizatorilor, software-ul de sistem server, accesul la fișiere și resurse de rețea. Limitând permisiunile la un nivel minim, pe sistemele Linux , reduce sau elimină capacitatea programelor și proceselor daemon de a provoca daune dacă sunt defecte sau compromise (de exemplu, prin depășiri de tampon sau erori de configurare). Acest mecanism de închidere funcționează independent de mecanismele de control al accesului Linux. Nu are conceptul de superutilizator „rădăcină” și nu are permisiunile tradiționale de securitate speciale atribuite fișierelor și directoarelor care modifică comportamentul sistemului față de utilizatori și / sau grupuri (de exemplu, setuid / setgid ).

Securitatea unui sistem fără SELinux depinde de corectitudinea nucleului, de toate privilegiile aplicațiilor și de fiecare dintre configurațiile acestora. O problemă în unele, sau chiar una dintre ele, ar putea genera compromisuri de securitate pentru întregul sistem. Dimpotrivă, un sistem linux „modificat”, adică bazat pe un kernel SELinux, depinde de corectitudinea kernelului și de configurațiile politicilor de securitate. Unele imperfecțiuni ale corectitudinii sau configurației aplicațiilor ar putea compromite funcționarea proceselor de demoni de sistem ale fiecărui utilizator individual și, de asemenea, nu neapărat, reprezintă o amenințare pentru demonii de sistem ai altor utilizatori conectați sau pentru securitatea întregului sistem. SELinux oferă un set de concepte și funcționalități extrase din verificările de acces, verificările de integritate și controlul accesului bazat pe roluri (RBAC). Instrumentele „terță parte” vă permit să creați versatilitate în politicile de securitate.

Utilizatori, contexte și politici de securitate

Utilizatorii și politicile SELinux nu trebuie să fie legate de utilizatorii și politicile sistemului Linux. Pentru fiecare utilizator sau proces, SELinux atribuie un context cu trei șiruri format din nume de utilizator, rol și domeniu (sau tip). De obicei, majoritatea utilizatorilor reali partajează același nume de utilizator SELinux și tot controlul accesului este gestionat prin intermediul celei de-a treia etichete, domeniul. Prin urmare, acest sistem utilizat este mai flexibil decât este necesar în mod normal. Un proces este plasat într-un domeniu dat dacă configurația politicii o permite. Pentru a porni un proces într-un context specificat în mod explicit (utilizator, rol, domeniu) acesta trebuie lansat cu comanda runcon , SELinux poate refuza pornirea dacă nu este specificat în configurația politicii de securitate.

Hardware, porturi de rețea și fișiere au toate un context SELinux. Acesta constă dintr-un nume, un rol (rar folosit) și un tip. În cazul unui sistem de fișiere, maparea între fișiere și contexte de securitate se numește etichetare. Etichetarea este definită în fișierele de politici, dar poate fi, de asemenea, ajustată manual, fără a modifica configurațiile politicii. Tipurile, în contextele SELinux, sunt definite în detaliu. De exemplu, bin_t (toate fișierele din folderul / bin) sau postgresql_port_t (portul PostgreSQL, 5432). Contextul SELinux pentru un sistem de fișiere la distanță poate fi specificat în mod explicit la momentul montării.

SELinux adaugă opțiunea -Z la unele comenzi shell, cum ar fi ls, ps (și unele altele). Acest lucru vă permite să vedeți contextul de securitate al fișierelor sau proceselor.

O politică standard constă din: un fișier de mapare (etichetare), un fișier de reguli și un fișier de interfață. Aceste trei fișiere definesc împreună domeniul și trebuie întotdeauna compilate împreună cu instrumentele SELinux pentru a produce un singur fișier de politică. Fișierul de politică rezultat trebuie încărcat în nucleu pentru a fi activ. Aceste tipuri de proceduri (insert / remove to / from kernel) nu necesită o repornire a sistemului. Fișierele de politici pot fi scrise de mână sau generate de SELinux Management, care este mult mai ușor de utilizat. În mod normal, noile criterii sunt testate mai întâi în „modul permisiv”, unde încălcările sunt permise și înregistrate. Instrumentul audit2allow poate fi utilizat pentru a crea reguli suplimentare, care extind politica inițială, pentru a realiza limitarea tuturor activităților legitime pe care o aplicație le poate desfășura.

Caracteristici

Caracteristicile SELinux includ:

  • Politici de securitate bine definite
  • Separarea între politicile de securitate și aplicații
  • Suport pentru aplicații care interogă politica de securitate și controlul accesului.
  • Independența între diferitele politici de securitate
  • Independența formatelor și a conținutului de securitate
  • Verifică serviciile kernel și [obiectele kernel] (kobj)
  • Suport pentru schimbarea politicilor de securitate
  • Păstrați protecția integrității sistemului și confidențialitatea datelor separate (securitate [pe mai multe niveluri])
  • Politici de securitate flexibile
  • Controale privind inițializarea procesului și execuția programului
  • Deschideți sistemul de fișiere, directorul, fișierul și verificările [descriptor de fișiere]
  • Verificări socket-uri, mesaje și interfețe de rețea
  • Controlul informațiilor memorate în cache prin intermediul AVC [3] (Access Vector Cache)

Implementări

SELinux este implementat și disponibil, începând cu versiunea 4, în distribuția comercială a Red Hat: „ Red Hat Enterprise Linux (RHEL)”. Politica de securitate din RHEL4 vizează o ușurință maximă de utilizare și, prin urmare, este foarte puțin restrictivă. După a patra versiune, se implementează o politică de securitate mult mai restrictivă. SELinux poate fi găsit și în versiunile corespunzătoare ale CentOS și Scientific Linux și din versiunea 4.3 [4] este implementat și în sistemul de operare Android .

Una dintre primele distribuții, susținută de comunitatea GNU / Linux, care a implementat SELinux a fost Fedora . Alte distribuții care îl acceptă astăzi sunt Debian , Ubuntu 8.04 Hardy Heron [5] și din versiunea 11.1 Enterprise, de asemenea, openSUSE are o implementare ca „previzualizare tehnologică” [6] .

SELinux este utilizat pe scară largă în sistemele bazate pe containere Linux , cum ar fi CoreOS Linux Container și rkt [7] . Este util ca o verificare de securitate suplimentară, pentru a ajuta la consolidarea în continuare a izolării dintre containere și gazda lor.

Utilizări posibile

SELinux ar putea controla, cu specificații foarte precise, activitățile, procesele sau demonii fiecărui utilizator care rulează Linux. În orice caz, modulul este utilizat în principal pentru a limita demonii, cum ar fi algoritmii bazei de date sau serverele web, care au activități mult mai definite și acces la date. Această limitare previne deteriorarea potențială a unui proces de demon care are unele vulnerabilități. De obicei, procesele „obișnuite” ale utilizatorilor sunt executate fără ajutorul modulului SELinux, dar sunt încă limitate de permisiunile clasice de acces Linux.

Unele linii de comandă utilizate sunt: [8] chcon , [9] restorecon , [10] restorecond , [11] runcon , [12] secon , [13] fixfiles , [14] setfiles , [15] load_policy , [16] booleans , [17] getsebool , [18] setsebool , [19] togglesebool [20] setenforce , semodule , postfix-nochroot , check-selinux-installation , semodule_package , checkmodule , selinux-config-enforcing , [21] selinuxenabled , [22] ] și selinux-policy-upgrade [23] .

Exemple

Puneți SELinux în modul de aplicare:

$ sudo setenforce 1

Verificați starea SELinux:

$ getenforce

Comparație cu AppArmor

SELinux este doar una dintre numeroasele abordări posibile ale problemei limitării acțiunilor pe care software-ul instalat le poate efectua. O altă alternativă foarte comună se numește AppArmor și este disponibilă pe distribuții precum: SUSE Linux Enterprise Server (SLES), openSUSE și altele bazate pe Debian . AppArmor a fost dezvoltat în distribuția Immunix Linux acum neutilizată. AppArmor și SELinux diferă radical unul de celălalt. Din acest motiv, ele formează alternative distincte pentru controlul software-ului. Spre deosebire de SELinux, AppArmor a fost conceput pentru a fi simplu, extinzând aceeași semantică administrativă utilizată pentru DAC până la controlul accesului obligatoriu.

Diferențe

  • O diferență importantă este că AppArmor identifică obiectele sistemului de fișiere după numele căii, mai degrabă decât folosind inodul. Aceasta înseamnă că, de exemplu, un fișier inaccesibil poate deveni accesibil, în AppArmor, chiar și doar prin crearea unui link dur, în timp ce SELinux refuză accesul prin intermediul linkului hard nou creat.
  • Se poate spune că AppArmor nu este un sistem de „aplicare a tipului”, de fapt fișierelor nu li se atribuie un tip, ci sunt pur și simplu menționate într-un fișier de configurare.
  • SELinux și AppArmor diferă, de asemenea, semnificativ în modul în care sunt administrate și modul în care se integrează în sistem [24] .
  • AppArmor folosește controale tradiționale DAC la nivel MAC, setul de operații este, de asemenea, mult mai mic decât cele disponibile în majoritatea implementărilor SELinux. De exemplu, setul de operații AppArmor constă din: citire, scriere, adăugare, executare, blocare și legătură [25] . SELinux acceptă de obicei aceleași permisiuni, dar include și verificări pentru mknod, legarea socket-ului de rețea, utilizarea implicită a funcționalității POSIX, încărcarea și descărcarea modulului kernel, diverse modalități de accesare a memoriei partajate etc.
  • Nu există controale în AppArmor pentru funcționalitatea POSIX. AppArmor poate împiedica modificarea permisiunilor și împiedica montarea / demontarea sistemelor de fișiere, dar nu face nimic pentru a împiedica utilizatorii să iasă din domeniul lor de control aprobat de AppArmor.
  • Nu există nicio noțiune de securitate pe mai multe straturi cu AppArmor, deci nu există o protecție BLP sau Biba disponibilă.
  • Configurarea AppArmor se face folosind numai fișiere plate obișnuite. SELinux (implicit la majoritatea implementărilor) folosește o combinație de fișiere plate (utilizate de administratori și dezvoltatori pentru a scrie politici de securitate lizibile înainte de a fi compilate) și atribute extinse.
  • SELinux acceptă „serverul de gestionare a politicilor la distanță” (configurabil prin /etc/selinux/semanage.conf) ca o sursă alternativă pentru configurarea politicilor de securitate. Gestionarea centralizată a AppArmor, pe de altă parte, este considerabil mai complicată, deoarece administratorii trebuie să decidă între instrumentele de implementare a configurației rulate ca root (pentru a permite actualizări de politici) și configurațiile efectuate manual pe fiecare server.

Sisteme similare

Izolarea proceselor și aplicațiilor, din motive de securitate, poate fi realizată și de alte sisteme, cum ar fi cele virtualizate . Proiectul OLPC , de exemplu, în prima sa implementare [26] a rulat aplicații pe servere virtuale separate ( Vserver ), acționând ca un sandbox .

NSA a folosit, de asemenea, câteva concepte SELinux pentru securitatea sistemelor de operare bazate pe Android [27] .

Notă

  1. ^ Comparați Agenția Națională de Securitate Împărtășește îmbunătățirile de securitate cu Linux , în comunicatul de presă al NSA , Fort George G. Meade, Maryland, Serviciul Central de Securitate al Agenției Naționale de Securitate, 2 ianuarie 2001. Accesat la 17 noiembrie 2011 .
    "NSA este încântată să anunțe că a dezvoltat și pune la dispoziția publicului o versiune prototip a unui sistem de operare Linux cu securitate îmbunătățită." .
  2. ^ Security-Enhanced Linux - NSA / CSS , la nsa.gov , Agenția Națională de Securitate, 15 ianuarie 2009. Accesat la 6 februarie 2013 .
  3. ^ Fedora Documentation Project, Fedora 13 Security-Enhanced Linux User Guide , Fultus Corporation, 2010, p. 18, ISBN 978-1-59682-215-3 . Adus la 22 februarie 2012 .
    «Deciziile SELinux, cum ar fi permisiunea sau interzicerea accesului, sunt stocate în cache. Această cache este cunoscută sub numele de Access Vector Cache (AVC). Deciziile de memorare în cache scad frecvența cu care regulile SELinux trebuie verificate, ceea ce crește performanța. " .
  4. ^ Linux îmbunătățit de securitate pe Android , la source.android.com , Android Open Source Project. Adus la 31 ianuarie 2016 .
  5. ^ Cum se instalează SELinux pe Ubuntu 8.04 "Hardy Heron" , în Tutoriale Ubuntu .
  6. ^ Note de lansare pentru SUSE Linux Enterprise Desktop 11 , la novell.com , Novell . Adus la 6 februarie 2013 .
  7. ^ SELinux pe CoreOS , în CoreOS Docs .
  8. ^ SELinux / Commands - FedoraProject , pe fedoraproject.org . Adus la 25 noiembrie 2015 .
  9. ^ chcon , la linuxcommand.org . Adus la 6 februarie 2013 (arhivat din original la 24 octombrie 2004) .
  10. ^ restorecon (8) - pagina manuală Linux , la linux.die.net . Adus la 6 februarie 2013 .
  11. ^ restorecond (8) - pagina manuală Linux , la linux.die.net . Adus la 6 februarie 2013 .
  12. ^ runcon (1) - pagina manuală Linux , la linux.die.net . Adus la 6 februarie 2013 .
  13. ^ secon (1) - pagina manuală Linux , la linux.die.net . Adus la 6 februarie 2013 .
  14. ^ fixfiles (8): fixează fișierul contextelor de securitate SELinux - pagina manuală Linux , pe linux.die.net . Adus la 6 februarie 2013 .
  15. ^ setfiles (8): fișierul de contexte de securitate SELinux - pagina manuală Linux , la linux.die.net . Adus la 6 februarie 2013 .
  16. ^ load_policy (8) - pagina manuală Linux , la linux.die.net . Adus la 6 februarie 2013 .
  17. ^ booleans (8) - pagina manuală Linux , la linux.die.net . Adus la 6 februarie 2013 .
  18. ^ getsebool (8): valoare booleană SELinux - pagina de manual Linux , pe linux.die.net . Adus la 6 februarie 2013 .
  19. ^ setsebool (8): set SELinux boolean value - Linux man page , at linux.die.net . Adus la 6 februarie 2013 .
  20. ^ togglesebool (8) - pagina manuală Linux , la linux.die.net . Adus la 6 februarie 2013 .
  21. ^ Ubuntu Manpage: selinux-config-enforcing - change / etc / selinux / config to set enforcing , on manpages.ubuntu.com , Canonical Ltd. Adus la 6 februarie 2013 (arhivat din original la 20 decembrie 2012) .
  22. ^ Ubuntu Manpage: selinuxenabled - instrument care va fi utilizat în scripturile shell pentru a determina dacă , pe manpages.ubuntu.com , Canonical Ltd. Adus la 6 februarie 2013 (arhivat din original la 9 februarie 2013) .
  23. ^ Ubuntu Manpage: selinux-policy-upgrade - actualizați modulele din politica SE Linux , la manpages.ubuntu.com , Canonical Ltd. Adus la 6 februarie 2013 (arhivat din original la 4 aprilie 2012) .
  24. ^ Fundaluri SELinux , în SELinux , Ghid de securitate, SUSE.
  25. ^ apparmor.d - sintaxa profilurilor de securitate pentru AppArmor , pe manpages.ubuntu.com (arhivat din original la 17 octombrie 2013) .
  26. ^ Rainbow , la laptop.org .
  27. ^ SELinux Related Work , la NSA.gov . Adus la 17 decembrie 2017 (arhivat din original la 20 februarie 2018) .

Elemente conexe

Alte proiecte

linkuri externe

Controlul autorității GND ( DE ) 4805017-9