This shows you the differences between two versions of the page.
rl:labs:08:contents:04 [2020/12/01 10:11] iulia.florea |
rl:labs:08:contents:04 [2023/11/05 12:54] (current) vlad_iulius.nastase |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== 4. [5p] Blocare completă a traficului ==== | + | ==== 04. [10p] Configurare incorectă a translatării ==== |
- | Pentru început verificați că stația ''red'' poate accesa alte stații din rețea. Rulați comanda<code bash> | + | Comanda folosită mai sus pentru translatare, la [[:rl:labs:09:contents:01]], are neajunsuri pe care le vom identifica mai jos. |
- | root@red:~# ping -c 2 green | + | |
- | PING green (192.168.2.2) 56(84) bytes of data. | + | |
- | 64 bytes from green (192.168.2.2): icmp_req=1 ttl=63 time=0.076 ms | + | |
- | 64 bytes from green (192.168.2.2): icmp_req=2 ttl=63 time=0.067 ms | + | |
- | --- green ping statistics --- | ||
- | 2 packets transmitted, 2 received, 0% packet loss, time 999ms | ||
- | rtt min/avg/max/mdev = 0.067/0.071/0.076/0.009 ms | ||
- | </code> | ||
- | Asocierile între porturi și protocoale (''21'' și FTP, ''22'' și SSH, ''23'' și telnet) sunt cele implicite. Acest lucru nu împiedică însă un administrator să configureze un serviciu să asculte pe un port diferit de cel implicit. Pentru a preveni transferul de fișiere și conectare de la distanță pe stația ''red'' vom bloca accesul la toate porturile. Pentru aceasta vom configura stația ''host'' pentru a bloca **întreg** traficul de la stația ''red''. | + | Pe stația ''green'' capturăm traficul pe interfața ''green-eth0'' folosind comanda ''tcpdump'':<code bash> |
- | + | root@green:~# tcpdump -i green-eth0 | |
- | <hidden> | + | tcpdump: verbose output suppressed, use -v or -vv for full protocol decode |
- | <solution> | + | listening on green-eth0, link-type EN10MB (Ethernet), capture size 65535 bytes |
- | <code bash> | + | |
- | root@host:~# iptables -A FORWARD -s red -j REJECT | + | |
- | root@host:~# iptables -L FORWARD -n -v | + | |
- | Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) | + | |
- | pkts bytes target prot opt in out source destination | + | |
- | 0 0 REJECT all -- * * 192.168.1.2 0.0.0.0/0 reject-with icmp-port-unreachable | + | |
</code> | </code> | ||
- | Comanda blochează întreg traficul **de la** stația ''red'' (opțiunea ''-s'') pe care stația ''host'' l-ar fi rutat (lanțul ''FORWARD''). | ||
- | </solution> | ||
- | </hidden> | ||
- | Verificați că stația ''red'' nu poate accesa alte stații. Rulați comenzile<code bash> | + | Pe stația ''red'' executăm comanda ''ping'' către stația ''green'':<code bash> |
root@red:~# ping -c 2 green | root@red:~# ping -c 2 green | ||
PING green (192.168.2.2) 56(84) bytes of data. | PING green (192.168.2.2) 56(84) bytes of data. | ||
- | From host (192.168.1.1) icmp_seq=1 Destination Port Unreachable | + | 64 bytes from green (192.168.2.2): icmp_req=1 ttl=63 time=0.155 ms |
- | From host (192.168.1.1) icmp_seq=2 Destination Port Unreachable | + | 64 bytes from green (192.168.2.2): icmp_req=2 ttl=63 time=0.086 ms |
+ | [...] | ||
+ | </code> | ||
- | --- green ping statistics --- | + | În acest moment, pe stația ''green'' avem captura pachetelor în output-ul comenzii ''tcpdump'':<code> |
- | 2 packets transmitted, 0 received, +2 errors, 100% packet loss, time 999ms | + | 11:18:54.535064 IP host > green: ICMP echo request, id 633, seq 17, length 64 |
+ | 11:18:54.535092 IP green > host: ICMP echo reply, id 633, seq 17, length 64 | ||
+ | </code> | ||
- | root@red:~# telnet green | + | Observăm că adresa sursă a pachetelor de tip ''ICMP echo request'' este stația ''host'', nu stația ''red''. Acest lucru se întâmplă din cauză că atunci când am activat NAT nu am specificat pentru ce tip de trafic să aplice politica de translatare. Astfel stația ''host'' aplică politica de NAT pentru tot traficul care o tranzitează. Dorim să aplicăm politica doar pentru pachetele ce **ies** în Internet, adică cele ale căror **interfață de ieșire** este interfața ''eth0''. Vom șterge vechea regulă de NAT și vom adăuga o regulă corectă. |
- | Trying 192.168.2.2... | + | |
- | telnet: Unable to connect to remote host: Connection refused | + | |
- | root@red:~# ftp green | + | Pentru ștergerea vechii reguli de NAT rulăm pe stația ''host'' comanda<code bash> |
- | ftp: connect: Connection refused | + | root@host:~# iptables -t nat -D POSTROUTING -j MASQUERADE |
- | ftp> exit | + | </code> |
+ | Verificăm faptul că nu mai există comanda<code bash> | ||
+ | root@host:~# iptables -t nat -L POSTROUTING -n -v | ||
+ | Chain POSTROUTING (policy ACCEPT 1 packets, 328 bytes) | ||
+ | pkts bytes target prot opt in out source destination | ||
+ | </code> | ||
- | root@red:~# ssh -l student green | + | Adăugăm din nou regula de NAT, dar de data aceasta vom specifica să aplice politica de NAT pachetelor ce ies prin interfața ''eth0'' a stației ''host'':<code bash> |
- | ssh: connect to host green port 22: Connection refused | + | root@host:~# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE |
</code> | </code> | ||
- | Observați că nu mai sosesc pachete de răspuns (sunt respinse de stația ''host''), deci traficul de la stația ''red'' este blocat. | + | Verificați că regula a fost inserată:<code bash> |
+ | root@host:~# iptables -t nat -L POSTROUTING -n -v | ||
+ | Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes) | ||
+ | pkts bytes target prot opt in out source destination | ||
+ | 0 0 MASQUERADE all -- * eth0 0.0.0.0/0 0.0.0.0/0 | ||
+ | </code> | ||
+ | Observăm prezența interfaței ''eth0'' în coloana ''out''. Înainte apărea caracterul ''*'', adică orice interfață. | ||
+ | |||
+ | Repetați testul de la începutul exercițiului și arătați că pachetele trimise de la ''red'' către ''green'' au adresele IP sursă/destinație nemodificate (nu mai fac trecerea prin NAT), în vreme ce pachetele ce ies în Internet sunt translatate. |