User Tools

Site Tools


secure-low-level-programming:capitole:10-controlul-accesului

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
secure-low-level-programming:capitole:10-controlul-accesului [2018/12/16 13:30]
127.0.0.1 external edit
secure-low-level-programming:capitole:10-controlul-accesului [2018/12/21 16:38] (current)
razvan [setuid]
Line 1: Line 1:
 ====== 10. Controlul accesului ====== ====== 10. Controlul accesului ======
  
-TODO: Descriere scurtă+Chiar dacă o aplicație este securizată din punct de vedere software este posibil să existe probleme de configurare a aplicației sau permisiuni care îi permit să realizeze intenționat sau nu acțiuni nelegitime. Pentru aceasta sistemul va configura politice și mecanisme care să controleze accesul aplicației la resursele sistemului. Principiul //least privilege// înseamnă că unei aplicații îi vor fi furnizate doar acele permisiuni necesare.
  
 ===== Subiecte abordate ===== ===== Subiecte abordate =====
  
-  * TODO +  * privilegii și permisiuni 
-  * TODO+  * controlul accesului 
 +  * capabilități 
 +  * MAC (//​Mandatory Access Control//)
  
 ===== Resurse ===== ===== Resurse =====
Line 13: Line 15:
   * [[http://​koala.cs.pub.ro/​training/​res/​secure-low-level-programming/​arc/​10-controlul-accesului-skel.zip|Arhiva de suport]]   * [[http://​koala.cs.pub.ro/​training/​res/​secure-low-level-programming/​arc/​10-controlul-accesului-skel.zip|Arhiva de suport]]
  
-===== Alte resurse ===== 
- 
-  * TODO link 
-  * TODO link 
-  * TODO link 
  
 ===== Exerciții ===== ===== Exerciții =====
Line 24: Line 21:
 wget http://​koala.cs.pub.ro/​training/​res/​secure-low-level-programming/​arc/​10-controlul-accesului-skel.zip wget http://​koala.cs.pub.ro/​training/​res/​secure-low-level-programming/​arc/​10-controlul-accesului-skel.zip
 unzip 10-controlul-accesului-skel.zip unzip 10-controlul-accesului-skel.zip
 +cd 10-controlul-accesului-skel/​
 </​code>​ </​code>​
  
-==== Exercițiu 1 ====+==== setuid ​====
  
-Accesăm directorul ''​lalala/''​ din arhiva de suport.+Accesăm directorul ''​setuid/''​ din arhiva de suport.
  
-TODO+Urmăriți conținutul fișierului ''​prog.c''​ și rulați executabilul ''​prog''​. Programul încearcă deschiderea a două fișiere privilegiate. În primă instanța va eșua.
  
-==== Exercițiu 2 ====+Apoi schimbați owner-ul fișierului în ''​root''​ și adăugați-i bitul de ''​setuid''​ folosind comenzile 
 +<​code>​ 
 +sudo chown root:root prog 
 +sudo chmod u+s prog 
 +</​code>​
  
-Accesăm directorul ​''​lalala/'' ​din arhiva de suport.+Acum rulați din nou programul și observați că reușește deschiderea unui fișier, câtă vreme //effective user id-ul// (''​euid''​) este ''​0''​. În momentul în care //effective user id-ul// (''​euid''​) este ''​1000'',​ operația eșuează.
  
-TODO+==== cap ====
  
-==== Exercițiu 3 ====+Accesăm directorul ''​cap/''​ din arhiva de suport.
  
-Accesăm directorul ​''​lalala/'' ​din arhiva de suport.+<note important>​ 
 +Va trebui să instalați pachetul ​''​libcap-dev'' ​folosind comanda 
 +<​code>​ 
 +sudo apt install libcap-dev 
 +</​code>​ 
 +</​note>​
  
-TODO+Urmăriți conținutul fișierului ''​prog.c''​ și rulați executabilul ''​prog''​. Programul încearcă deschiderea a două fișiere privilegiate. În primă instanța va eșua.
  
 +Apoi oferiți executabilului ''​prog''​ capabilitatea ''​CAP_DAC_READ_SEARCH''​ folosind comanda:
 +<​code>​
 +sudo setcap cap_dac_read_search+ep ./prog
 +</​code>​
 +Verificați adăugarea capabilității folosind comanda:
 +<​code>​
 +getcap ./prog
 +</​code>​
 +
 +Acum rulați din nou programul și observați că reușește deschiderea unui fișier, câtă vreme capabilitatea ''​CAP_DAC_READ_SEARCH''​ este prezentă.
 +
 +<note tip>
 +Dacă doriți să eliminați capabilitatea ''​CAP_DAC_READ_SEARCH''​ din executabilul ''​prog''​ folosiți comanda
 +<​code>​
 +sudo setcap cap_dac_read_search-ep ./prog
 +</​code>​
 +</​note>​
 +==== seccomp ====
 +
 +Accesăm directorul ''​seccomp/''​ din arhiva de suport.
 +
 +<note important>​
 +Va trebui să instalați pachetul ''​libseccomp-dev''​ folosind comanda
 +<​code>​
 +sudo apt install libseccomp-dev
 +</​code>​
 +</​note>​
  
 +Urmăriți conținutul fișierului ''​prog.c''​ și rulați executabilul ''​prog''​. Programul încearcă deschiderea a două fișiere privilegiate. Deschiderea primului fișier va reuși, în vreme ce deschiderea celui de-al doilea fișier va eșua dată fiind folosirea sandboxing-ului cu ajutorul ''​seccomp''​.
secure-low-level-programming/capitole/10-controlul-accesului.1544959828.txt.gz · Last modified: 2018/12/16 13:30 by 127.0.0.1