În lumea serverelor Linux, securitatea este un subiect care nu poate fi ignorat. Chiar dacă Linux este considerat, prin natura sa, un sistem de operare sigur, atacurile, configurările greșite și erorile umane pot crea breșe serioase. Aici intervine SELinux (Security-Enhanced Linux) – un mecanism de securitate puternic, dar adesea greșit înțeles sau dezactivat din comoditate.
În acest articol vom explica ce este SELinux, cum funcționează, de ce provoacă erori aparent misterioase și dacă este o idee bună să-l dezactivezi.
Ce este SELinux?
SELinux (Security-Enhanced Linux) este un modul de securitate integrat în kernelul Linux, dezvoltat inițial de NSA și menținut în prezent de comunitatea open-source. Scopul său principal este să ofere un nivel suplimentar de protecție printr-un sistem numit Mandatory Access Control (MAC).
Pe scurt, SELinux controlează ce poate face fiecare proces, ce fișiere poate accesa și ce acțiuni sunt permise, chiar dacă procesul rulează cu drepturi de root.
De ce este SELinux diferit de permisiunile clasice Linux?
În mod tradițional, Linux folosește Discretionary Access Control (DAC), bazat pe:
- owner
- group
- permisiuni (read, write, execute)
Problema apare atunci când:
- un proces este compromis
- o aplicație rulează cu prea multe drepturi
- un atacator obține acces root
👉 SELinux limitează daunele, chiar și în aceste scenarii, pentru că aplică reguli stricte, independente de permisiunile clasice.
Cum funcționează SELinux?
SELinux funcționează pe bază de politici de securitate care definesc:
- ce tip de proces poate accesa un anumit tip de fișier
- ce acțiuni sunt permise sau blocate
Concept-cheie: etichetele (labels)
Fiecare:
- fișier
- director
- proces
- port
are asociată o etichetă SELinux (security context).
Exemplu:
system_u:system_r:httpd_t:s0
Această etichetă spune exact cine, ce este, și ce are voie să facă.
Modurile de funcționare SELinux
SELinux poate rula în trei moduri:
1. Enforcing (recomandat)
- Regulile sunt aplicate strict
- Accesul nepermis este blocat
- Ideal pentru servere de producție
2. Permissive
- Regulile nu sunt aplicate
- Încălcările sunt doar logate
- Foarte util pentru debugging
3. Disabled
- SELinux este complet dezactivat
- ❌ Nu este recomandat în producție
Poți verifica modul curent cu:
getenforce
De ce „strică” SELinux aplicațiile?
Mulți administratori dezactivează SELinux pentru că:
- site-ul nu pornește
- serviciul dă eroare 403
- aplicația nu poate scrie într-un director
De cele mai multe ori, SELinux nu este problema, ci:
- fișierele nu au eticheta corectă
- aplicația încearcă să acceseze resurse nepermise
- configurarea nu respectă politica de securitate
Exemplu clasic:
- WordPress nu poate încărca fișiere
- Apache nu poate accesa un director custom
- PHP nu poate face conexiuni externe
Cum verifici dacă SELinux blochează ceva?
Primul pas este verificarea logurilor:
ausearch -m avc -ts recent
sau
journalctl -t setroubleshoot
Mesajele de tip AVC denied indică exact ce a fost blocat și de ce.
Soluții corecte (nu dezactivarea SELinux)
1. Setarea contextului corect
chcon -t httpd_sys_content_t /cale/director
sau permanent:
semanage fcontext -a -t httpd_sys_content_t "/cale/director(/.*)?"
restorecon -Rv /cale/director
2. Permisiuni speciale pentru aplicații web
Exemplu:
setsebool -P httpd_can_network_connect on
Ar trebui să dezactivezi SELinux?
Răspuns scurt: NU, decât în cazuri foarte bine justificate.
Dezactivarea SELinux:
- reduce drastic securitatea
- expune serverul la atacuri
- este o practică proastă în producție
În schimb:
- folosește modul permissive pentru testare
- corectează etichetele și politicile
- învață să interpretezi logurile
Distribuții care folosesc SELinux
SELinux este activ implicit în:
- CentOS
- Rocky Linux
- AlmaLinux
- Red Hat Enterprise Linux
- Fedora
Pe Ubuntu, alternativa este AppArmor, un sistem similar, dar diferit ca abordare.
Concluzie
SELinux este unul dintre cele mai puternice mecanisme de securitate din Linux, dar și unul dintre cele mai neînțelese. Deși poate părea complicat la început, odată ce înțelegi conceptele de bază, devine un aliat extrem de valoros.
👉 Un server cu SELinux configurat corect este mult mai greu de compromis, chiar și atunci când alte măsuri de securitate eșuează.
Comentarii