Differences

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

Link to this comparison view

rl:labs:08:contents:05 [2020/12/01 16:08]
iulia.florea
rl:labs:08:contents:05 [2023/11/05 12:55] (current)
vlad_iulius.nastase
Line 1: Line 1:
-==== 5. [10p] Trafic criptat și necriptat ​====+==== 05. [10p] Port forwarding ​====
  
-Traficul generat ​de servicii se clasifică în **trafic criptat** și **trafic în clar**. Traficul **în clar (necriptat)** poate fi interpretat și înțeles dacă este capturatTraficul criptat nu poate fi interpretat în absența cheii de criptare; doar transmițătorul ​și receptorul cunosc cheia pentru a putea comunica.+La exercițiile ​de până acum am folosit NAT pentru a permite stațiilor cu adrese private dintr-o rețea locală să acceseze InternetulNAT poate fi folosit ​și pentru a permite unei stații din rețeaua locală să fie accesată din Internet, adică să se inițieze conexiuni din Internet. Acest proces poartă numele de //port forwarding//​.
  
-Ne propunem ​să analizăm, din punctul de vedere al criptării traficuluiurmătoarele protocoale/​servicii:​ +Dorim să putem accesa prin SSH, din Internetstația ''​red''​. Acest lucru nu este posibil în mod implicit întrucât stația ''​red''​ are adresă IP privată. Soluția este "​deschiderea unui port" pe gateway ​(adică stația ''​host''​) și redirectarea acestui ​port (//port forwarding//​către portul aferent serviciului ​SSH (portul ​TCP ''​22''​de pe stația ''​red''​.
-  * telnet ​(port TCP 23) +
-  * SSH (port TCP 22) +
-  * FTP (port TCP 21)+
  
-Vom folosi ​''​dsniff''​, un utilitar cu ajutorul căruia putem captura în clar pachetele ​care trec printr-un anumit server, pentru a afișa datele transmise (username, parolă, comenzi). Vom folosi topologia de laborator și ne vom conecta de la stația ​''​red'' ​la stația ​''​green'' ​prin intermediul ​stației ''​host''​.+Vom aplica pe stația ​''​host'' ​o regulă prin care redirectăm traficul ce vine către ​''​host'' ​pe portul ​''​10022'' ​către portul ''​22''​ (SSH) al stației ''​red'' ​(adresa IP ''​192.168.1.2''​):<​code bash> 
 +root@host:​~#​ iptables -t nat -A PREROUTING -p tcp --dport 10022 -j DNAT --to-destination 192.168.1.2:22 
 +</​code>​
  
-Pentru a porni procesul de captură, autentificați-vă ca ''​root'' ​pe stația ''​host''​ și rulați comanda<code bash> +Verificăm aplicarea regulii prin consultarea lanțului ''​PREROUTING'' ​din tabela NAT:<code bash> 
-root@host:​~# ​dsniff ​-i veth-green+root@host:​~# ​iptables ​-t nat -L PREROUTING -n -v 
 +Chain PREROUTING (policy ACCEPT 1 packets, 474 bytes) 
 + pkts bytes target ​    prot opt in     ​out ​    ​source ​              ​destination ​         
 +    0     0 DNAT       ​tcp ​ --  *      *       ​0.0.0.0/​0 ​           0.0.0.0/​0 ​           tcp dpt:10022 to:​192.168.1.2:​22
 </​code>​ </​code>​
  
-Pentru ​comunicație prin telnet, rulați pe stația ''​red''​ comanda<​code bash> +Pentru ​a verifica rezultatul de mai susde pe ''​fep.grid.pub.ro''​ deschidem un nou terminal și ne conectăm prin SSH folosind portul ''​10022''​ la stația ''​host'':<​code bash> 
-root@red:​~# ​telnet green+mihai.carabas@fep:​~$ ssh -l student $ADRESA_IP_MV -p 10022  
 +root@192.168.138.129'​s password: 
 +[...] 
 +root@red:​~#​ 
 +</​code>​ unde ''​$ADRESA_IP_MV''​ este adresa IP a masinii virtuale obținută din dashboard-ul OpenStack. 
 +<spoiler Pentru rulare masina virtuala VMware local> 
 +Daca rulați ​VMware local, ''​$ADRESA_IP_MV''​ este adresa interfeței ''​eth0''​ a stației ''​host''​. 
 +</​spoiler>​ 
 + 
 +Observăm că în urma autentificării ne găsim ​pe stația ''​red''​. //Port forwarding//​ a funcționat. 
 + 
 +Folosim ​comanda ​de conectare SSH la stația ''​host''​ de pe stația ''​green'':​<code bash> 
 +root@green:​~#​ ssh -l student host -p 10022 
 +[...] 
 +root@red:​~# ​
 </​code>​ </​code>​
-În urma rulării comenzii ațrealizat o conexiune telnet ​de la stația ''​red'' ​la stația ''​green''​ prin intermediul ​stației ''​host''​La prompt-ul generat de comandă folosiți username-ul ''​student''​ și parola ''​student'';​ după aceea rulați comanda ''​ls''​ și apoi comanda ''​exit''​ pentru a închide conexiuneaObservați pe stația ''​host''​ captura credențialelor (username ​și parolă) transmise prin telnet între stațiile ''​red''​ ș''​green''​ => traficul telnet între cele două stații a fost **trafic în clar** și a fost capturat pe stația ''​host''​.+ 
 +Observăm că și de pe stația ''​green'' ​am accesat ​stația ''​red''​ prin //port forwarding//​. Dorim să limităm //port forwarding//​ doar pentru conexiuni de la stațiile din InternetPentru aceasta trebuie să actualizăm regula de //port forwarding//​. 
 + 
 +Ștergeți regula de //port forwarding// ​și adăugați o regulă nouă care să permită **doar** stațiilor din Internet să acceseze prin //port forwarding// ​stația ''​red''​.
  
 <note tip> <note tip>
-''​dsniff'' ​capturează traficul ​de rețea șafișează credențialele doar la încheierea conexiunilor. Trebuie folosite comenzi de tipul ''​exit'' ​pentru ​închide conexiunea și pentru ca ''​dsniff'' ​să afișeze credențialele.+Aplicați regula doar pentru pachetele ce **sosesc** pe interfața ​''​eth0''​. Adică ''​eth0''​ este interfața ​de **intrare**. Folosiți opțiunea ''​-i''​ a ''​iptables'' ​pentru precizarea interfeței de **intrare**.
 </​note>​ </​note>​
  
-Pentru comunicație prin FTP, rulați pe stația ​''​red'' ​comanda<​code bash> +Realizați apoi din nou conectare SSH pe portul ​''​10022'' ​al stației ''​host''​ de pe ''​fep.grid.pub.ro''​ și de pe stația ​''​green''​. Dacă ați configurat corect, nu va merge conexiunea ​SSH de pe stația ''​green'' ​dar va merge în continuare de pe ''​fep.grid.pub.ro''​.
-root@red:~# ftp green +
-</​code>​ +
-În urma rulării comenzii ați realizat o conexiune FTP de la stația ''​red''​ la stația ''​green''​ prin intermediul ​stației ''​host''​. La prompt-ul generat ​de comandă folosiți username-ul ​''​student''​ și parola ​''​student''​; după aceea rulați comanda ''​ls''​ și apoi comanda ''​quit''​ pentru a închide ​conexiunea. Observați ​pe stația ​''​host''​ captura credențialelor (username și parolă) transmise prin FTP între stațiile ''​red''​ și ''​green'' ​=> traficul FTP între cele două stații a fost **trafic ​în clar** și a fost capturat ​pe stația ​''​host''​.+
  
-Pentru comunicație prin SSHrulați pe stația ''​red''​ comanda<code bash> +<​hidden>​ 
-root@red:~# ssh -l student green+<​solution>​ 
 +Ștergem vechea regulă și aplicăm regula nouăce ține cont de interfața de intrare:<code bash> 
 +root@host:~# iptables ​-t nat -D PREROUTING -p tcp --dport 10022 -j DNAT --to-destination 192.168.1.2:​22 
 +root@host:​~#​ iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 10022 -j DNAT --to-destination 192.168.1.2:​22 
 +root@host:​~#​ iptables -t nat -L PREROUTING -n -v 
 +Chain PREROUTING (policy ACCEPT 1 packets, 474 bytes) 
 + pkts bytes target ​    prot opt in     ​out ​    ​source ​              ​destination ​         
 +    0     0 DNAT       ​tcp ​ --  eth0   ​* ​      ​0.0.0.0/​0 ​           0.0.0.0/​0 ​           tcp dpt:10022 to:​192.168.1.2:​22
 </​code>​ </​code>​
-În urma rulării comenzii ați realizat o conexiune SSH de la stația ​''​red''​ la stația ''​green''​ prin intermediul stației ''​host''​. ​În sesiunea de shell deschisă la distanțărulați comanda ''​ls''​ și apoi comanda ''​exit''​ pentru ​închide conexiunea. Observați că pe stația ''​host''​ ''​dsniff'' ​nu afișează informații despre credențialele (username și parolă) transmise între stațiile ''​red''​ și ''​green''​ =traficul SSH între cele două stații a fost **trafic criptat** și **nu** a putut fi capturat pe stația ''​host''.+Verificăm conectarea ​de la ''​fep.grid.pub.ro'' ​și de la stația ''​green''​. ​Prima merge în continuaredar doua nu mai merge:<​code bash> 
 +mihai.carabas@fep:​~$ ssh $ADRESA_IP_VM -p 10022 
 +root@host.local's password:  
 +[...] 
 +root@red:~#
  
-Pe stația ''​host'',​ pentru a opri comanda ''​dsniff''​ folosiți combinația de taste ''​Ctrl+c''​. +root@green:​~#​ ssh -l student ​host -p 10022 
- +ssh: connect to host host port 10022: Connection refused 
-<note+</code
-Traficul telnet și FTP este trafic necriptat (în clar), în timp ce traficul SSH este trafic criptat. +</​solution>​ 
-</note>+</hidden>
rl/labs/08/contents/05.1606831687.txt.gz · Last modified: 2020/12/01 16:08 by iulia.florea
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