This shows you the differences between two versions of the page.
uso:laboratoare:new:10-sec:need-to-know [2018/12/08 21:36] octavian.guzu |
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 | ||
- | <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 | ||
- | inet 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> | ||
- | aflăm adresa IP a mașinii virtuale ''tom''. În cazul de față este vorba de ''192.168.56.101''. | ||
- | |||
- | 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ă. | ||
- | |||
- | Verificati ca va puteti conecta prin ssh la TOM. **NU treceti mai departe daca nu va merge conexiunea**. | ||
- | |||
- | ==== 2. SSH cu chei publice/private ==== | ||
- | |||
- | **[2a]** Generati o pereche de chei ssh folosind ''ssh-keygen'', apasati Enter de cateva ori: | ||
- | |||
- | <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]** 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 ==== | ||
+ | ==== 3. Least privilege ==== | ||
+ | | ||
+ | **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**. | ||
+ | | ||
+ | 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''. | ||
+ | | ||
+ | Î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: | ||
+ | | ||
+ | <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'' 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''. | ||
+ | | ||
+ | **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. |