Differences

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

Link to this comparison view

rl:labs:08:contents:02 [2013/11/20 19:34]
razvan.deaconescu [2. Blocare servicii necriptate]
rl:labs:08:contents:02 [2023/11/05 12:54] (current)
vlad_iulius.nastase
Line 1: Line 1:
-==== 2. Blocare servicii necriptate ​====+==== 02. [10p] Format de pachete la translatare ​====
  
-După cum ați observat la punctul anteriortraficul pentru protocoalele telnet ​și FTP este trafic în clar, necriptat, putându-se afla cu ușurință credențialele unui anumit cont și comenzile rulate.+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''​.
  
-Ne propunem să blocăm accesul de la stația ''​red'' ​către stația ​''​green'' ​pentru aceste servicii, configurând ruterul dintre cele două stații, adică stația ''​host''​. ​Practic vom configura pe stația ''​host''​ opțiuni de firewall cu ajutorul utilitarului ''​iptables''​. +Pe stația ''​red'' ​pornim comanda ​''​ping'' ​către ''​8.8.8.8.''​:<code bash> 
- +root@red:~# ping 8.8.8.8 
-Autentificați-vă prin SSH ca ''​root''​ pe stația ''​host''​Pentru a bloca accesul la serviciul telnet (port 23) destinat stației ''​green'',​ rulați pe stația ''​host''​ comanda de mai josComanda adaugă regula ​''​iptables''​ corespunzătoare.<code bash> +PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 
-iptables -A FORWARD -d green -p tcp --dport telnet -j DROP+64 bytes from 8.8.8.8: icmp_req=1 ttl=127 time=42.0 ms 
 +[...]
 </​code>​ </​code>​
  
-Pentru a verifica adăugarea regulii ​de mai susrulațpe stația ''​host'' ​comanda<​code bash> +<​note>​ 
-iptables ​-L FORWARD +Atunci când rulăm comanda ''​tcpdump''​ secvența ​de urmat este: 
-</code>+  - Se rulează comanda ''​tcpdump''​ cu opțiunile aferente într-un terminalactivâ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>
  
-Pentru a afișa informații și despre pachetele prelucrate și interfețele folositerulați ​pe stația ''​host''​ comanda<​code bash> +Pentru a urmări traficul, pe stația ''​host'' ​rulăm ​comanda<​code bash> 
-iptables ​-L FORWARD ​-v+root@host:​~#​ tcpdump ​-n -i eth0 ip dst host 8.8.8.8 
 +tcpdump: verbose output suppressed, use -v or -vv for full protocol decode 
 +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>​ </​code>​
  
-Pentru a afișa informații în format numeric ​(pentru ​nume de stații ​și nume de porturi), rulați pe stația ​''​host'' ​comanda<code bash> +<​spoiler ​(click pentru ​expandare) Detalii rulare masina virtuala VMware local> 
-iptables -L FORWARD -n -v +<note important>​ 
-</code> +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. 
-De acum înainte recomandăm folosirea acestor opțiuni (''​-n -v''​) pentru listarea regulilor ''​iptables''​.+</note
 +</spoiler>
  
-Pentru a verifica blocarea traficului telnet ​tre ''​green''​, rulați pe stația ''​red''​ comanda<code bash> +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''​.
-telnet green +
-</​code>​+
  
-Vă apare un mesaj de forma<​code>​ +Pentru a vedea pachetele așa cum sunt generate inițial, rulăm comandă ​''​tcpdump''​ pe interfaț''​veth-red''​ în loc de ''​eth0''​<code bash> 
-Trying 192.168.2.2... +root@host:​~#​ tcpdump ​-n -i veth-red ip dst host 8.8.8.8 
-</​code>​ semnificând faptul că se încearcă realizarea conexiunii dar nu se reușește. ​Pentru a anula comanda de conectare folosiți combinația de taste ''​Ctrl+c''​+tcpdump: verbose output suppressed, use -v or -vv for full protocol decode 
- +listening on veth-red, link-type EN10MB (Ethernet), capture size 65535 bytes 
-Pentru a vedea că regula de blocare a funcționat,​ rulați din nou pe stația ''​host'' ​comanda<code bash> +13:​01:​12.557692 IP red > 8.8.8.8: ICMP echo request, id 626, seq 6, length 64 
-iptables -L FORWARD ​-n -v+13:​01:​13.559726 IP red > 8.8.8.8: ICMP echo request, id 626, seq 7, length 64
 </​code>​ </​code>​
