Differences

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

Link to this comparison view

rl:labs:08:contents:05 [2020/12/07 14:36]
florin.stancu [5. [10p] Trafic criptat și necriptat] tcpdump filter student
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 ​''​tcpdump''​, un utilitar cu ajutorul căruia putem captura pachetele ​care trec printr-un anumit server, pentru a afișa datele transmise (parolă). 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
-Pentru a porni procesul de captură, autentificați-vă ca ''​root'' ​pe stația ​''​host'' ​și rulați comanda<code bash> +
-root@host:​~# ​tcpdump ​-vvv -i veth-green +
-# SAU, pentru a afișa DOAR outputul ce conține student: +
-root@host:​~#​ tcpdump ​-vvv -i veth-green | grep -i student+
 </​code>​ </​code>​
  
-Pentru comunicație ​prin telnet, rulați pe stația ​''​red'' ​comanda<code bash> +Verificăm aplicarea regulii ​prin consultarea lanțului ''​PREROUTING'' ​din tabela NAT:<code bash> 
-root@red:~# telnet 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>​
-În urma rulării comenzii ați 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 conexiunea. Observați pe stația ''​host''​ captura credențialelor (username și parolă) transmise prin telnet între stațiile ''​red''​ și ''​green''​ => traficul telnet între cele două stații a fost **trafic în clar** și a fost capturat pe stația ''​host''​. 
  
-Pentru ​comunicație prin FTPrulațpe stația ''​red'' ​comanda<code bash> +Pentru ​a verifica rezultatul de mai susde pe ''​fep.grid.pub.ro''​ deschidem un nou terminal șne conectăm prin SSH folosind portul ''​10022''​ la stația ''​host''​:<code bash> 
-root@red:​~# ​ftp green +mihai.carabas@fep:​~$ ssh -l student $ADRESA_IP_MV -p 10022  
-</​code>​ +root@192.168.138.129'​s password: 
-Î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 ​fost **trafic în clar** și a fost capturat pe stația ''​host''​.+[...] 
 +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>​
  
-Pentru comunicație prin SSH, rulațpe stația ''​red'' ​comanda<code bash> +Observăm că în urma autentificării ne găsim pe stația ''​red''​. //Port forwarding//​ a funcționat. 
-root@red:~# ssh -l student ​green+ 
 +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ț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 a închide conexiunea. Observați că pe stația ''​host'',​ ''​tcpdump''​ nu afișează informații în clar, traficul SSH între cele două stații fiind **criptat** și transmis într-un format binar. 
  
-Pe stația ''​host''​, pentru a opri comanda ''​tcpdump''​ folosiți combinația de taste ''​Ctrl+c''​.+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 Internet. Pentru aceasta trebuie să actualizăm regula de //port forwarding//​.
  
-<​note>​ +Ș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''​. 
-Traficul telnet șFTP este trafic necriptat (în clar), în timp ce traficul SSH este trafic criptat.+ 
 +<​note ​tip
 +Aplicaț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>​
 +
 +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''​.
 +
 +<​hidden>​
 +<​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>​
 +Verificăm conectarea de la ''​fep.grid.pub.ro''​ și de la stația ''​green''​. Prima merge în continuare, dar a doua nu mai merge:<​code bash>
 +mihai.carabas@fep:​~$ ssh $ADRESA_IP_VM -p 10022
 +root@host.local'​s password: ​
 +[...]
 +root@red:~#
 +
 +root@green:​~#​ ssh -l student host -p 10022
 +ssh: connect to host host port 10022: Connection refused
 +</​code>​
 +</​solution>​
 +</​hidden>​
rl/labs/08/contents/05.1607344586.txt.gz · Last modified: 2020/12/07 14:36 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