Differences

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

Link to this comparison view

rl:labs:08:contents:01 [2013/09/18 11:50]
razvan.deaconescu
rl:labs:08:contents:01 [2023/11/05 12:53] (current)
vlad_iulius.nastase
Line 1: Line 1:
-==== 1. Trafic criptat și necriptat ​====+==== 01. [10p] Configurare translatare de adrese (MASQUERADE) ​====
  
-Traficul generat ​de servicii se clasifică în trafic criptat ​și trafic în clarTraficul în clar (necriptatpoate 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 toplogia ​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> 
-dsniff ​-i eth0+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> 
-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''​. 
  
-Pentru comunicație prin FTP, rulați pe stația ''​red'' ​comanda<code bash> +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> 
-ftp green+root@host:​~#​ iptables -t nat -L -n -v 
 +Chain PREROUTING (policy ACCEPT 2 packets, 168 bytes) 
 + pkts bytes target ​    prot opt in     ​out ​    ​source ​              ​destination ​         
 + 
 +Chain INPUT (policy ACCEPT 0 packets, 0 bytes) 
 + 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> 
-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''​. 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 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''​. 
  
 +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
 +
 +--- 8.8.8.8 ping statistics ---
 +2 packets transmitted,​ 2 received, 0% packet loss, time 1001ms
 +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 packets, 0 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.1379494241.txt.gz · Last modified: 2013/09/18 11:50 by razvan.deaconescu
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