Differences

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

Link to this comparison view

rl:labs:08:contents:11 [2020/09/01 17:58]
iulia.florea
rl:labs:08:contents:11 [2023/11/05 12:57] (current)
vlad_iulius.nastase
Line 1: Line 1:
-==== 11. [5pCopiere cheie publică la distanță pentru autentificare ​====+==== 11. [BONUS - 10pTranslatare selectivă de adrese ​====
  
-În contul utilizatorului ''​bogdan''​ de pe stația ''​blue''​ (parola ​este ''​student''​) este generată o pereche cheie privată / cheie publică, respectiv în fișierele ​''​~/​.ssh/​id_rsa'' ​și ''​~/​.ssh/​id_rsa.pub''​. ​Dorim să realizăm conectare SSH folosind chei publice în contul utilizatorului ''​student'' ​de pe stația ''​host''​.+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 adresePe lângă aceasta, SNAT are avantajul precizării unui spațiu ​de adrese care să fie noile adrese (cele substituite) și a porturilor.
  
-Copiați cheia publică la distanță pentru ​permite conectarea. Conținutul fișierului aferent cheii publice (''​~/.ssh/id_rsa.pub''​ din ''​bogdan@blue''​) trebuie ​să ajungă în fișierul de la distanță care stochează cheile publice pentru autentificare ​(''​~/.ssh/​authorized_keys'' ​din ''​student@host''​). ​+<note tip> 
 +Informații despre folosirea ''​SNAT''​ șdiferența dintre ''​SNAT'' ​ș''​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 a 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>​
-Pentru copierea cheii publice, rulați din contul utilizatorului ​''​bogdan''​ de pe stația ''​blue'' ​comanda<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> 
-bogdan@blue:~$ ssh-copy-id student@host +root@host:~# iptables ​-t nat -F POSTROUTING 
-student@host'password:  +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 
-Now try logging into the machine, with "ssh '​student@host'"​and check in:+root@host:~# iptables -t nat -A POSTROUTING -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 packets0 bytes) 
 + pkts bytes target ​    prot opt in     out     ​source ​              ​destination ​         
 +    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>​
  
-  ~/​.ssh/​authorized_keys +Pornim ''​tcpdump'' ​pentru a captura mesaje destinate ''​cs.pub.ro'' ​pe portul ​''​80'',​ aferent HTTP:<code bash> 
- +root@host:~# tcpdump ​-n -i any ip dst host cs.pub.ro and tcp dst port 80
-to make sure we haven't added extra keys that you weren't expecting. +
-</​code>​ Introduceți parola ​''​student'' ​la promptul afișat. +
- +
-Verificați funcționarea corectă prin conectarea SSH la distanță:<code bash> +
-bogdan@blue:~$ ssh -l student ​host+
 [...] [...]
-student@host:~$ +16:43:​45.683809 IP 192.168.1.2.43031 > 141.85.166.61.80:​ Flags [.], 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>​
- 
- Dacă v-ați conectat fără să vi se ceară parola înseamnă că s-a realizat autentificare prin chei publice și configurația este corectă. 
- 
rl/labs/08/contents/11.1598972293.txt.gz · Last modified: 2020/09/01 17:58 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