This shows you the differences between two versions of the page.
uso:laboratoare:new:10-sec:need-to-know [2018/12/08 21:46] octavian.guzu [3. Least privilege] |
uso:laboratoare:new:10-sec:need-to-know [2019/12/02 11:57] (current) elena.stoican [1. SSH pe mașina tom] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== Need to know ===== | + | ===== Need to know ===== |
- | Dacă nu se precizează altfel, în această secțiune veți rula comenzile pe **stația fizică** (sau pe mașina virtuală ''uso'' dacă lucrați acasă). | + | Dacă nu se precizează altfel, în această secțiune veți rula comenzile pe **stația fizică** (sau pe mașina virtuală ''uso'' dacă lucrați acasă). |
+ | |||
+ | Asigurați-vă că ați importat mașinile virtuale Tom și Jerry. Detalii în secțiunea [[uso:laboratoare:new:10-sec:setup|]]. | ||
+ | |||
+ | ==== 1. SSH pe mașina tom ==== | ||
+ | |||
+ | Înainte de exercițiile următoare, vrem să ne putem conecta la mașina ''tom'' prin ssh ca până acum, folosind parola. Porniți mașina ''tom''. | ||
+ | |||
+ | Pentru a face o conexiune SSH între stația fizică și mașina virtuală ''tom'' va trebui să avem interfața activată, pe mașină virtuală ''tom''. Pentru aceasta rulați comanda de mai jos care vă asigură obținerea, prin DHCP, a parametrilor de rețea pentru interfața ''enp0s8''. | ||
- | Asigurati-va ca ati importat masinile virtuale Tom si Jerry. Detalii in sectiunea [[uso:laboratoare:new:10-sec:setup|]]. | ||
- | ==== 1. SSH pe masina TOM ==== | + | <code bash> |
+ | student@tom:~$ sudo dhclient enp0s8 | ||
+ | </code> | ||
- | Inainte de exercitiile urmatoare, vrem sa ne putem conecta la masina TOM prin ssh ca pana acum, folosind parola. Porniti masina TOM. | + | |
+ | Folosind comanda de mai jos aflăm adresa IP a mașinii virtuale ''tom''. În cazul de fată este vorba de ''192.168.56.101''. | ||
+ | <code bash> | ||
+ | student@tom:~$ ip a s enp0s8 | ||
+ | 3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 | ||
+ | link/ether 08:00:27:71:db:21 brd ff:ff:ff:ff:ff:ff | ||
+ | ineț 192.168.56.101/24 brd 192.168.56.255 scope global enp0s8 | ||
+ | valid_lft forever preferred_lft forever | ||
+ | inet6 fe80::a00:27ff:fe71:db21/64 scope link | ||
+ | valid_lft forever preferred_lft forever | ||
+ | </code> | ||
+ | |||
+ | Este posibil ca adresa IP pentru mașina virtuală ''tom'' să fie alta în rularea voastră. Folosiți în continuare adresa IP obținută din rularea voastră. | ||
+ | |||
+ | <note important> | ||
+ | Verificați că vă puteți conecta prin ssh la ''tom''. **NU treceți mai departe dacă nu vă merge conexiunea**. | ||
+ | </note> | ||
+ | |||
+ | ==== 2. SSH cu chei publice/private ==== | ||
+ | |||
+ | **[2a]** Generați o pereche de chei ssh folosind ''ssh-keygen'', apăsați ''Enter'' de fiecare dată când vi se cere să introduceți date. | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ ssh-keygen | ||
+ | Generating public/private rsa key pair. | ||
+ | Enter file in which to save the key (/home/student/.ssh/id_rsa): | ||
+ | Enter passphrase (empty for no passphrase): | ||
+ | Enter same passphrase again: | ||
+ | Your identification has been saved in /home/student/.ssh/id_rsa. | ||
+ | Your public key has been saved in /home/student/.ssh/id_rsa.pub. | ||
+ | The key fingerprint is: | ||
+ | SHA256:Ob3LFt6KV0yTz006l8Zhjj8stJe6mKWsRmWoZs/CDSk student@uso | ||
+ | The key's randomart image is: | ||
+ | +---[RSA 2048]----+ | ||
+ | | | | ||
+ | | | | ||
+ | | . . | | ||
+ | | + o+ o.| | ||
+ | | S +o +=+o| | ||
+ | | E * o..oo==o| | ||
+ | | = *..+..=o.| | ||
+ | | o B=.*o * | | ||
+ | | ++=* o= .| | ||
+ | +----[SHA256]-----+ | ||
+ | </code> | ||
+ | |||
+ | **[2b]** Copiați cheia publică creată mai devreme pe ''tom'', folosind ''ssh-copy-id''. ''HINT: ssh-copy-id user@ipaddress'' | ||
+ | |||
+ | **[2c]** Dacă copierea a avut loc cu succes, conectați-vă prin ssh la ''tom''. Veți observa că autentificarea se face pe baze cheii publice și nu mai este cerută parola. | ||
+ | |||
+ | **[2d]** Creați un user nou pe mașina ''tom'' numit ''gion'', cu ce parolă doriți voi. | ||
+ | |||
+ | **[2e]** Dezactivați autentificarea cu parolă prin ssh. ''HINT: /etc/ssh/sshd_config''. Încercați apoi să vă conectați prin ssh mai întâi cu **student**, iar apoi cu **gion**. | ||
- | Pentru a face o conexiune SSH între stația fizică și mașina virtuală ''tom'' va trebui să avem interfața activată, pe mașina virtuală ''tom''. Pentru aceasta rulați comanda | ||
- | <code bash> | ||
- | student@tom:~$ sudo dhclient enp0s8 | ||
- | </code> | ||
- | care va asigura obținerea, prin DHCP, a parametrilor de rețea pentru interfața ''enp0s8''. | ||
- | Folosind comanda | + | ==== 3. Least privilege ==== |
- | <code bash> | + | |
- | student@tom:~$ ip a s enp0s8 | + | **Principle of least privilege** se referă la faptul că un utilizator, program, modul, etc va putea accesa doar informațiile și resursele necesare pentru desfășurarea activității **intenționate**. |
- | 3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 | + | |
- | link/ether 08:00:27:71:db:21 brd ff:ff:ff:ff:ff:ff | + | Cu alte cuvinte, utilizatorul **student** va putea accesa doar fișierele și directoarele care îl privesc, nu și cele ce conțin date private ale altor utilizatori, de exemplu directorul ''/home/gion'', care este home-ul utilizatorului ''gion''. |
- | inet 192.168.56.101/24 brd 192.168.56.255 scope global enp0s8 | + | |
- | valid_lft forever preferred_lft forever | + | În Linux, acest lucru se definește folosind permisiuni. Ne amintim de suita de comenzi ''chown'', ''chgrp'', ''chmod'' din laboratoarele trecute. Dorim de exemplu să îi dăm drepturi doar utilizatorului student pe directorului sau de home: |
- | inet6 fe80::a00:27ff:fe71:db21/64 scope link | + | |
- | valid_lft forever preferred_lft forever | + | <code bash> |
- | </code> | + | |
- | aflăm adresa IP a mașinii virtuale ''tom''. În cazul de față este vorba de ''192.168.56.101''. | + | student@uso:~$ sudo chown student /home/student/ |
- | + | student@uso:~$ sudo chgrp student /home/student/ | |
- | Este posibil ca adresa IP pentru mașina virtuală ''tom'' să fie alta în rularea voastră. Folosiți în continuare adresa IP obținută din rularea voastră. | + | student@uso:~$ sudo chmod 700 /home/student/ |
- | + | student@uso:~$ ls -l /home/ | |
- | Verificati ca va puteti conecta prin ssh la TOM. **NU treceti mai departe daca nu va merge conexiunea**. | + | total 4 |
- | + | drwx------ 23 student student 4096 dec 8 23:30 student | |
- | ==== 2. SSH cu chei publice/private ==== | + | |
- | + | </code> | |
- | **[2a]** Generati o pereche de chei ssh folosind ''ssh-keygen'', apasati Enter de cateva ori: | + | |
- | + | Cu ''chown'' schimbăm **ownerul** directorului, cu ''chgrp'' schimbat **group ownerul**, iar cu ''chmod'' îi permitem doar utilizatorului ''student'' să vadă sau modifice conținutul directorului ''/home/student''. | |
- | <code bash> | + | |
- | student@uso:~$ ssh-keygen | + | **Principle of least privilege** se aplică foarte mult în zona de web. Se asigură astfel faptul ca dacă o pagină a unui site a fost compromisă, nu va fi compromis întreg site-ul sau chiar întreg server-ul. |
- | Generating public/private rsa key pair. | + | |
- | Enter file in which to save the key (/home/student/.ssh/id_rsa): | + | |
- | Enter passphrase (empty for no passphrase): | + | |
- | Enter same passphrase again: | + | |
- | Your identification has been saved in /home/student/.ssh/id_rsa. | + | |
- | Your public key has been saved in /home/student/.ssh/id_rsa.pub. | + | |
- | The key fingerprint is: | + | |
- | SHA256:Ob3LFt6KV0yTz006l8Zhjj8stJe6mKWsRmWoZs/CDSk student@uso | + | |
- | The key's randomart image is: | + | |
- | +---[RSA 2048]----+ | + | |
- | | | | + | |
- | | | | + | |
- | | . . | | + | |
- | | + o+ o.| | + | |
- | | S +o +=+o| | + | |
- | | E * o..oo==o| | + | |
- | | = *..+..=o.| | + | |
- | | o B=.*o * | | + | |
- | | ++=* o= .| | + | |
- | +----[SHA256]-----+ | + | |
- | </code> | + | |
- | + | ||
- | **[2b]** Copiati cheia publica create mai devreme pe TOM, folosind ''ssh-copy-id''. ''HINT: ssh-copy-id user@ipaddress'' | + | |
- | + | ||
- | **[2c]** Daca copierea a avut loc cu succes, conectati-va prin ssh la TOM. Veti observa ca autentificarea se face pe baze cheii publice si nu mai este ceruta parola. | + | |
- | + | ||
- | **[2d]** Creati un user nou pe masina TOM numit ''gion'', cu ce parola doriti voi. | + | |
- | + | ||
- | **[2e]** Dezactivati autentificarea cu parola prin ssh. ''HINT: /etc/ssh/sshd_config''. Incercati apoi sa va conectati prin ssh mai intai cu **student**, iar apoi cu **gion**. | + | |
- | + | ||
- | + | ||
- | ==== 3. Least privilege ==== | + | |
- | + | ||
- | **Principle of least privilege** se refera la faptul ca un utilizator, program, modul, etc va putea accesa doar informatiile si resursele necesare pentru desfasurarea activitatii **intentionate**. | + | |
- | + | ||
- | Cu alte cuvinte, utilizatorul **student** va putea accesa doar fisierele si directoarele care il privesc, nu si cele ce contin date private ale altor utilizatori, de exemplu directorul ''/home/gion'', care este home-ul utilizatorului ''gion''. | + | |
- | + | ||
- | In Linux, acest lucru se defineste folosind permisiuni. Ne amintim de suita de comenzi ''chown'', ''chgrp'', ''chmod'' din laboratoarele trecute. Dorim de exemplu sa ii dam drepturi doar utilizatorului student pe directorului sau de home: | + | |
- | + | ||
- | <code bash> | + | |
- | + | ||
- | student@uso:~$ sudo chown student /home/student/ | + | |
- | student@uso:~$ sudo chgrp student /home/student/ | + | |
- | student@uso:~$ sudo chmod 700 /home/student/ | + | |
- | student@uso:~$ ls -l /home/ | + | |
- | total 4 | + | |
- | drwx------ 23 student student 4096 dec 8 23:30 student | + | |
- | + | ||
- | </code> | + | |
- | + | ||
- | Cu ''chown'' schimbam **ownerul** directorului, cu ''chgrp'' schimbat **group ownerul**, iar cu ''chmod'' ii permitem doar utilizatorului ''student' sa vada sau modifice continutul directorului ''/home/student''. | + | |
- | + | ||
- | **Principle of least privilege** se aplica foarte mult in zona de web. Se asigura astfel faptul ca daca o pagina a unui site a fost compromisa, nu va fi compromis intreg site-ul sau chiar intreg serve-ul. | + |