-Observați, în output-ul comenzii, ​că există acum valori diferite de 0 în coloana ​''​pkts'' ​și ''​bytes'', ​semn că au fost pachete prelucrate ​de această regulă, deci blocate.+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 rutareiar procesul NAT este aplicat **după rutare** (vezi [[rl:​labs:​09:​contents:​01|]].
  
-Pentru a verifica funcționarea ​în continuare a altor conexiuni ​(diferite ​de telnet) de la ''​red'' ​la ''​green'',​ rulațpe stația ​''​red'' ​comenzile<code bash> +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> 
-ftp green +root@host:​~#​ tcpdump -n -i any ip dst host 8.8.8.8 
-ssh -l student green+tcpdump: verbose output suppressed, use -v or -vv for full protocol decode 
 +listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes 
 +10:​23:​07.632412 IP red > 8.8.8.8: ICMP echo request, id 707, seq 237, length 64 
 +10:​23:​07.632430 IP host > 8.8.8.8: ICMP echo request, id 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>​ </​code>​
  
-Dorim să blocăm și celălalt serviciu necriptat, FTP. Adăugați o regulă ​''​iptables'' ​similară pentru a bloca, pe stația ''​host''​, traficul FTP destinat stației ''​green''​. De pe stația ''​red'' ​verificați blocarea traficului.+În lista de mai sus observăm atât pachetele care sunt captuarate pe interfaț''​veth-red'' ​(generate de stația ''​red''​) cât și cele capturate pe interfaț''​eth0'' ​(translatate de stația ''​host''​).
  
-<note hint> +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''​.
-Pentru această regulă puteți transmite argumentul ​''​21'' ​opțiunii ''​--dport'' ​sau chiar numele ''​ftp''​. Asocierea între port (număr) și protocol (nume) se găsește în fișierul ​''​/​etc/​services''​. +
-</​note>​+
  
-<​solution -hidden>​ +Repetați testele de mai sus pentru stația ''​green''​.
-<code bash> +
-root@host:​~#​ iptables -A FORWARD -d green -p tcp --dport ftp -j DROP +
-root@host:​~#​ iptables -L FORWARD -n -v +
-Chain FORWARD (policy ACCEPT 94 packets, 10307 bytes) +
- pkts bytes target ​    prot opt in     ​out ​    ​source ​              ​destination ​         +
-    2   120 DROP       ​tcp ​ --  *      *       0.0.0.0/​0 ​           192.168.2.2 ​         tcp dpt:23 +
-    0     0 DROP       ​tcp ​ --  *      *       ​0.0.0.0/​0 ​           192.168.2.2 ​         tcp dpt:21+
  
-root@red:~# ftp green +<​note>​ 
-^C +Î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
- +</note>
-root@host:​~#​ iptables -L FORWARD ​-n -v +
-Chain FORWARD (policy ACCEPT 94 packets10307 bytes) +
- pkts bytes target ​    prot opt in     ​out ​    ​source ​              ​destination ​         +
-    2   120 DROP       ​tcp ​ --  *      *       0.0.0.0/​0 ​           192.168.2.2 ​         tcp dpt:23 +
-    2   120 DROP       ​tcp  ​--  *      *       0.0.0.0/​0 ​           192.168.2.2 ​         tcp dpt:21 +
-</​code>​ +
-</solution>+
rl/labs/08/contents/02.1384968880.txt.gz · Last modified: 2013/11/20 19:34 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