This shows you the differences between two versions of the page.
rl:labs:08:contents:06 [2020/12/01 10:56] iulia.florea |
rl:labs:08:contents:06 [2023/11/05 12:55] (current) vlad_iulius.nastase |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== 6. [5p] Blocare servicii necriptate ==== | + | ==== 06. [10p] Extindere port forwarding ==== |
- | După cum ați observat la punctul anterior, traficul 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. | + | Dorim să accesăm din Internet/exterior stațiile ''green'' și ''blue'' prin SSH folosindu-ne de stația ''host''. Vom folosi: |
+ | * portul ''20022'' de pe stația ''host'' pentru a face //port forwarding// pe portul 22 al stației ''green''; | ||
+ | * portul ''30022'' de pe stația ''host'' pentru a face //port forwarding// pe portul 22 al stației ''blue''. | ||
- | 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''. | ||
- | 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 jos. Comanda adaugă regula ''iptables'' corespunzătoare.<code bash> | + | Pe modelul [[:rl:labs:09:contents:05|exercițiului anterior]], realizați configurarea necesară pentru această extindere de port forwarding. Verificați prin conectare de pe ''fep.grid.pub.ro'' (echivalentul Internet-ului/exteriorului) pe porturile respectiv ''20022'' și ''30022'' de pe stația ''host''. |
- | root@host:~# iptables -A FORWARD -d green -p tcp --dport telnet -j REJECT | + | |
- | </code> | + | |
- | + | ||
- | Pentru a verifica adăugarea regulii de mai sus, rulați pe stația ''host'' comanda<code bash> | + | |
- | root@host:~# iptables -L FORWARD | + | |
- | Chain FORWARD (policy ACCEPT) | + | |
- | target prot opt source destination | + | |
- | REJECT tcp -- anywhere green tcp dpt:telnet reject-with icmp-port-unreachable | + | |
- | </code> | + | |
- | + | ||
- | Pentru a afișa informații și despre pachetele prelucrate și interfețele folosite, rulați pe stația ''host'' comanda<code bash> | + | |
- | root@host:~# iptables -L FORWARD -v | + | |
- | Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) | + | |
- | pkts bytes target prot opt in out source destination | + | |
- | 0 0 REJECT tcp -- any any anywhere green tcp dpt:telnet reject-with icmp-port-unreachable | + | |
- | </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> | + | |
- | root@host:~# iptables -L FORWARD -v -n | + | |
- | Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) | + | |
- | pkts bytes target prot opt in out source destination | + | |
- | 0 0 REJECT tcp -- * * 0.0.0.0/0 192.168.2.2 tcp dpt:23 reject-with icmp-port-unreachable | + | |
- | </code> | + | |
- | De acum înainte recomandăm folosirea acestor opțiuni (''-v -n'') pentru listarea regulilor ''iptables''. | + | |
- | + | ||
- | Pentru a verifica blocarea traficului telnet către ''green'', rulați pe stația ''red'' comanda<code bash> | + | |
- | telnet green | + | |
- | </code> | + | |
- | + | ||
- | Vă apare un mesaj de forma<code> | + | |
- | Trying 192.168.2.2... | + | |
- | telnet: Unable to connect to remote host: Connection refused | + | |
- | </code> semnificând faptul că se încearcă realizarea conexiunii dar conexiunea este respinsă | + | |
- | + | ||
- | Pentru a vedea că regula de blocare a funcționat, rulați din nou pe stația ''host'' comanda<code bash> | + | |
- | root@host:~# iptables -L FORWARD -v -n | + | |
- | Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) | + | |
- | pkts bytes target prot opt in out source destination | + | |
- | 2 120 REJECT tcp -- * * 0.0.0.0/0 192.168.2.2 tcp dpt:23 reject-with icmp-port-unreachable | + | |
- | </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. | + | |
- | + | ||
- | Pentru a verifica funcționarea în continuare a altor conexiuni (diferite de telnet) de la ''red'' la ''green'', rulați pe stația ''red'' comenzile<code bash> | + | |
- | ftp green | + | |
- | ssh -l student green | + | |
- | </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''. După adăugarea regulii folosiți ''iptables -L FORWARD -n -v'' pentru a valida adăugarea regulii. | + | |
<note tip> | <note tip> | ||
- | 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''. | + | Pentru a afla adresele IP ale stațiilor ''green'' și ''blue'' rulați comanda de afișare a configurării interfeței ''eth0'' pe fiecare stație. Verificați, pentru siguranța, faptul că există conectivitate între ele și stația ''host''. |
</note> | </note> | ||
- | |||
- | De pe stația ''red'' verificați blocarea traficului FTP către stația green folosind comanda<code bash> | ||
- | ftp green | ||
- | </code> | ||
<hidden> | <hidden> | ||
<solution> | <solution> | ||
- | <code bash> | + | Adăugăm cele două reguli noi pentru //port forwarding//:<code bash> |
- | root@host:~# iptables -A FORWARD -d green -p tcp --dport ftp -j DROP | + | root@host:~# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 20022 -j DNAT --to-destination 192.168.2.2:22 |
- | root@host:~# iptables -L FORWARD -n -v | + | root@host:~# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 30022 -j DNAT --to-destination 192.168.3.2:22 |
- | Chain FORWARD (policy ACCEPT 94 packets, 10307 bytes) | + | root@host:~# iptables -t nat -L PREROUTING -n -v |
+ | Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes) | ||
pkts bytes target prot opt in out source destination | 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 | + | 1 60 DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:10022 to:192.168.1.2:22 |
- | 0 0 DROP tcp -- * * 0.0.0.0/0 192.168.2.2 tcp dpt:21 | + | 0 0 DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:20022 to:192.168.2.2:22 |
+ | 0 0 DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:30022 to:192.168.3.2:22 | ||
+ | </code> | ||
+ | Verificăm conectivitatea către cele două noi stații de pe ''fep.grid.pub.ro'':<code bash> | ||
+ | razvan@einherjar:~$ ssh $ADRESA_IP_MV -p 20022 | ||
+ | root@host.local's password: | ||
+ | [...] | ||
+ | root@green:~# | ||
- | root@red:~# ftp green | + | razvan@einherjar:~$ ssh $ADRESA_IP_MV -p 30022 |
- | ^C | + | root@host.local's password: |
- | + | [...] | |
- | root@host:~# iptables -L FORWARD -n -v | + | root@blue:~# |
- | 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 | + | |
- | 2 120 DROP tcp -- * * 0.0.0.0/0 192.168.2.2 tcp dpt:21 | + | |
</code> | </code> | ||
</solution> | </solution> | ||
</hidden> | </hidden> |