This shows you the differences between two versions of the page.
so:cursuri:curs-13 [2014/05/12 22:55] traian.popeea [Demo-uri] |
so:cursuri:curs-13 [2017/02/23 16:34] (current) razvan.deaconescu |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Curs 13 - Securitatea sistemului ====== | ====== Curs 13 - Securitatea sistemului ====== | ||
+ | |||
+ | * [[http://elf.cs.pub.ro/so/res/cursuri/SO_Curs-13.pdf|Curs 13 - Securitatea sistemului (PDF)]] | ||
+ | * Suport curs | ||
+ | * Operating System Concepts Essentials | ||
+ | * Capitolul 13 -- Protection | ||
+ | * Capitolul 14 -- Security | ||
+ | * Secțiunile 14.1, 14.2, 14.5 | ||
+ | * Modern Operating Systems, 3rd Edition | ||
+ | * Capitolul 9 -- Security | ||
+ | * Mai puțin secțiunea 9.6: Exploiting Code Bugs | ||
<html> | <html> | ||
- | <iframe src="http://docs.google.com/viewer?url=http://elf.cs.pub.ro/so/res/cursuri/SO_Curs-13.pdf&embedded=true" width="600" height="480" style="border: none;"> | + | <center> |
+ | <iframe src="https://docs.google.com/viewer?url=http://elf.cs.pub.ro/so/res/cursuri/SO_Curs-13.pdf&embedded=true" width="600" height="480" style="border: none;"> | ||
</iframe> | </iframe> | ||
+ | </center> | ||
</html> | </html> | ||
- | |||
- | * [[http://elf.cs.pub.ro/so/res/cursuri/SO_Curs-13.pdf | Curs 13 - Securitatea sistemului (PDF)]] | ||
- | |||
- | * Suport curs | ||
- | * Operating System Concepts | ||
- | * Capitolul 14 -- Protection | ||
- | * Capitolul 15 -- Security | ||
- | * Secțiunile 15.1, 15.2, 15.5 | ||
- | * Modern Operating Systems | ||
- | * Capitolul 9 -- Security | ||
- | * Secțiunile 9.4, 9.6 | ||
===== Demo-uri ===== | ===== Demo-uri ===== | ||
Line 21: | Line 22: | ||
Pentru parcurgerea demo-urilor, folosiți [[http://elf.cs.pub.ro/so/res/cursuri/curs-13-demo.zip|arhiva aferentă]]. | Pentru parcurgerea demo-urilor, folosiți [[http://elf.cs.pub.ro/so/res/cursuri/curs-13-demo.zip|arhiva aferentă]]. | ||
- | <hidden> | ||
- Bitul de set-user-ID-on-execution | - Bitul de set-user-ID-on-execution | ||
* Consultați fișierul ''test.c''. | * Consultați fișierul ''test.c''. | ||
+ | * Scopul acestui program este de a genera un fișier de log care să conțină timestamp-uri aferente fiecărei rulări a sa, de forma ''user: time''. | ||
+ | * Numai owner-ul fișierului are drept de scriere asupra fișierului. | ||
* Folosiți fișierul ''prep_users.sh'' pentru a genera cei doi utilizatori de test. | * Folosiți fișierul ''prep_users.sh'' pentru a genera cei doi utilizatori de test. | ||
* Trebuie să aveți drept de sudo pentru a reuși întreg procesul. | * Trebuie să aveți drept de sudo pentru a reuși întreg procesul. | ||
- | * Ca utilizatorul ''master'' (su - master) compilați fișierul folosind comanda ''make''. | + | * Ca utilizatorul ''master'' (''su - master'') compilați fișierul folosind comanda ''make''. |
* Folosiți ''ls -l'' pentru a obține informații complete despre executabilul ''test''. | * Folosiți ''ls -l'' pentru a obține informații complete despre executabilul ''test''. | ||
- | * Observați că executabiul este deținut de ''master'' și că are bitul de set-user-ID activat. | + | * Observați că executabiul este deținut de ''master'' și că are bitul de set-user-ID activat.<code bash> |
- | * Ca utilizatorul ''worker'' rulați executabilul:<code bash> | + | -rwsr-xr-x 1 master master 12315 2014-05-12 22:33 test |
+ | </code> | ||
+ | * Ca utilizatorul ''worker'' (''su - worker'') rulați executabilul:<code bash> | ||
./test | ./test | ||
</code> | </code> | ||
- | * Observați cele două tipuri de identificatori de utilizatori: //user id//, //effective user ID//. | + | * Observați cele două tipuri de identificatori de utilizatori: //user id//, //effective user ID//.<code> |
+ | worker@erathia:~$ ~master/test | ||
+ | |||
+ | Process started | ||
+ | |||
+ | Setuid on | ||
+ | Effective user name: master; UID: 1002 | ||
+ | Real user name: worker; UID: 1003 | ||
+ | |||
+ | |||
+ | Giving up setuid until opening the file | ||
+ | |||
+ | Setuid off | ||
+ | Effective user name: worker; UID: 1003 | ||
+ | Real user name: worker; UID: 1003 | ||
+ | |||
+ | |||
+ | Wanting to open the file | ||
+ | |||
+ | Setuid on | ||
+ | Effective user name: master; UID: 1002 | ||
+ | Real user name: worker; UID: 1003 | ||
+ | |||
+ | |||
+ | File opened, giving up setuid | ||
+ | |||
+ | Setuid off | ||
+ | Effective user name: worker; UID: 1003 | ||
+ | Real user name: worker; UID: 1003 | ||
+ | |||
+ | |||
+ | File closed, process done | ||
+ | </code> | ||
* Detalii în [[http://man7.org/linux/man-pages/man7/credentials.7.html|pagina de manual credentials]]. | * Detalii în [[http://man7.org/linux/man-pages/man7/credentials.7.html|pagina de manual credentials]]. | ||
+ | * Conform principiului least privilege, doar în momentul deschiderii fișierului pentru scriere sunt folosite drepturile utilizatorului owner. | ||
* Observați că se poate reveni la utilizatorul owner al fișierului (//temporary privilege drop//). | * Observați că se poate reveni la utilizatorul owner al fișierului (//temporary privilege drop//). | ||
- | </hidden> |