This shows you the differences between two versions of the page.
rl:labs:08:contents:07 [2020/09/13 07:33] iulia.florea |
rl:labs:08:contents:07 [2023/11/05 12:56] (current) vlad_iulius.nastase |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== 7. [5p] Trafic criptat și necriptat ==== | + | ==== 07. [10p] Format de pachete la 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 capturat. Traficul criptat nu poate fi interpretat în absența cheii de criptare; doar transmițătorul și receptorul cunosc cheia pentru a putea comunica. | + | La exercițiul [[rl:labs:09:contents:03|]] am observat cum se modifică adresa IP sursă și portul sursă în cazul translatării de adrese. La port forwarding vom observa cum se modifică adresa IP destinație (de aici și numele DNAT: ''Destination NAT''). |
- | Ne propunem să analizăm, din punctul de vedere al criptării traficului, următoarele protocoale/servicii: | + | Vom captura traficul SSH inițiat din exterior către stația ''red'', prin intermediul portului ''10022'' al stației ''host''. Este vorba de traficul înainte de //port forwarding//. Pentru aceasta, pe stația ''host'' vom folosi comanda<code bash> |
- | * telnet (port TCP 23) | + | root@host:~# tcpdump -n -i eth0 tcp dst port 10022 -w /home/student/portfwd_eth0_output.pcap |
- | * SSH (port TCP 22) | + | </code> |
- | * 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''. | + | |
- | Pentru a porni procesul de captură, autentificați-vă ca ''root'' pe stația ''host'' și rulați comanda<code bash> | + | Pe un alt terminal, tot pe stația ''host'' capturăm traficul **după** //port forwarding//, pe interfața ''veth-red'' către portul SSH (''22'') al stației red. Pe stația ''host'' folosim comanda<code bash> |
- | root@host:~# dsniff -i veth-green | + | root@host:~# tcpdump -n -i veth-red tcp dst port 22 -w /home/student/portfwd_veth-red_output.pcap |
</code> | </code> | ||
- | Pentru comunicație prin telnet, rulați pe stația ''red'' comanda<code bash> | + | Pentru a genera trafic, de pe ''fep.grid.pub.ro'' realizăm o conexiune SSH la stația ''host'' pe portul ''10022'', conexiune ce va fi redirectată la portul ''22'' al stației ''red'':<code bash> |
- | root@red:~# telnet green | + | mihai.carabas@fep:~$ ssh -l student $ADRESA_IP_VM -p 10022 |
+ | root@host.local's password: | ||
+ | [...] | ||
+ | root@red:~# | ||
</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> | + | <note important> |
- | ''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. | + | Pentru a vizualiza capturile salvate în cele două fișiere copiați-le la voi local (pe calculatorul vostru) folosind ''scp'' și deschideți-le cu utilitarul ''wireshark''. |
- | </note> | + | |
- | Pentru comunicație prin FTP, rulați pe stația ''red'' comanda<code bash> | + | <spoiler (click pentru expandare) Copiere fișiere din VM pe local> |
- | root@red:~# ftp green | + | <code bash> |
- | </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 SSH, rulați pe stația ''red'' comanda<code bash> | + | $USER_FEP@fep:~$ scp -i ~/.ssh/openstack.key student@$ADRESA_IP_VM:portfwd_eth0_output.pcap ./ # Dacă fișierul pf_eth0_output.pcap se află în directorul /home/student/ |
- | root@red:~# ssh -l student green | + | $USER_FEP@fep:~$ scp -i ~/.ssh/openstack.key student@$ADRESA_IP_VM:portfwd_veth-red_output.pcap ./ # Dacă fișierul pf_veth-red_output.pcap se află în directorul /home/student/ |
- | </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''. | + | student@lab-EG207-EG208:~$ scp $USER_FEP@fep.grid.pub.ro:portfwd_eth0_output.pcap ./ # Dacă fișierul portfwd_eth0_output.pcap se află în home-ul utilizatorului de pe fep. |
+ | student@lab-EG207-EG208:~$ scp $USER_FEP@fep.grid.pub.ro:portfwd_veth-red_output.pcap ./ # Dacă fișierul portfwd_veth-red_output.pcap se află în home-ul utilizatorului de pe fep. | ||
+ | |||
+ | </code> | ||
+ | </spoiler> | ||
+ | </note> | ||
<note> | <note> | ||
- | Traficul telnet și FTP este trafic necriptat (în clar), în timp ce traficul SSH este trafic criptat. | + | Exemplu instalare și pornire ''Wireshark'' (pe sisteme Debian): |
+ | <code bash> | ||
+ | student@mjolnir:~$ apt-get install wireshark | ||
+ | student@mjolnir:~$ wireshark portfwd_eth0_output.pcap & | ||
+ | student@mjolnir:~$ wireshark portfwd_veth-red_output.pcap & | ||
+ | </code> | ||
</note> | </note> | ||
+ | |||
+ | În capturile realizate de comenzile de mai sus, observăm cum se translatează adresa IP și portul destinație din perechea ''<$ADRESA_IP_VM, 10022>'' în perechea ''<192.168.1.2, 22>''. |