This shows you the differences between two versions of the page.
rl:labs:08:contents:08 [2020/12/11 16:14] cosmin.prunaru [8. [10p] Permitere trafic SSH] |
rl:labs:08:contents:08 [2023/11/05 12:56] (current) vlad_iulius.nastase |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== 8. [10p] Permitere trafic SSH ==== | + | ==== 08. [10p] Port forwarding pentru telnet ==== |
- | În acest moment, traficul de la stația ''green'' către celelalte stații din rețea este blocat. | + | În cadrul exercițiilor anterioare am activat //port forwarding// pentru serviciul SSH. Dorim ca stațiile ''red'', ''green'' și ''blue'' să fie accesibile și prin ''telnet'' din Internet astfel: |
+ | * ''red'' să poată fi accesat folosind portul 10023 | ||
+ | * ''green'' să poată fi accesat folosind portul 20023 | ||
+ | * ''blue'' să poată fi accesat folosind portul 30023 | ||
- | 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''. | + | Realizați configurațiile necesare pentru a permite //port forwarding// pentru ''telnet'' așa cum este descris mai sus. |
- | <hidden> | + | <note> |
- | <solution> | + | Serviciul ''telnet'' ascultă în mod implicit conexiuni pe portul ''23''. Puteți observa acest lucru cu ajutorul uneia dintre comenzile de mai jos:<code> |
- | <code bash> | + | user@host:~$ grep -w 'telnet' /etc/services |
- | root@host:~# iptables -A FORWARD -s red -d green -p tcp --dport ssh -j ACCEPT | + | telnet 23/tcp |
- | </code> | + | tfido 60177/tcp # fidonet EMSI over telnet |
- | </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. | + | user@host:~$ getent services telnet |
- | + | telnet 23/tcp | |
- | <hidden> | + | |
- | <solution> | + | |
- | <code bash> | + | |
- | root@red:~# ssh green | + | |
- | ^C | + | |
</code> | </code> | ||
- | </solution> | + | </note> |
- | </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> |
+ | Exercițiul este academic. Nu este indicată folosirea ''telnet'' cu atât mai puțin //port forwarding// peste ''telnet'' din rațiuni de securitate. | ||
+ | </note> | ||
- | <hidden> | + | Testați de pe ''fep.grid.pub.ro'' folosind comanda ''telnet'':<code bash> |
- | <solution> | + | mihai.carabas@fep:~# telnet <adresa-ip-vm> <port-redirectat> |
- | <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> | </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ă. | + | unde ''<adresa-ip-vm>'' este adresa IP a mașinii virtuale vizibilă de pe fep iar ''<port-redirectat>'' este portul care face redirectarea pe stația ''host'' (''10023'' sau ''20023'' sau ''30023''). |
- | <note hint> | + | <note important> |
- | Pentru a șterge o regulă puteți folosi opțiunea ''-D''. | + | Există o latență de circa 10-15 secunde din momentul conectării până la apariția promptului ''telnet''. Așteptați să apară promptul și apoi autentificați-vă cu username ''student'' și parolă ''student'' pentru a valida conectivitatea. |
- | + | ||
- | 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. | + | |
</note> | </note> | ||
<hidden> | <hidden> | ||
<solution> | <solution> | ||
- | <code bash> | + | Adăugăm cele trei noi reguli pentru redirectarea ''telnet'' și validăm adăugarea lor:<code bash> |
- | root@host:~# iptables -D FORWARD -s red -d green -p tcp --dport ssh -j ACCEPT | + | root@host:~# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 10023 -j DNAT --to-destination 192.168.1.2:23 |
- | root@host:~# iptables -I FORWARD -s red -d green -p tcp --dport ssh -j ACCEPT | + | root@host:~# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 20023 -j DNAT --to-destination 192.168.2.2:23 |
- | + | root@host:~# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 30023 -j DNAT --to-destination 192.168.3.2:23 | |
- | root@host:~# iptables -L FORWARD -n -v | + | root@host:~# iptables -t nat -L PREROUTING -n -vChain PREROUTING (policy ACCEPT 0 packets, 0 bytes) |
- | Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) | + | |
pkts bytes target prot opt in out source destination | pkts bytes target prot opt in out source destination | ||
- | 0 0 ACCEPT tcp -- * * 192.168.1.2 192.168.2.2 tcp dpt:22 | + | 2 120 DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:10022 to:192.168.1.2:22 |
- | 6 360 REJECT all -- * * 192.168.1.2 0.0.0.0/0 reject-with icmp-port-unreachable | + | 3 180 DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:20022 to:192.168.2.2:22 |
+ | 8 480 DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:30022 to:192.168.3.2:22 | ||
+ | 0 0 DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:10023 to:192.168.1.2:23 | ||
+ | 0 0 DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:20023 to:192.168.2.2:23 | ||
+ | 0 0 DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:30023 to:192.168.3.2:23 | ||
+ | </code> | ||
- | root@red:~# ssh -l student green | + | Testăm aplicarea celor trei reguli prin folosirea comenzii ''telnet'' pe stația fizică către porturile respectiv ''10023'', ''20023'', ''30023'':<code bash> |
- | student@green's password: | + | razvan@einherjar:~$ telnet $ADRESA_IP_VM 10023 |
- | Welcome to Ubuntu 12.04.3 LTS (GNU/Linux 3.2.0-53-generic-pae i686) | + | [...] |
+ | red login: student | ||
+ | Password: | ||
+ | [...] | ||
+ | student@red:~$ | ||
- | * Documentation: https://help.ubuntu.com/ | + | razvan@einherjar:~$ telnet $ADRESA_IP_VM 20023 |
- | Last login: Thu Nov 14 14:18:53 2013 from 192.168.1.2 | + | [...] |
- | student@green:~$ logout | + | green login: student |
- | Connection to green closed. | + | Password: |
+ | [...] | ||
+ | student@green:~$ | ||
+ | |||
+ | razvan@einherjar:~$ telnet $ADRESA_IP_VM 30023 | ||
+ | [...] | ||
+ | blue login: student | ||
+ | Password: | ||
+ | [...] | ||
+ | student@blue:~$ | ||
</code> | </code> | ||
</solution> | </solution> | ||
</hidden> | </hidden> | ||
+ |