Despre Linux

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

Editarea contextelor de securitate SELinux

1 septembrie 2018 By Bobses Lasă un comentariu

Știm deja că, atunci când creăm un fișier sau un director nou, SELinux îi atribuie automat anumite atribute de securitate. Comanda semanage fcontext -l ne oferă informații despre modul în care SELinux determină ce context de securitate este necesar să fie atribuit tuturor fișierelor și folderelor din sistem:

# semanage fcontext -l | wc -l 6428 # # semanage fcontext -l | head -n 20 SELinux fcontext type Context / directory system_u:object_r:root_t:s0 /.* all files system_u:object_r:default_t:s0 /[^/]+ regular file system_u:object_r:etc_runtime_t:s0 /\.autofsck regular file system_u:object_r:etc_runtime_t:s0 /\.autorelabel regular file system_u:object_r:etc_runtime_t:s0 /\.ismount-test-file regular file system_u:object_r:sosreport_tmp_t:s0 /\.journal all files <<None>> /\.snapshots(/.*)? all files system_u:object_r:snapperd_data_t:s0 /\.suspended regular file system_u:object_r:etc_runtime_t:s0 /a?quota\.(user|group) regular file system_u:object_r:quota_db_t:s0 /afs directory system_u:object_r:mnt_t:s0 /bacula(/.*)? all files system_u:object_r:bacula_store_t:s0 /bin all files system_u:object_r:bin_t:s0 /bin/.* all files system_u:object_r:bin_t:s0 /bin/alsaunmute regular file system_u:object_r:alsa_exec_t:s0 /bin/bash regular file system_u:object_r:shell_exec_t:s0 /bin/bash2 regular file system_u:object_r:shell_exec_t:s0 /bin/d?ash regular file system_u:object_r:shell_exec_t:s0

Trebuie menționat că "(/.*)?" înseamnă că toate elementele-copil vor moșteni automat contextul de securitate al părintelui.

Comanda semanage ne oferă informații esențiale despre contextul pe care trebuie să-l aibă un anumit fișier sau director în sistem. Aceste informații sunt extrase din politica SELinux care este activă în momentul respectiv (de cele mai multe ori este vorba de politica targeted, cea mai folosită).

Trebuie știut că, de fiecare dată când instalăm un program, contextele de securitate sunt atribuite în funcție de politica SELinux, avându-se în vedere și moștenirea, așa cum am zis câteva rânduri mai sus. De exemplu, dacă un utilizator pornește un proces nou, acest nou proces va moșteni atributele de securitate ale userului respectiv; dacă un nou fișier este creat, acesta va moșteni atributele de securitate ale directorului în interiorul căruia se află.

Editarea contextelor SELinux folosind comanda semanage

Dacă dorim ca un fișier sau un director să aibă un context SELinux diferit de cel definit de comanda semanage fcontext -l, trebuie să avem în vedere că cea mai bună modalitate de a face acest lucru este să modificăm, în primul rând, politica targeted folosită (prin intermediul comenzii semanage). Aceasta înseamnă că modificările vor deveni parte integrantă a politicii targeted și vor supraviețui unui reboot al sistemului, sau chiar unei reetichetări, așa cum vom vedea în alt articol. După ce politica targeted este modificată, următorul pas este să aplicăm noua regulă schimbată obiectului Linux avut în vedere.

Astfel, cei doi pași sunt:

  1. actualizarea/modificarea politicii targeted
  2. aplicarea politicii actualizate/modificate fișierelor sau directoarelor.

Comanda semanage

Această comandă este un instrument puternic pentru SELinux. În principiu, comanda este folosită pentru a configura anumite elemente ale politicii SELinux. Suportă mai multe subcomenzi: import, export, login, user, port, interface, module, node, fcontext, boolean, permissive, dontaudit. Pentru a afla mai multe informații: semanage -h.

În acest moment, suntem interesați doar de subcomanda fcontext a comenzii semanage - man semanage-fcontext sau semanage fcontext -h (observați argumentele opționale marcate din imaginea de mai jos - add, delete, modify și list):

Aceste argumente ale comenzii semanage-fcontext permit adăugarea/modificarea/ștergerea atributelor de securitate ale politicii targeted. Modalitatea de executare a acestor schimbări este arătată prin câteva exemple în pagina de manual a comenzii semanage-fcontext - man semanage-fcontext:

EXAMPLE
remember to run restorecon after you set the file context
Add file-context for everything under /web
# semanage fcontext -a -t httpd_sys_content_t "/web(/.*)?"
# restorecon -R -v /web

Substitute /home1 with /home when setting file context
# semanage fcontext -a -e /home /home1
# restorecon -R -v /home1

For home directories under top level directory, for example /disk6/home,
execute the following commands.
# semanage fcontext -a -t home_root_t "/disk6"
# semanage fcontext -a -e /home /disk6/home
# restorecon -R -v /disk6

