SELinux pe AlmaLinux este un sistem de securitate care controlează ce aplicații și servicii pot accesa resursele sistemului. Acesta adaugă reguli la modelul standard de permisiuni Unix. Ca urmare, un server web, un serviciu de partajare a fișierelor sau o aplicație personalizată pot fi blocate chiar și atunci când proprietarul fișierului, grupul și permisiunile par a fi corecte.
SELinux utilizează etichete, cunoscute sub numele de contexte de securitate, și reguli de politică pentru a decide dacă o acțiune este permisă. Cea mai sigură modalitate de a rezolva o refuzare este identificarea acțiunii blocate și ajustarea etichetei, a setării politicii sau a configurației serviciului. Dezactivarea SELinux nu ar trebui să fie prima măsură luată.
Cuprins
Cum protejează SELinux serviciile AlmaLinux
Permisiunile Unix răspund la întrebări precum dacă un proces rulează sub un anumit utilizator și dacă acel utilizator poate citi un fișier. SELinux adaugă o verificare suplimentară. Politica sa definește ce tipuri de procese pot accesa ce tipuri de fișiere, directoare, porturi și resurse de sistem.
De exemplu, un proces de server web poate rula sub numele utilizatorului corect și totuși să nu poată citi fișierele dintr-un director nou creat. Directorul poate avea un proprietar și un mod Unix adecvate, dar contextul său SELinux s-ar putea să nu îl identifice ca fiind conținut web. SELinux blochează accesul deoarece procesul și resursa nu corespund unei reguli permise din politică.
Moduri de funcționare SELinux
| Mod | Comportament | Utilizare recomandată |
|---|---|---|
| Enforcing | SELinux aplică politica și blochează acțiunile care nu sunt permise. | Funcționare normală pe un server protejat. |
| Permissive | SELinux nu blochează acțiunea, dar înregistrează o refuzare în jurnalul de audit. | Teste diagnostice scurte sau dezvoltarea politicilor. |
| Dezactivat | SELinux nu este încărcat și nu asigură aplicarea politicilor sau înregistrarea refuzurilor. | Numai atunci când o cerință documentată a platformei impune acest lucru. |
Verificați modul curent cu:
getenforce
sestatus Puteți comuta temporar între modul de aplicare și cel permisiv folosind:
sudo setenforce 1
sudo setenforce 0 Un test temporar în modul permisiv se încheie la repornirea sistemului. Acesta poate ajuta la confirmarea faptului că SELinux este legat de o problemă, dar nu identifică soluția permanentă corectă. Evitați să lăsați sistemele de producție în modul permisiv. Dezactivarea SELinux necesită modificarea configurației sale și repornirea sistemului, iar aceasta elimină un strat important de protecție.
Contexte și etichete de securitate
Un context de securitate este o etichetă atașată unui fișier, director, proces, port sau altă resursă. Eticheta ajută SELinux să asocieze o resursă cu politica corespunzătoare. Vizualizați etichetele fișierelor cu:
ls -Z /calea/către/fișier
ls -Zd /path/to/directory Vizualizați etichetele proceselor cu:
ps -eZ Un fișier copiat sau nou creat poate avea un context care nu se potrivește cu serviciul care îl utilizează. De exemplu, conținutul mutat într-un director web poate păstra o etichetă din locația sa inițială. Permisiunile Unix pot rămâne corecte, în timp ce serverului web i se refuză în continuare accesul.
Utilizați restorecon atunci când eticheta așteptată este deja definită de politica de sistem:
sudo restorecon -Rv /path/to/content Pentru un director care trebuie să păstreze o locație personalizată, definiți eticheta așteptată cu semanage fcontext, apoi aplicați-o cu restorecon. De exemplu:
sudo semanage fcontext -a -t httpd_sys_content_t '/srv/site(/.*)?'
sudo restorecon -Rv /srv/site Contextul exact depinde de serviciu și de accesul necesar. Conținutul web, datele de aplicație care pot fi scrise și fișierele partajate pot necesita tipuri diferite. Nu copiați o etichetă dintr-un serviciu fără legătură cu acesta fără a verifica cerințele politicii.
Cum se investighează o refuzare SELinux
- Înregistrați acțiunea eșuată. Notați serviciul, fișierul sau directorul, portul, acțiunea utilizatorului și ora aproximativă.
- Verificați înregistrările de audit. Căutați mesajele recente de refuz AVC cu
ausearch:
sudo ausearch -m AVC -ts recent - Citiți detaliile refuzului. Căutați tipul procesului, tipul țintei, acțiunea solicitată și calea către resursă. Aceste câmpuri indică ce a blocat SELinux.
- Verificați etichetele curente. Comparați etichetele procesului și ale resursei cu etichetele așteptate pentru serviciul respectiv.
- Testați câte o modificare pe rând. Corectați o etichetă, o setare a serviciului, o valoare booleană sau o definiție de port, apoi repetați acțiunea inițială și verificați din nou jurnalul de audit.
Instrumente precum audit2why pot ajuta la explicarea motivului pentru care a avut loc o refuzare. Instrumente precum audit2allow pot propune o regulă de politică locală, dar o regulă generată nu trebuie aplicată automat. Aceasta ar putea permite un acces mai larg decât este necesar pentru aplicație și poate ascunde o etichetă incorectă sau o proiectare nesigură a serviciului.
Soluții comune pentru servicii și partajarea fișierelor
Pentru serverele web, verificați mai întâi dacă fișierele site-ului au contextul de conținut web corect. Dacă aplicația trebuie să scrie într-un director, utilizați tipul specific de scriere cerut de politica serverului web, în loc să faceți întregul site scriabil.
Pentru serviciile de partajare a fișierelor, verificați dacă directoarele partajate au contextul destinat acelui serviciu. Un director poate fi citibil prin permisiunile Unix și totuși să fie blocat deoarece tipul său SELinux nu este aprobat pentru partajare.
Pentru o aplicație care utilizează un port nestandard, verificați dacă acel port este etichetat pentru serviciul respectiv. Un serviciu personalizat poate necesita, de asemenea, o setare de politică care să permită accesul la rețea sau la fișiere necesar. Modificați numai setarea necesară pentru sarcina de lucru documentată și mențineți modificarea permanentă atunci când este cazul.
SELinux versus permisiunile Unix
| Verificați | Ce controlează |
|---|---|
| Permisiunile Unix | Acces bazat pe proprietarul fișierului, grup, mod și utilizatorul procesului. |
| Politica SELinux | Acces bazat pe domeniul procesului, contextul resursei și acțiunile permise. |
Ambele verificări trebuie să permită acțiunea. Modificarea permisiunilor Unix nu poate remedia o refuzare cauzată de un context SELinux incorect. Dezactivarea SELinux poate face ca acțiunea să funcționeze, dar elimină totodată aplicarea politicii și lasă nerezolvată problema de configurare inițială.
Când testarea permisivă nu rezolvă problema
Dacă acțiunea eșuează în continuare în modul permisiv, este posibil ca SELinux să nu fie cauza. Verificați configurația serviciului, permisiunile Unix, setările aplicației, accesul la rețea și jurnalele serviciului afectat.
Dacă acțiunea funcționează numai în modul permisiv, reveniți la modul de aplicare strictă după testare și utilizați înregistrarea AVC pentru a identifica modificarea necesară. Contactați serviciul de asistență sau administratorul politicii atunci când refuzul implică un serviciu personalizat, o aplicație complexă sau o regulă care nu poate fi restrânsă în condiții de siguranță.