Differences

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

Link to this comparison view

rl:labs:08:contents:11 [2020/12/01 16:06]
iulia.florea
rl:labs:08:contents:11 [2023/11/05 12:57] (current)
vlad_iulius.nastase
Line 1: Line 1:
-==== 11. [BONUS - 10p] Blocare acces din Internet la rețeaua locală ====+==== 11. [BONUS - 10p] Translatare selectivă de adrese ​====
  
-Pentru ​simularea unei situații reale, vom considera stația ''​red''​ ca fiind o stație din rețeaua locală (LAN), iar stația ''​green'' ​o stație din Internet, conectate între ele prin stația ​''​host'', ​pe post de gateway.+Pentru situația ​în care adresa IP exterioară a 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.
  
-Dorim să blocăm traficul TCP **inițiat** din Internet către rețeaua locală, adică traficul TCP inițiat **de la** stația ''​green'' ​**către** stația ''​red''​. Traficul inițiat de stația ''​red''​ către stația ''​green''​ precum ​și traficul de răspuns de la stația ​''​green'' ​către stația ''​red''​ va fi permis.+<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>​
  
-Ca exemplu practic, ​de pe stația ''​red'' ​vor putea fi inițiate conexiuni SSH către stația ''​green'' ​folosind comanda<​code bash> +Ștergeți regula anterioară de tip ''​MASQUERADE''​ și folosiți reguli de tip ''​SNAT''​ pentru a face următoarele translatări:​ 
-ssh green +  * conexiunile TCP către Internet ​de la stația ''​red'' ​să iasă prin porturi din spațiul ''​45000-50000'';​ 
-</​code>,​ dar de pe stația ''​green'' ​**nu** vor putea fi inițiate conexiuni ​SSH către stația ''​red'' ​folosind comanda<​code bash> +  * conexiunile TCP către ​Internet de la stația ''​green'' ​să iasă prin porturi din spațiul ''​50000-55000'';​ 
-ssh red +  * conexiunile TCP către Internet ​de la stația ''​blue'' ​să iasă prin porturi din spațiul ''​55000-60000'';​ 
-</​code>​+  * toate celelalte ​conexiuni ​să fie realizate în mod obișnuit, având ca adresă sursă adresa IP de exterior a stației ''​host'' ​(această regulă trebuie să fie ultima).
  
-Configurați ''​iptables'' ​pe stația ​''​host'' ​pentru a realiza acest lucru. +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.
- +
-<note tip> +
-Folosiți modulul ​''​state'' ​al ''​iptables''​. Accesațpagina de manual ​''​iptables''​ și căutați după ''​%%--%%state''​. Pe distribuțiile mai noi accesați pagina de manual ''​iptables-extensions''​. Pagina de manual este instalată și accesibilă ​pe stația ''​host''​, **nu** pe stațiile ''​red'',​ ''​green''​ sau ''​blue''​. +
-</​note>​+
  
 <​hidden>​ <​hidden>​
-<​solution ​-hidden+<​solution>​ 
-Adăugăm ​regula care blochează traficul TCP inițiat ​de la stația ​''​green'' ​către stația ''​red'':​ +Ș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> 
-<code bash> +root@host:​~#​ iptables ​-t nat -F POSTROUTING 
-root@host:​~#​ iptables -A FORWARD ​-s green -d red -p tcp -m state --state NEW -j DROP +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 
- +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 ---v +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 -L FORWARD ​-n -v +root@host:​~#​ iptables -t nat -A POSTROUTING ​-o eth0 -j SNAT --to-source 192.168.56.101 
-Chain FORWARD ​(policy ACCEPT ​65 packets, ​11592 bytes)+root@host:​~#​ iptables ​-t nat -L POSTROUTING ​-n -v 
 +Chain POSTROUTING ​(policy ACCEPT ​packets, ​bytes)
  pkts bytes target ​    prot opt in     ​out ​    ​source ​              ​destination ​          pkts bytes target ​    prot opt in     ​out ​    ​source ​              ​destination ​        
-    ​2   120 DROP       tcp  --  *      ​      192.168.2.2 ​         192.168.1.2          ​tcpflags0x17/0x02+    ​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>​
  
-Încercăm realizarea de conexiuni SSH de la stația ​''​green'' ​la stația ​''​red'' ​(nu va funcționa) și de la stația ​''​red'' ​la stația ''​green''​ (va funcționa): +Pornim ​''​tcpdump'' ​pentru a captura mesaje destinate ​''​cs.pub.ro'' ​pe portul ​''​80''​, aferent HTTP:<code bash> 
-<code bash> +root@host:~# tcpdump -n -i any ip dst host cs.pub.ro and tcp dst port 80 
-root@green:~# ssh red +[...] 
-^C +16:43:​45.683809 IP 192.168.1.2.43031 > 141.85.166.61.80:​ Flags [.], ack 1461, win 17520, length 0 
-root@green:~# +16:​43:​45.683836 IP 192.168.56.101.45000 > 141.85.166.61.80:​ Flags [.], ack 1461, win 17520, length 0 
- +16:43:​45.684033 IP 192.168.1.2.43031 > 141.85.166.61.80:​ Flags [.], ack 2921, win 20440, length 0 
-root@red:~# ssh green+16:​43:​45.684041 IP 192.168.56.101.45000 > 141.85.166.61.80:​ Flags [.], ack 2921, win 20440, length 0
 [...] [...]
-root@green:~# +16:44:​12.865807 IP 192.168.2.2.60147 ​141.85.166.61.80Flags [.], ack 4105, win 23256, length 0 
-</code> +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 
-Traficul inițiat de la stația ''​green''​ către stația ''​red''​ este "​capturat"​ de regula ''​iptables''​ de pe lanțul ''​FORWARD''​+16:​44:​12.885175 IP 192.168.56.101.50000 > 141.85.166.61.80:​ Flags [.]ack 5473, win 25992, length 0 
-<code bash+[...] 
-root@host:~# iptables -L FORWARD -n -v +16:​44:​27.929672 IP 192.168.3.2.59957 > 141.85.166.61.80:​ Flags [.], ack 5473, win 25992, length 0 
-Chain FORWARD (policy ACCEPT 65 packets11592 bytes) +16:​44:​27.929683 IP 192.168.56.101.59957 > 141.85.166.61.80:​ Flags [.], ack 5473, win 25992, length 0 
- pkts bytes target ​    prot opt in     ​out ​    ​source ​              ​destination ​         +16:​44:​27.929902 IP 192.168.3.2.59957 > 141.85.166.61.80Flags [.], ack 6841, win 28728, length 0 
-    ​2 ​  120 DROP       ​tcp ​ --  *      *       192.168.2.2          192.168.1.2          ​tcpflags0x17/0x02+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.1606831581.txt.gz · Last modified: 2020/12/01 16:06 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