Ce este SELinux și cum poate îmbunătăți securitatea pe Linux?
Când vine vorba de securizarea serverelor Linux, majoritatea administratorilor se gândesc la elementele de bază: menținerea pachetelor actualizate, configurarea firewall-urilor, limitarea accesului SSH. Totuși, unul dintre cele mai puternice mecanisme de securitate este adesea trecut cu vederea – SELinux (Security-Enhanced Linux). Acesta nu este doar un add-on; este un cadru de securitate la nivel de kernel conceput pentru a opri intruziunile înainte ca acestea să escaladeze. Atât pentru serverele VPS, cât și pentru cele dedicate, SELinux poate face diferența între un incident minor și compromiterea întregului sistem.
Ce este SELinux?
SELinux este un modul de securitate al nucleului Linux care impune controlul obligatoriu al accesului (MAC).
- În cadrul modelului tradițional DAC (Discretionary Access Control), accesul este determinat de proprietarii fișierelor, iar root are putere nelimitată.
- În cadrul MAC (SELinux), accesul este reglementat de politicile de securitate la nivelul întregului sistem. Chiar și root este supus restricțiilor.
Dezvoltat inițial de NSA în colaborare cu Red Hat, SELinux a fost integrat în nucleul Linux la începutul anilor 2000 și este acum standard în distribuțiile pentru întreprinderi precum RHEL, CentOS, Fedora, AlmaLinux și Rocky Linux.
Problema: unde eșuează securitatea Linux tradițională
Modelul clasic de permisiuni UNIX (DAC) are puncte slabe critice:
- Root este atotputernic. Orice exploit care ajunge la root compromite întregul sistem.
- Compromiterea serviciului = compromiterea sistemului. Un modul Apache sau un script PHP piratat poate accesa date sensibile.
- Vectorii de atac moderni ocolesc DAC. Web-shell-urile, exploatările de escaladare a privilegiilor și scăpările de containere sunt comune.
Scenariu din lumea reală:
O vulnerabilitate de încărcare CMS permite unui atacator să lanseze un web-shell. Fără SELinux, atacatorul poate citi config.php, poate extrage acreditările bazei de date și poate compromite întreaga stivă. Cu SELinux, procesul serverului web (httpd_t) este limitat și nu poate accesa fișiere din afara domeniului său desemnat.
Cum funcționează SELinux
Fiecare proces, fișier, port și socket are un context de securitate (etichetă).
Politicile definesc contextele care pot interacționa.
Exemplu:
- Apache rulează în domeniul httpd_t.
- Fișierele site-ului web sunt etichetate httpd_sys_content_t.
- Politica permite httpd_t să citească numai fișierele httpd_sys_content_t.
Dacă Apache încearcă să citească /etc/shadow (shadow_t), nucleul refuză solicitarea și înregistrează încălcarea.
Moduri de funcționare
- Aplicare: politicile sunt aplicate, încălcările sunt blocate.
- Permissive: încălcările sunt înregistrate, dar nu sunt blocate (util pentru testare).
- Dezactivat: SELinux este dezactivat (nu este recomandat).
Cea mai bună practică: începeți cu Permissive, analizați jurnalele, ajustați politicile, apoi treceți la Enforcing pentru producție.
De ce este SELinux important pentru găzduire și DevOps
- Izolarea proceselor: limitează daunele atunci când un singur serviciu este compromis.
- Aplicarea privilegiilor minime: chiar și root nu poate ocoli restricțiile politicii.
- Criminalistică și vizibilitate: toate acțiunile refuzate sunt înregistrate (/var/log/audit/audit.log).
- Securitatea containerelor: împiedică containerele Docker/Podman să scape de limitele lor.
- Conformitate: necesară în mediile reglementate (PCI DSS, HIPAA, implementări de nivel militar).
Tipuri de politici
- Targeted (implicită): restricționează numai serviciile orientate către rețea (Apache, Nginx, Postfix, Dovecot).
- Strict: aplică MAC la toate procesele.
- MLS/MCS: politici avansate pentru securitate pe mai multe niveluri sau de grad guvernamental.
Pentru majoritatea volumelor de lucru ale serverelor VPS și dedicate, Targeted Policy reprezintă cel mai bun echilibru între utilitate și protecție.
Exemple practice
Verificați starea SELinux
Restaurarea contextelor fișierelor după mutarea fișierelor web
Listați etichetele de securitate ale fișierelor
Permite conexiunile de ieșire ale serviciilor web (de exemplu, apelurile API)
Analizați acțiunile refuzate în jurnale
Concluzii
SELinux este mai mult decât o caracteristică de securitate suplimentară; este un cadru fundamental care redefinește modul în care Linux aplică controlul accesului. Prin limitarea proceselor, reducerea impactului vulnerabilităților și furnizarea de piste de audit detaliate, SELinux transformă un sistem Linux într-un mediu mult mai rezistent. Deși necesită o configurare și o înțelegere atentă, beneficiile de securitate pe care le aduce infrastructurilor moderne de servere îl fac o componentă esențială pentru orice implementare de producție.