Differences

This shows you the differences between two versions of the page.

Link to this comparison view

rl:labs:08:contents:11 [2020/09/13 14:53]
iulia.florea
rl:labs:08:contents:11 [2023/11/05 12:57] (current)
vlad_iulius.nastase
Line 1: Line 1:
-==== 11. [5pȘtergere reguli adăugate ====+==== 11. [BONUS - 10pTranslatare selectivă de adrese ​====
  
-Pentru a permite tot traficul către stația ''​green'',​ ștergeți ​pe stația ''​host'' ​toate regulile ​''​iptables''​ din lanțul ''​FORWARD''​. Folosiți opțiunea ''​-F'' ​(//​flush//​) ​comenzii ​''​iptables''​. ​Practic revenim la situația inițială, fără reguli ​''​iptables''​ pe stația ''​host''​. Folosițcomanda ​''​iptables -L FORWARD -n -v'' ​pentru a valida ​ștergerea regulilor din lanțul ''​FORWARD''​.+Pentru ​situația în care adresa IP exterioară ​gateway-ului este adresă statică (nu dinamică) se recomandă folosirea acțiunii ''​SNAT'' ​în loc de ''​MASQUERADE''​ la translatarea de adrese. Pe lângă aceastaSNAT are avantajul precizării unui spațiu de adrese care să fie noile adrese (cele substituite) ​și a porturilor. 
 + 
 +<note tip> 
 +Informații despre folosirea ''​SNAT''​ și diferența dintre ''​SNAT''​ și ''​MASQUERADE''​ găsiți [[http://​www.netfilter.org/​documentation/​HOWTO/​NAT-HOWTO-6.html|aici]]. 
 +</​note>​ 
 + 
 +Ștergeți ​regula anterioară de tip ''​MASQUERADE''​ și folosiți reguli de tip ''​SNAT''​ pentru a face următoarele translatări:​ 
 +  * conexiunile TCP către Internet de la stația ''​red'' ​să iasă prin porturi din spațiul ​''​45000-50000''​
 +  * conexiunile TCP către Internet de la stația ''​green''​ să iasă prin porturi ​din spațiul ''​50000-55000''​
 +  * conexiunile TCP către Internet de la stația ''​blue''​ să iasă prin porturi din spațiul ''​55000-60000''​
 +  * toate celelalte conexiuni să fie realizate în mod obișnuit, având ca adresă sursă adresa IP de exterior ​stației ​''​host'' ​(această regulă trebuie să fie ultima). 
 + 
 +Verificați translatarea corectă ​inițiind conexiuni HTTP (folosind ''​wget''​) către ''​cs.pub.ro'' ​de pe fiecare dintre cele trei stații de tip container (''​red''​, ''​green''​ și ''​blue''​și folosind ''​tcpdump''​ pe stația ''​host'' ​pentru a captura traficul aferent.
  
 <​hidden>​ <​hidden>​
 <​solution>​ <​solution>​
-<code bash> +Ștergem regula de tip ''​MASQUERADE'',​ adăugăm cele patru reguli de tip ''​SNAT''​ și verificăm prezența acestora în tabela ''​nat'':​<code bash> 
-root@host:​~#​ iptables -F FORWARD +root@host:​~#​ iptables ​-t nat -F POSTROUTING 
-root@host:​~#​ iptables -L FORWARD ​-n -v +root@host:​~#​ iptables ​-t nat -A POSTROUTING -s 192.168.1.2 -p tcp -o eth0 -j SNAT --to-source 192.168.56.101:​45000-50000 
-Chain FORWARD ​(policy ACCEPT 0 packets, 0 bytes)+root@host:​~#​ iptables -t nat -A POSTROUTING -s 192.168.2.2 -p tcp -o eth0 -j SNAT --to-source 192.168.56.101:​50000-55000 
 +root@host:​~#​ iptables -t nat -A POSTROUTING -s 192.168.3.2 -p tcp -o eth0 -j SNAT --to-source 192.168.56.101:​55000-60000 
 +root@host:​~#​ iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.56.101 
 +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 ​          pkts bytes target ​    prot opt in     ​out ​    ​source ​              ​destination ​        
-root@host:~#+    0     0 SNAT       ​tcp ​ --  *      eth0    192.168.1.2 ​         0.0.0.0/​0 ​           to:192.168.56.101:​45000-50000 
 +    0     0 SNAT       ​tcp ​ --  *      eth0    192.168.2.2 ​         0.0.0.0/​0 ​           to:​192.168.56.101:​50000-55000 
 +    0     0 SNAT       ​tcp ​ --  *      eth0    192.168.3.2 ​         0.0.0.0/​0 ​           to:​192.168.56.101:​55000-60000 
 +    0     0 SNAT       ​all ​ --  *      eth0    0.0.0.0/​0 ​           0.0.0.0/​0 ​           to:​192.168.56.101
 </​code>​ </​code>​
-</​solution>​ 
-</​hidden>​ 
- 
-După ștergerea regulilor verificați funcționarea serviciilor telnet, FTP, SSH prin conectare de la stația ''​red''​ la stația ''​green''​. 
- 
-<​hidden>​ 
-<​solution>​ 
-<code bash> 
-root@red:~# ftp green 
-Connected to green. 
-220 (vsFTPd 2.3.5) 
-Name (green:​root):​ ^C 
- 
-root@red:~# ssh green 
-root@green'​s password: ​ 
  
-root@red:~# telnet green +Pornim ''​tcpdump''​ pentru a captura mesaje destinate ''​cs.pub.ro''​ pe portul ''​80'',​ aferent HTTP:<​code bash> 
-Trying ​192.168.2.2... +root@host:~# tcpdump -n -i any ip dst host cs.pub.ro and tcp dst port 80 
-Connected to green+[...] 
-Escape character is '^]'+16:​43:​45.683809 IP 192.168.1.2.43031 > 141.85.166.61.80:​ Flags [.], ack 1461, win 17520, length 0 
-Ubuntu ​12.04.3 LTS +16:​43:​45.683836 IP 192.168.56.101.45000 > 141.85.166.61.80:​ Flags [.], ack 1461, win 17520, length 0 
-green login^CConnection closed by foreign host.+16:​43:​45.684033 IP 192.168.1.2.43031 > 141.85.166.61.80: Flags [.], ack 2921, win 20440, length 0 
 +16:43:45.684041 IP 192.168.56.101.45000 > 141.85.166.61.80:​ Flags [.], ack 2921, win 20440, length 0 
 +[...] 
 +16:44:12.865807 IP 192.168.2.2.60147 > 141.85.166.61.80:​ Flags [.], ack 4105, win 23256, length 0 
 +16:44:12.865811 IP 192.168.56.101.50000 > 141.85.166.61.80:​ Flags [.], ack 4105, win 23256, length 0 
 +16:​44:​12.885166 IP 192.168.2.2.60147 > 141.85.166.61.80:​ Flags [.], ack 5473, win 25992, length 0 
 +16:​44:​12.885175 IP 192.168.56.101.50000 > 141.85.166.61.80:​ Flags [.], ack 5473, win 25992, length 0 
 +[...] 
 +16:​44:​27.929672 IP 192.168.3.2.59957 > 141.85.166.61.80:​ Flags [.], ack 5473, win 25992, length 0 
 +16:44:27.929683 IP 192.168.56.101.59957 > 141.85.166.61.80:​ Flags [.], ack 5473, win 25992, length 0 
 +16:​44:​27.929902 IP 192.168.3.2.59957 > 141.85.166.61.80:​ Flags [.], ack 6841, win 28728, length 0 
 +16:​44:​27.929918 IP 192.168.56.101.59957 > 141.85.166.61.80:​ Flags [.], ack 6841, win 28728, length 0
 </​code>​ </​code>​
 +Observăm că translatarea TCP se face în spațiul de porturi definit prin regulile de mai sus.
 </​solution>​ </​solution>​
 </​hidden>​ </​hidden>​
rl/labs/08/contents/11.1599998039.txt.gz · Last modified: 2020/09/13 14:53 by iulia.florea
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0