This shows you the differences between two versions of the page.
rl:labs:08:contents:03 [2020/09/13 07:14] iulia.florea |
rl:labs:08:contents:03 [2024/11/28 16:37] (current) florin.stancu [03. [10p] Format de pachete TCP la translatare] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== 3. [5p] Copiere cheie publică la distanță pentru autentificare ==== | + | ==== 03. [10p] Format de pachete TCP la translatare ==== |
- | În contul utilizatorului ''bogdan'' de pe stația ''blue'' (parola este ''student'') este generată o pereche cheie privată / cheie publică, respectiv în fișierele ''~/.ssh/id_rsa'' și ''~/.ssh/id_rsa.pub''. Dorim să realizăm conectare SSH folosind chei publice în contul utilizatorului ''student'' de pe stația ''host''. | + | Dorim să urmărim conținutul pachetelor TCP înainte și după translatarea de adrese. În plus față de exercițiul de mai sus, vrem să urmărim și porturile. Pentru aceasta vom genera pachete TCP (HTTP) folosind ''wget'' de pe stația ''red'' și vom captura pachetele folosind ''tcpdump'' pe stația ''host''. |
- | Copiați cheia publică la distanță pentru a permite conectarea. Conținutul fișierului aferent cheii publice (''~/.ssh/id_rsa.pub'' din ''bogdan@blue'') trebuie să ajungă în fișierul de la distanță care stochează cheile publice pentru autentificare (''~/.ssh/authorized_keys'' din ''student@host''). | + | Pe stația ''host'' capturați pe toate interfețele pachetele HTTP care au ca adresă destinație numele ''%%cs.pub.ro%%''. |
+ | |||
+ | <note tip> | ||
+ | Va trebui să folosiți argumentele ''%%ip dst host cs.pub.ro%%'' și ''tcp dst port 80'' la ''tcpdump''. Legați argumentele prin șirul ''and''. Urmăriți și [[https://cdn.comparitech.com/wp-content/uploads/2019/06/tcpdump-cheat-sheet-1.pdf|cheatsheet-ul de aici]]. | ||
+ | |||
+ | Folosiți opțiunea ''-n'' a ''tcpdump'' ca să afișați în format rezultatele în format numeric (adresă IP și port). Vă va fi mai ușor să urmăriți pachetele și translatarea de adrese. | ||
+ | </note> | ||
+ | |||
+ | Pe stația ''red'' folosiți ''wget'' pentru a obține pagina de la ''%%cs.pub.ro%%''. | ||
+ | |||
+ | Urmăriți translatarea adresei IP sursă și a portului sursă în cadrul capturii de pachete realizată cu ''tcpdump'' pe ''host''. | ||
+ | |||
+ | <note important> | ||
+ | O să existe o latență (2-3 secunde) la afișarea pachetelor capturate cu ''tcpdump'' datorată rezolvării DNS. Puteți folosi opțiunea ''-n'' a ''tcpdump'' pentru a dezactivarea rezolvarea DNS și pentru a elimina latența. | ||
+ | </note> | ||
+ | |||
+ | Observați în cadrul capturii că portul sursă, ales de stația ''red'' este același cu cel folosit în urma translatării de stația ''host''. În general implementările de NAT vor păstra portul în urma translatării. În cazul rar în care acel port este ocupat pe stația ''host'' (posibil datorită unei alte translatării) se va aloca un alt port. | ||
+ | |||
+ | Pe stația ''host'' capturați pe toate interfețele pachetele HTTP care au ca adresă numele ''%%cs.pub.ro%%''; nu contează dacă este sursă sau destinație, capturăm și pachetele de interogare și cele de răspuns; la fel, portul poate fi sursă sau destinație; folosiți ''ip host'' în loc de ''ip dst host'' și ''tcp port'' în loc de ''tcp dst port''. Pe stația ''red'' folosiți, din nou, ''wget'' pentru a obține pagina de la ''%%cs.pub.ro%%''. Urmăriți translatarea adresei IP sursă și a portului sursă pentru pachetele de interogare și translatarea adresei IP destinație și a portului destinație pentru pachetele de răspuns. | ||
<hidden> | <hidden> | ||
<solution> | <solution> | ||
- | Pentru copierea cheii publice, rulați din contul utilizatorului ''bogdan'' de pe stația ''blue'' comanda<code bash> | + | Rulăm comanda ''tcpdump'' pe stația ''host'' și comanda ''wget'' pe stația ''red'':<code bash> |
- | bogdan@blue:~$ ssh-copy-id student@host | + | root@host:~# tcpdump -i any ip dst host cs.pub.ro and tcp dst port 80 |
- | student@host's password: | + | tcpdump: verbose output suppressed, use -v or -vv for full protocol decode |
- | Now try logging into the machine, with "ssh 'student@host'", and check in: | + | listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes |
+ | 16:01:43.895939 IP host.local.55630 > 141.85.241.57.http: Flags [S], seq 2218116970, win 14600, options [mss 1460,sackOK,TS val 25026596 ecr 0,nop,wscale 3], length 0 | ||
+ | 16:01:43.899247 IP red.55630 > 141.85.241.57.http: Flags [.], ack 3520002, win 14600, length 0 | ||
+ | 16:01:43.899254 IP host.local.55630 > 141.85.241.57.http: Flags [.], ack 3520002, win 14600, length 0 | ||
+ | 16:01:43.899809 IP red.55630 > 141.85.241.57.http: Flags [P.], seq 0:110, ack 1, win 14600, length 110 | ||
+ | 16:01:43.899817 IP host.local.55630 > 141.85.241.57.http: Flags [P.], seq 0:110, ack 1, win 14600, length 110 | ||
+ | [...] | ||
- | ~/.ssh/authorized_keys | + | root@red:~# wget cs.pub.ro |
+ | --2013-11-23 14:03:22-- http://cs.pub.ro/ | ||
+ | Resolving cs.pub.ro (cs.pub.ro)... 141.85.241.57 | ||
+ | Connecting to cs.pub.ro (cs.pub.ro)|141.85.241.57|:80... connected. | ||
+ | HTTP request sent, awaiting response... 200 OK | ||
+ | [...] | ||
+ | 2013-11-23 14:03:22 (17.3 MB/s) - `index.html' saved [36519] | ||
+ | </code> | ||
- | to make sure we haven't added extra keys that you weren't expecting. | + | Pentru afișarea atât a pachetelor de interogare cât și a celor de răspuns, rulăm comenzile de mai jos:<code bash> |
- | </code> Introduceți parola ''student'' la promptul afișat. | + | root@host:~# tcpdump -i any ip host cs.pub.ro and tcp port 80 |
+ | [...] | ||
+ | 16:06:25.896565 IP red.55634 > 141.85.241.57.http: Flags [P.], seq 1:111, ack 1, win 14600, length 110 | ||
+ | 16:06:25.896576 IP host.local.55634 > 141.85.241.57.http: Flags [P.], seq 1:111, ack 1, win 14600, length 110 | ||
+ | 16:06:25.896796 IP 141.85.241.57.http > host.local.55634: Flags [.], ack 111, win 65535, length 0 | ||
+ | 16:06:25.896805 IP 141.85.241.57.http > red.55634: Flags [.], ack 111, win 65535, length 0 | ||
+ | [...] | ||
- | Verificați funcționarea corectă prin conectarea SSH la distanță:<code bash> | + | root@red:~# wget cs.pub.ro |
- | bogdan@blue:~$ ssh -l student host | + | --2013-11-23 14:05:36-- http://cs.pub.ro/ |
+ | Resolving cs.pub.ro (cs.pub.ro)... 141.85.241.57 | ||
+ | Connecting to cs.pub.ro (cs.pub.ro)|141.85.241.57|:80... connected. | ||
+ | HTTP request sent, awaiting response... 200 OK | ||
[...] | [...] | ||
- | student@host:~$ | + | 2013-11-23 14:05:36 (77.9 MB/s) - `index.html.1' saved [36519] |
</code> | </code> | ||
</solution> | </solution> | ||
</hidden> | </hidden> | ||
- | |||
- | Dacă v-ați conectat fără să vi se ceară parola înseamnă că s-a realizat autentificare prin chei publice și configurația este corectă. | ||
- |