Și acum să lucrăm cu această comandă. Prima dată vom crea un fișier și-i vom vizualiza contextul SELinux:

# touch fisier.txt
# ll -Z fisier.txt
-rw-r--r--. 1 root root unconfined_u:object_r:admin_home_t:s0 0 Aug 31 20:49 fisier.txt

Să schimbăm atributul type din admin_home_t în home_root_t; bazându-ne pe pagina de manual a comenzii, vom scrie:

# semanage fcontext -m -t home_root_t fisier.txt

Rulăm comanda restorecon pe fisierul respectiv și-i vom atribui contextul de securitate specificat de comanda semanage fcontext mai sus:

# restorecon /root/fisier.txt # ll -Z -rw-r--r--. 1 root root unconfined_u:object_r:home_root_t:s0 0 Aug 31 20:49 fisier.txt

În exemplul de mai sus am rulat comanda restorecon pe un singur fișier; pentru a rula aceeași comandă pe un director și pe tot ceea ce se află în interiorul său:

# semanage fcontext -a -t home_root_t "/nume_director(/.*)?"
# restorecon -R -v /nume_director

Sunt situații când dorim să rulăm această comandă pe fiecare fișier sau director de pe mașină (de exemplu, atunci când am schimbat parola de root folosind metoda descrisă în acest articol). Pentru aceasta, vom face un fișier gol în directorul rădăcină al sistemului și vom restarta computerul:

# touch /.autorelabel
# reboot

Va dura un pic mai mult decât restartul normal, căci SELinux reverifică fiecare fișier și îi aplică contextul de securitate stabilit de politica aflată în uz. După ce reetichetarea este completă, fișierul /.autorelabel va fi șters automat.

O altă metodă de a rula comanda restorecon pe întregul sistem este de a schimba SELinux în disabled, apoi reboot, urmat de o revenire la SELinux permisiv sau activ - după cum se observă, această metodă necesită 2 restarturi.

Exemplu de schimbare a politicii targeted pe un director Apache

Acest exemplu este, de fapt, o situație reală des întâlnită în practică. Prestabilit, httpd folosește calea /var/www ca Documentroot. Atributele de securitate pentru directorul /var/www sunt:

# ls -Z | grep www
system_u:object_r:httpd_sys_content_t:s0 www

Să presupunem că vrem să schimbăm această cale în alt director - să zicem în directorul /continutweb. Pentru început vom crea acest director cu comanda mkdir, vom adăuga un fișier index.html în interiorul său și-i vom schimba proprietarul din root în apache cu comanda chown:

# mkdir /continutweb
# echo "Salutare!" > /continutweb/index.html
# ls -Z | grep continutweb
unconfined_u:object_r:default_t:s0 continutweb
# chown -R apache. /continutweb

De asemenea, observăm că am listat și contextul de securitate al acestui director nou - atributul type este unul generic (default_t). Vom lista politica targeted folosită și nu vom găsi nicio regulă care trebuie aplicată directorului /continutweb:

# semanage fcontext -l | grep continutweb
#

Dacă ne întoarcem în directorul /var și listăm contextul de securiotate al directorului /var/www (cel în care apache își ține prestabilit conținutul), observăm că acesta este httpd_sys_content_t:

# ls -Z | grep www
system_u:object_r:httpd_sys_content_t:s0 www

Va trebui să schimbăm politica targeted referitoare la directorul /continutweb și la conținutul său (folosind comanda semanage fcontext) și să aplicăm această nouă politică prin reetichetare cu comanda restorecon:

# semanage fcontext -a -t httpd_sys_content_t "/continutweb(/.*)?" --> schimbăm politica # # semanage fcontext -l | grep continutweb --> listăm să vedem că politica s-a schimbat /continutweb(/.*)? all files system_u:object_r:httpd_sys_content_t:s0 # # restorecon -R /continutweb --> rulăm comanda de aplicare a noii reguli a politicii # ll -aZ /continutweb --> listăm contextul să vedem că s-a schimbat total 12 drwxr-xr-x. 2 apache apache unconfined_u:object_r:httpd_sys_content_t:s0 4096 Sep 1 08:38 . dr-xr-xr-x. 19 root root system_u:object_r:root_t:s0 4096 Sep 1 08:37 .. -rw-r--r--. 1 apache apache unconfined_u:object_r:httpd_sys_content_t:s0 10 Sep 1 08:38 index.html

În acest moment putem accesa fișierul index.html cu un browser web și se va încărca pagina cu mesajul Salutare!

Comenzile din acest exemplu pot fi urmărite și în imaginea de mai jos:

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ă)
  • Click to share on Twitter(Se deschide într-o fereastră nouă)

Similare

Din categoria: SELinux Etichete: RHCSA, SELinux

Lasă un răspunsAnulează răspunsul

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

Copyright © 2025 · 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 {vendor_count} Citește mai multe despre aceste scopuri
Vizualizează preferințele
{title} {title} {title}