This shows you the differences between two versions of the page.
rl:labs:08:contents:07 [2020/08/30 13:37] iulia.florea [7. [10p] Permitere trafic SSH] |
rl:labs:08:contents:07 [2023/11/05 12:56] (current) vlad_iulius.nastase |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== 7. [10p] Permitere trafic SSH ==== | + | ==== 07. [10p] Format de pachete la port forwarding ==== |
- | În acest moment, traficul de la stația ''red'' către celelalte stații din rețea este blocat. | + | 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''). |
- | Dorim să permitem traficul SSH **de la** stația ''red'' **către** stația ''green''. Adăugați o regulă corespunzătoare pe stația ''host''. | + | 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> |
+ | root@host:~# tcpdump -n -i eth0 tcp dst port 10022 -w /home/student/portfwd_eth0_output.pcap | ||
+ | </code> | ||
- | <hidden> | + | 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> |
- | <solution> | + | root@host:~# tcpdump -n -i veth-red tcp dst port 22 -w /home/student/portfwd_veth-red_output.pcap |
- | <code bash> | + | |
- | root@host:~# iptables -A FORWARD -s red -d green -p tcp --dport ssh -j ACCEPT | + | |
</code> | </code> | ||
- | </solution> | ||
- | </hidden> | ||
- | După ce ați adăugat regula, încercați realizarea unei conexiuni SSH de la stația ''red'' la stația ''green''. Observați că nu se realizează conexiunea. | + | 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> |
- | + | mihai.carabas@fep:~$ ssh -l student $ADRESA_IP_VM -p 10022 | |
- | <hidden> | + | root@host.local's password: |
- | <solution> | + | [...] |
- | <code bash> | + | root@red:~# |
- | root@red:~# ssh green | + | |
- | ^C | + | |
</code> | </code> | ||
- | </solution> | ||
- | </hidden> | ||
- | Afișați lista de reguli ''iptables'' de pe stația ''host''. De ce nu a reușit conexiunea? Țineți cont de ordinea regulilor afișate; sunt parcurse secvențial. | + | <note important> |
+ | 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''. | ||
- | <hidden> | + | <spoiler (click pentru expandare) Copiere fișiere din VM pe local> |
- | <solution> | + | |
<code bash> | <code bash> | ||
- | root@host:~# iptables -L FORWARD -n -v | ||
- | root@host:~# iptables -L FORWARD -n -v | ||
- | Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) | ||
- | pkts bytes target prot opt in out source destination | ||
- | 6 360 REJECT all -- * * 192.168.1.2 0.0.0.0/0 reject-with icmp-port-unreachable | ||
- | 0 0 ACCEPT tcp -- * * 192.168.1.2 192.168.2.2 tcp dpt:22 | ||
- | </code> | ||
- | Regulile sunt parcurse secvențial. Conform primei reguli, tot traficul transmis de stația ''red'' este blocat. A doua regulă nu mai este parcursă. Trebuie să mutăm a doua regulă pe prima poziție. | ||
- | </solution> | ||
- | </hidden> | ||
- | Pentru rezolvarea problemei ștergeți regula ''iptables'' introdusă anterior și **inserați** regula pe stația ''host''. Pentru inserare folosiți opțiunea ''-I'' a comenzii ''iptables''. Verificați că acum conexiunea SSH între ''red'' și ''green'' va fi realizată. | + | $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/ |
+ | $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/ | ||
- | <note hint> | + | 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. |
- | Pentru a șterge o regulă puteți folosi opțiunea ''-D'' așa cum ați făcut și la [[:rl:labs:08:contents:04|exercițiul 4]]. | + | 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. |
- | Pentru a insera o regulă folosiți opțiunea ''-I'' urmată de numele lanțului (''INPUT'', ''OUTPUT'' sau ''FORWARD''), urmată de indexul poziției unde doriți plasată regulă (1, 2, 3, ...) și apoi urmată de specificarea regulii. | + | </code> |
+ | </spoiler> | ||
</note> | </note> | ||
- | <hidden> | + | <note> |
- | <solution> | + | Exemplu instalare și pornire ''Wireshark'' (pe sisteme Debian): |
<code bash> | <code bash> | ||
- | root@host:~# iptables -D FORWARD -s red -d green -p tcp --dport ssh -j ACCEPT | + | student@mjolnir:~$ apt-get install wireshark |
- | root@host:~# iptables -I FORWARD -s red -d green -p tcp --dport ssh -j ACCEPT | + | student@mjolnir:~$ wireshark portfwd_eth0_output.pcap & |
+ | student@mjolnir:~$ wireshark portfwd_veth-red_output.pcap & | ||
+ | </code> | ||
+ | </note> | ||
- | root@host:~# iptables -L FORWARD -n -v | + | Î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>''. |
- | Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) | + | |
- | pkts bytes target prot opt in out source destination | + | |
- | 0 0 ACCEPT tcp -- * * 192.168.1.2 192.168.2.2 tcp dpt:22 | + | |
- | 6 360 REJECT all -- * * 192.168.1.2 0.0.0.0/0 reject-with icmp-port-unreachable | + | |
- | + | ||
- | root@red:~# ssh -l student green | + | |
- | student@green's password: | + | |
- | Welcome to Ubuntu 12.04.3 LTS (GNU/Linux 3.2.0-53-generic-pae i686) | + | |
- | + | ||
- | * Documentation: https://help.ubuntu.com/ | + | |
- | Last login: Thu Nov 14 14:18:53 2013 from 192.168.1.2 | + | |
- | student@green:~$ logout | + | |
- | Connection to green closed. | + | |
- | </code> | + | |
- | </solution> | + | |
- | </hidden> | + |