This shows you the differences between two versions of the page.
rl:labs:08:contents:04 [2013/11/20 21:04] razvan.deaconescu [4. Ștergere regulă FTP] |
rl:labs:08:contents:04 [2023/11/05 12:54] (current) vlad_iulius.nastase |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== 4. Ștergere regulă FTP ==== | + | ==== 04. [10p] Configurare incorectă a translatării ==== |
- | Dorim să permitem accessul FTP către stația ''green''. Pentru aceasta pe stația ''host'' trebuie ștearsă regula ''iptables'' care blochează traficul FTP. | + | Comanda folosită mai sus pentru translatare, la [[:rl:labs:09:contents:01]], are neajunsuri pe care le vom identifica mai jos. |
- | Pe stația ''host'' ștergeți regula ''iptables'' aferentă. Pentru a șterge o regulă folosiți comanda ''iptables'' cu opțiunea ''-D'' (//delete//) urmată de restul argumentelor; practic, comanda este identică celei de adăugare, doar că folosiți opțiunea ''-D'' în locul opțiunii ''-A''. | ||
- | <solution -hidden> | + | Pe stația ''green'' capturăm traficul pe interfața ''green-eth0'' folosind comanda ''tcpdump'':<code bash> |
- | <code bash> | + | root@green:~# tcpdump -i green-eth0 |
- | root@host:~# iptables -D FORWARD -d green -p tcp --dport ftp -j DROP | + | tcpdump: verbose output suppressed, use -v or -vv for full protocol decode |
+ | listening on green-eth0, link-type EN10MB (Ethernet), capture size 65535 bytes | ||
</code> | </code> | ||
- | </solution> | ||
- | Listați regulile ''iptables'' pentru a verifica ștergerea regulii care bloca traficul FTP. | + | Pe stația ''red'' executăm comanda ''ping'' către stația ''green'':<code bash> |
+ | 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.155 ms | ||
+ | 64 bytes from green (192.168.2.2): icmp_req=2 ttl=63 time=0.086 ms | ||
+ | [...] | ||
+ | </code> | ||
- | <solution -hidden> | + | În acest moment, pe stația ''green'' avem captura pachetelor în output-ul comenzii ''tcpdump'':<code> |
- | <code bash> | + | 11:18:54.535064 IP host > green: ICMP echo request, id 633, seq 17, length 64 |
- | root@host:~# iptables -L FORWARD -n -v | + | 11:18:54.535092 IP green > host: ICMP echo reply, id 633, seq 17, length 64 |
- | Chain FORWARD (policy ACCEPT 35 packets, 2147 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 reject-with icmp-port-unreachable | + | |
- | 2 120 DROP tcp -- * * 0.0.0.0/0 192.168.2.2 tcp dpt:22 reject-with icmp-port-unreachable | + | |
</code> | </code> | ||
- | </solution> | ||
- | După ștergerea regulii verificați realizarea conexiunii prin FTP de la stația ''red'' la stația ''green''. Verificați că nu se pot realiza conexiuni prin telnet sau SSH de la stația ''red'' la stația ''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ă. |
- | <solution -hidden> | + | |
- | <code bash> | + | |
- | root@red:~# ftp green | + | |
- | Connected to green. | + | |
- | 220 (vsFTPd 2.3.5) | + | |
- | Name (green:root): student | + | |
- | 331 Please specify the password. | + | |
- | Password: | + | |
- | 230 Login successful. | + | |
- | Remote system type is UNIX. | + | |
- | Using binary mode to transfer files. | + | |
- | ftp> ls | + | |
- | 200 PORT command successful. Consider using PASV. | + | |
- | 150 Here comes the directory listing. | + | |
- | 226 Directory send OK. | + | |
- | ftp> quit | + | |
- | 221 Goodbye. | + | |
- | root@red:~# telnet green | + | Pentru ștergerea vechii reguli de NAT rulăm pe stația ''host'' comanda<code bash> |
- | Trying 192.168.2.2... | + | root@host:~# iptables -t nat -D POSTROUTING -j MASQUERADE |
- | telnet: Unable to connect to remote host: Connection refused | + | </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> | ||
- | </solution> | + | 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. |