Differences

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

Link to this comparison view

rl:labs:08:contents:02 [2022/11/23 10:43]
florin.stancu [2. [10p] Generare cheie publică și autentificare]
rl:labs:08:contents:02 [2023/11/05 12:54] (current)
vlad_iulius.nastase
Line 1: Line 1:
-==== 2. [10p] Generare cheie publică și autentificare ​===+==== 02. [10p] Format de pachete la translatare ====
  
-În contul utilizatorului ​''​corina''​ de pe stația ''​blue'' ​generați o pereche cheie publică/cheie privată SSH prin rularea comenzii<code bash> +Ne propunem să analizăm antetul IP al pachetelor ce sunt generate de stațiile ​''​red''​, ''​green''​ și ''​blue''​ și au ca destinație o rețea din Internet. Pentru acest lucru vom folosi utilitarul ​de captură ''​tcpdump''​. 
-corina@blue:~$ ssh-keygen -t rsa + 
-Generating public/​private rsa key pair+Pe stația ''​red'' ​pornim comanda ''​ping''​ către ''​8.8.8.8.'':​<code bash> 
-Enter file in which to save the key (/​home/​corina/​.ssh/​id_rsa):​  +root@red:~# ping 8.8.8.8 
-Created directory '/​home/​corina/​.ssh'. +PING 8.8.8.8 ​(8.8.8.8) 56(84bytes of data
-Enter passphrase ​(empty for no passphrase):  +64 bytes from 8.8.8.8: icmp_req=1 ttl=127 time=42.0 ms
-Enter same passphrase again:  +
-Your identification has been saved in /​home/​corina/​.ssh/​id_rsa+
-Your public key has been saved in /​home/​corina/​.ssh/id_rsa.pub.+
 [...] [...]
-</​code> ​Folosiți ''​ENTER''​ pentru a folosi căile implicite. Nu folosiți passphrase (adică apăsați ''​ENTER''​ când vi se solicită passphrase-ul). Cheile sunt generate respectiv, în fișierele, ''​.ssh/​id_rsa''​ (cheia privată) și ''​.ssh/​id_rsa.pub''​ (cheia publică).+</​code>​
  
-Realizați operațiile necesare pentru ​permite autentificarea pe bază de chei din contul utilizatorului ​''​corina''​ de pe stația ''​blue'' ​în contul utilizatorului ​''​student''​ de pe stația ''​host''​. ​După aceea, verificați faptul că autentificarea se face pe baza de chei.+<​note>​ 
 +Atunci când rulăm comanda ''​tcpdump''​ secvența de urmat este: 
 +  - Se rulează comanda ''​tcpdump''​ cu opțiunile aferente într-un terminal, activând astfel captura ​de pachete. Utilitarul ​''​tcpdump'' ​așteaptă acum transmiterea ​de pachete ​pe interfețele pe care ascultă. 
 +  - Într-un alt terminal se rulează o comandă specifică unui client de rețea care generează trafic. 
 +  - Se revine în terminalul în care rulează comanda ​''​tcpdump'' ​și se urmăresc pachetele capturate. 
 +  - Când nu mai este nevoie de utilitarul ​''​tcpdump'' ​se întrerupe captura ​de pachete folosind combinația de taste ''​Ctrl+c''​. 
 +</​note>​
  
-Aceștia sunt pașii ​pe care îi veți urma pentru a configura conectare SSH pe bază de chei+Pentru a urmări traficul, ​pe stația ''​host''​ rulăm comanda<​code bash> 
-  generare pereche de chei SSH (folosind comanda ''​ssh-keygen''​) +root@host:~# tcpdump -n -i eth0 ip dst host 8.8.8.8 
-  copiere cheie publică în contul de la distanță ​(<del>folosind comanda ''​ssh-copy-id''​</del>+tcpdump: verbose output suppressed, use -v or -vv for full protocol decode 
-  - conectare la distanță (folosind comanda ''​ssh''​)+listening on eth0, link-type EN10MB ​(Ethernet), capture size 65535 bytes 
 +12:​59:​20.976707 IP host 8.8.8.8: ICMP echo request, ​id 625, seq 6, length 64 
 +12:​59:​21.977708 IP host > 8.8.8.8: ICMP echo request, id 625, seq 7, length 64 
 +</code>
  
 +<spoiler (click pentru expandare) Detalii rulare masina virtuala VMware local>
 <note important>​ <note important>​
-Autentificarea cu parolă a fost dezactivată pe ''​student@host''​!+După rularea comenzii de mai sus, probabil vi se va bloca terminalul. În mașina virtuală VMware apare o mini-fereastră care vă indică intrarea plăcii de rețea în modul //​promiscuous//​. Apăsați ​pe butonul ​''​OK'' ​al ferestrei pentru a debloca mașina virtuală și, astfel, terminalul. 
 +</​note>​ 
 +</​spoiler>​
  
-Copiați manual cheia publică a corinei (''​/​home/​corina/​id_rsa.pub''​) în fișierul ​''​/​home/​student/​.ssh/​authorized_keys''​ de pe host.+Observăm că adresa IP sursă este ''​host.local'' ​chiar dacă stația ​''​red'' ​este cea care execută comanda ''​ping''​ și generează pachetele ​de tip ''​ICMP echo request''​.
  
-**Atenție:​** nu ștergeți nimic din fișierul authorized_keys de pe hostaltfel riscați să vă tăiați accesul la VM! +Pentru a vedea pachetele așa cum sunt generate inițialrulăm comandă ''​tcpdump''​ pe interfața ''​veth-red''​ în loc de ''​eth0'':​ <code bash> 
-</note>+root@host:​~#​ tcpdump -n -veth-red ip dst host 8.8.8.8 
 +tcpdump: verbose output suppressed, use -v or -vv for full protocol decode 
 +listening on veth-red, link-type EN10MB (Ethernet), capture size 65535 bytes 
 +13:​01:​12.557692 IP red > 8.8.8.8: ICMP echo request, id 626, seq 6, length 64 
 +13:​01:​13.559726 IP red > 8.8.8.8: ICMP echo request, id 626, seq 7, length 64 
 +</code> 
 +Observăm că pe interfața ''​veth-red''​ adresa IP sursă este adresa stației ''​red'',​ adică așa cum este generat de la început pachetul. Motivul este reprezentat de faptul că pachetele ce intră pe intefața ''​veth-red''​ sunt capturate înainte de rutare, iar procesul NAT este aplicat **după rutare** (vezi [[rl:​labs:​09:​contents:​01|]].
  
-<​hidden>​ +Pentru a vedea modul în care se translatează traficul capturăm traficul pe toate interfețele (cele de interes sunt ''​veth-red''​ și ''​eth0''​)<code bash> 
-<​solution>​ +root@host:~# tcpdump ​--i any ip dst host 8.8.8.8 
-<code bash> +tcpdumpverbose output suppressed, use -v or -vv for full protocol decode 
-corina@blue:~$ ssh-copy-id student@host +listening on anylink-type LINUX_SLL (Linux cooked), capture size 65535 bytes 
-student@host'​s password:  +10:​23:​07.632412 IP red > 8.8.8.8: ICMP echo request, id 707, seq 237, length 64 
-Now try logging into the machinewith "ssh '​student@host'"​and check in:+10:​23:​07.632430 IP host > 8.8.8.8: ICMP echo requestid 707, seq 237, length 64 
 +10:23:​08.633936 IP red > 8.8.8.8: ICMP echo request, id 707, seq 238, length 64 
 +10:​23:​08.633954 IP host > 8.8.8.8: ICMP echo request, id 707, seq 238, length 64 
 +</​code>​
  
-  ~/.ssh/​authorized_keys+În lista de mai sus observăm atât pachetele care sunt captuarate pe interfața ''​veth-red''​ (generate de stația ''​red''​) cât și cele capturate pe interfața ''​eth0''​ (translatate de stația ''​host''​).
  
-to make sure we haven't added extra keys that you weren't expecting.+Capturați și pachetele de reply, care au ca **sursă** adresa ''​8.8.8.8''​. Folosiți șirul de argumente ''​ip src host 8.8.8.8''​ pentru ''​tcpdump''​.
  
-corina@blue:​~$ ssh -l student host +Repetați testele de mai sus pentru stația ''​green''​.
-[...] +
-student@host:​~$+
  
-</code+<note
-</​solution>​ +Întrucât latența DNS poate fi semnificativă,​ recomandăm folosirea opțiunii ''​-n''​ a utilitarului ''​tcpdump'',​ opțiune care dezactivează rezolvarea DNS. În exemplele de mai sus, nu am folosit opțiunea ''​-n''​ a utilitarului ''​tcpdump''​ pentru a identifica mai ușor numele stațiilor implicate în conversație. 
-</hidden>+</note>
rl/labs/08/contents/02.1669193015.txt.gz · Last modified: 2022/11/23 10:43 by florin.stancu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0