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 10:44]
iulia.florea created
rl:labs:08:contents:11 [2023/11/05 12:57] (current)
vlad_iulius.nastase
Line 1: Line 1:
-==== 09. [10p] Permitere trafic SSH ====+==== 11. [BONUS - 10p] Translatare selectivă de adrese ​====
  
-În acest moment, traficul de la stația ''​red'' ​către celelalte stații din rețea este blocat.+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ă aceasta, SNAT are avantajul precizării unui spațiu de adrese care să fie noile adrese (cele substituite) și a porturilor.
  
-Dorim să permitem traficul SSH **de la** stația ''​red'' ​**către** stația ''​green''​. Adăugațo regulă corespunzătoare pe stația ​''​host''​.+<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>​
  
-<​hidden>​ +Ștergeți regula anterioară de tip ''​MASQUERADE''​ și folosiți reguli de tip ''​SNAT''​ pentru a face următoarele translatări:​ 
-<​solution>​ +  * conexiunile TCP către Internet de la stația ''​red'' ​să iasă prin porturi din spațiul ''​45000-50000'';​ 
-<code bash> +  * conexiunile TCP către Internet de la stația ''​green''​ să iasă prin porturi din spațiul ''​50000-55000'';​ 
-root@host:​~#​ iptables -A FORWARD -red -green -p tcp --dport ssh -j ACCEPT +  * 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).
-</​solution>​ +
-</​hidden>​+
  
-După ce ați adăugat regula, încercați realizarea unei conexiuni ​SSH de la stația ''​red'' ​la stația ''​green''​. Observați că nu se realizează conexiunea.+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@red:~# ssh green +root@host:​~#​ iptables -t nat -F POSTROUTING 
-^C +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 
-</​code>​ +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 
-</​solution>​ +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 
-</​hidden>​ +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 
-Afișați lista de reguli ​''​iptables''​ de pe stația ​''​host''​. De ce nu a reușit conexiunea? Ținețcont de ordinea regulilor afișate; sunt parcurse secvențial. +Chain POSTROUTING ​(policy ACCEPT 0 packets, 0 bytes)
- +
-<​hidden>​ +
-<​solution>​ +
-<code bash> +
-root@host:​~#​ iptables -L FORWARD ​--v +
-root@host:​~#​ iptables -L FORWARD ​-n -v +
-Chain FORWARD ​(policy ACCEPT 0 packets, 0 bytes)+
  pkts bytes target ​    prot opt in     ​out ​    ​source ​              ​destination ​          pkts bytes target ​    prot opt in     ​out ​    ​source ​              ​destination ​        
-    ​6   360 REJECT ​    ​all  ​-- ​ *      ​*       192.168.1.2 ​         0.0.0.0/​0 ​           ​reject-with icmp-port-unreachable +    ​    ​0 SNAT       ​tcp ​ ​-- ​ *      ​eth0    ​192.168.1.2 ​         0.0.0.0/​0 ​           ​to:​192.168.56.101:​45000-50000 
-    0     ​0 ​ACCEPT ​    tcp  --  *      ​*       192.168.1.2          192.168.2.2          ​tcp dpt:22+    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>​
-Regulile sunt parcurse secvențial. Conform primei reguli, tot traficul transmis de stația ''​red''​ este blocat. A doua regulă nu mai este parcursă. Trebuie să mutăm a doua regulă pe prima poziție. 
-</​solution>​ 
-</​hidden>​ 
- 
-Pentru rezolvarea problemei ștergeți regula ''​iptables''​ introdusă anterior și **inserați** regula pe stația ''​host''​. Pentru inserare folosiți opțiunea ''​-I'' ​ a comenzii ''​iptables''​. Verificați că acum conexiunea SSH între ''​red''​ și ''​green''​ va fi realizată. 
- 
-<note hint> 
-Pentru a șterge o regulă puteți folosi opțiunea ''​-D''​ așa cum ați făcut și la [[:​rl:​labs:​08:​contents:​04|exercițiul 4]]. 
- 
-Pentru a insera o regulă folosiți opțiunea ''​-I''​ urmată de numele lanțului (''​INPUT'',​ ''​OUTPUT''​ sau ''​FORWARD''​),​ urmată de indexul poziției unde doriți plasată regulă (1, 2, 3, ...) și apoi urmată de specificarea regulii. 
-</​note>​ 
- 
-<​hidden>​ 
-<​solution>​ 
-<code bash> 
-root@host:​~#​ iptables -D FORWARD -s red -d green -p tcp --dport ssh -j ACCEPT 
-root@host:​~#​ iptables -I FORWARD -s red -d green -p tcp --dport ssh -j ACCEPT 
- 
-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 ACCEPT ​    ​tcp ​ --  *      *       ​192.168.1.2 ​         192.168.2.2 ​         tcp dpt:22 
-    6   360 REJECT ​    ​all ​ --  *      *       ​192.168.1.2 ​         0.0.0.0/​0 ​           reject-with icmp-port-unreachable ​   ​ 
- 
-root@red:~# ssh -l student green 
-student@green'​s password: ​ 
-Welcome to Ubuntu 12.04.3 LTS (GNU/Linux 3.2.0-53-generic-pae i686) 
  
- * Documentation https://help.ubuntu.com/ +Pornim ''​tcpdump''​ pentru a captura mesaje destinate ''​cs.pub.ro''​ pe portul ''​80'',​ aferent HTTP:<code bash> 
-Last loginThu Nov 14 14:18:53 2013 from 192.168.1.2 +root@host:~# tcpdump -n -i any ip dst host cs.pub.ro and tcp dst port 80 
-student@green:~$ logout +[...] 
-Connection to green closed.+16:43:45.683809 IP 192.168.1.2.43031 > 141.85.166.61.80Flags [.], ack 1461, win 17520, length 0 
 +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 
 +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.1606812240.txt.gz · Last modified: 2020/12/01 10:44 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