Differences

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

Link to this comparison view

rl:labs:08:contents:01 [2020/09/13 07:01]
iulia.florea
rl:labs:08:contents:01 [2023/11/05 12:53] (current)
vlad_iulius.nastase
Line 1: Line 1:
-==== 20. [5pTrafic criptat și necriptat ​====+==== 01. [10pConfigurare translatare de adrese (MASQUERADE) ​====
  
-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.+Epuizarea adreselor IPv4 în cadrul rețelelor curente a condus la folosirea ​de adrese IP din clase private (de ex. ''​192.168.0.0/​24''​). Pe lângă comunicația dintre stațiile unei rețele, dorim și accesul la Internet al acestoraDe aceea s-a introdus conceptul de translatare de adrese ​(NAT: //Network Address Translation//​prin care mai multe stații dispun de acces la Internet folosind aceeași adresă IP rutabilă: adresa gateway-uluiActivarea translatării ​de adrese (NAT) pe gateway conduce la înlocuirea perechii <adresă IP sursă, port sursă> (aparținând stației) cu perechea <adresa IP gateway, port disponibil>​.
  
-Ne propunem să analizămdin punctul de vedere al criptării traficului, următoarele protocoale/​servicii:​ +Configurarea NAT pe Linux se realizează tot prin intermediul comenzii ''​iptables''​la fel ca în cazul configurării firewall-ului. Dacă pentru configurarea firewall-ului foloseam tabela ''​filter'' ​(tabela implicită a ''​iptables''​), pentru configurarea translatării de adrese vom folosi tabela ''​nat''​.
-  * 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''​.+Astfel, pentru a activa NAT pe un server Linux executăm comanda<​code bash> 
 +root@host:​~#​ iptables -t nat -A POSTROUTING -j MASQUERADE 
 +</​code>​ 
 +În comanda de mai sus: 
 +  * ''​-t'' ​specifică tabela pe care se aplică regulaîn cazul nostru tabela ''​nat''​. 
 +  * ''​-A''​ înseamnă adăugarea unei reguli la sfârșitul listei ​de reguli. 
 +  * ''​POSTROUTING''​ se referă la momentul când va fi realizat procesul de translatare de adrese: după rutare. 
 +    * În nomenclatura ''​iptables''​ acesta se numește ​și **lanț (chain)**. 
 +    * [[https://​www.netfilter.org/​documentation/​HOWTO/​netfilter-hacking-HOWTO-3.html|Exemple ​de alte lanțuri: ''​INPUT''​''​OUTPUT'',​ ''​FORWARD'',​ ''​PREROUTING''​]]. 
 +  * ''​-j'' ​este acțiunea ce va fi luată, iar în acest caz este ''​MASQUERADE'' ​(acțiune simplă de translatare de adrese).
  
-Pentru a porni procesul de captură, autentificați-vă ca ''​root'' ​pe stația ​''​host'' ​și rulați ​comanda<​code bash> +Pentru a verifica șvalida regula, afișăm intrările din lanțul ​''​POSTROUTING'' ​din tabela ​''​nat'' ​folosind ​comanda<​code bash> 
-root@host:​~# ​dsniff ​-i veth-green+root@host:​~# ​iptables -t nat -L POSTROUTING -n -v 
 +Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes) 
 + pkts bytes target ​    prot opt in     ​out ​    ​source ​              ​destination 
 +    0     0 MASQUERADE ​ all  ​--  ​* ​     *       ​0.0.0.0/​0 ​           0.0.0.0/0
 </​code>​ </​code>​
  
-Pentru ​comunicație prin telnet, rulați pe stația ''​red''​ comanda<​code bash> +Vrem să verificăm configurarea corectă a NAT. Pentru ​acesta vom trimite de pe stația ''​red''​ un pachet către ''​8.8.8.8''​. Pachetul va trece prin gateway (adică stația ''​host''​) șva fi translatat. Pe stația ''​red'' ​rulăm ​comanda<​code bash> 
-root@red:​~# ​telnet green+root@red:​~# ​ping -c 2 8.8.8.8 
 +PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 
 +From 192.168.1.2 icmp_seq=1 Destination Host Unreachable 
 +From 192.168.1.2 icmp_seq=2 Destination Host Unreachable 
 + 
 +--- 8.8.8.8 ping statistics --- 
 +2 packets transmitted,​ 0 received, +2 errors, 100% packet loss, time 999ms
 </​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''​. 
  
-<note tip> +Observăm că nu există conectivitate de la stația ​''​red'' ​către adresa IP ''​8.8.8.8''​. Consultăm întreaga tabelă ​''​nat''​:<code bash> 
-''​dsniff'' ​capturează traficul de rețea și afișează credențialele doar la încheierea conexiunilor. Trebuie folosite comenzi de tipul ''​exit'' ​pentru a închide conexiunea și pentru ca ''​dsniff'' ​să afișeze credențialele. +root@host:​~#​ iptables -t nat -L -n -v 
-</note>+Chain PREROUTING (policy ACCEPT 2 packets, 168 bytes) 
 + pkts bytes target ​    prot opt in     ​out ​    ​source ​              ​destination ​        
  
-Pentru comunicație prin FTPrulați pe stația ​''​red'' ​comanda<code bash> +Chain INPUT (policy ACCEPT 0 packets, 0 bytes) 
-root@red:~# ftp green+ pkts bytes target ​    prot opt in     ​out ​    ​source ​              ​destination ​         
 + 
 +Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) 
 + pkts bytes target ​    prot opt in     ​out ​    ​source ​              ​destination ​         
 + 
 +Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes) 
 + pkts bytes target ​    prot opt in     ​out ​    ​source ​              ​destination ​         
 +    0     0 MASQUERADE ​ all  --  *      *       ​0.0.0.0/​0 ​           0.0.0.0/0  
 +</​code>​ 
 +Observăm că pachetele ajung în lanțul ''​PREROUTING''​ (înainte de rutare)dar nu ajung în lanțul ''​POSTROUTING'' ​(după rutare). Ne gândim că este posibil să fie o problemă cu rutarea pe gateway. Verificăm dacă rutarea este activată:<code bash> 
 +root@host:~# sysctl net.ipv4.ip_forward 
 +net.ipv4.ip_forward = 0
 </​code>​ </​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> +Într-adevărrutarea nu este activată. Pentru a activa rutarea ​pe stația ''​host'' ​rulăm ​comanda<​code bash> 
-root@red:~# ssh -l student green+root@host:~# sysctl ​-w net.ipv4.ip_forward=1 
 +net.ipv4.ip_forward = 1
 </​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''​ ''​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''​. 
  
-Pe stația ''​host''​, pentru a opri comanda ​''​dsniff'' ​folosiți combinația de taste ''​Ctrl+c''​.+Intrăm din nou pe stația ''​red'' ​și folosim ​''​ping'' ​pentru a testa conectivitatea la adresa IP ''​8.8.8.8''​:<code bash> 
 +root@red:~# ping -c 2 8.8.8.8 
 +PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 
 +64 bytes from 8.8.8.8: icmp_req=1 ttl=61 time=92.9 ms 
 +64 bytes from 8.8.8.8: icmp_req=2 ttl=61 time=81.2 ms
  
-<note+--- 8.8.8.8 ping statistics --- 
-Traficul telnet ​și FTP este trafic necriptat (în clar)în timp ce traficul SSH este trafic criptat+2 packets transmitted,​ 2 received, 0% packet loss, time 1001ms 
-</note>+rtt min/​avg/​max/​mdev = 81.272/​87.094/​92.917/​5.829 ms 
 +</code
 +Acum există conectivitate,​ lucru certificat ​și de prezența unor pachete ​în lista prelucrată pe lanțul ''​POSTROUTING'':<​code bash> 
 +root@host:​~#​ iptables -t nat -L POSTROUTING -n -v 
 +Chain POSTROUTING (policy ACCEPT 0 packets0 bytes) 
 + pkts bytes target ​    prot opt in     ​out ​    ​source ​              ​destination ​         
 +    2   168 MASQUERADE ​ all  --  *      *       0.0.0.0/​0 ​           0.0.0.0/0 
 +</code>
rl/labs/08/contents/01.1599969660.txt.gz · Last modified: 2020/09/13 07:01 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