Differences

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

Link to this comparison view

rl:labs:08:contents:05 [2013/11/20 21:05]
razvan.deaconescu [5. Ștergere reguli adăugate]
rl:labs:08:contents:05 [2023/11/05 12:55] (current)
vlad_iulius.nastase
Line 1: Line 1:
-==== 5. Ștergere reguli adăugate ​====+==== 05. [10p] Port forwarding ​====
  
-Pentru ​a permite ​tot traficul către ​stația ''​green'', ​ștergețpe stația ''​host''​ toate regulile ''​iptables'' ​din lanțul ''​FORWARD''​. Folosiți opțiunea ''​-F''​ (//flush//) a comenzii ''​iptables''​. Practic revenim la situația inițială, fără reguli ''​iptables''​ pe stația ''​host''​Folosiți comanda ''​iptables -L FORWARD -n -v''​ pentru a valida ștergerea regulilor din lanțul ''​FORWARD''​.+La exercițiile de până acum am folosit NAT pentru ​a permite stațiilor cu adrese private dintr-o rețea locală să acceseze Internetul. NAT poate fi folosit ​și pentru a permite unei stații din rețeaua locală să fie accesată din Internetadică să se inițieze conexiuni din InternetAcest proces poartă numele de //port forwarding//​.
  
-<​solution -hidden> +Dorim să putem accesa prin SSH, din Internet, stația ''​red''​. Acest lucru nu este posibil în mod implicit întrucât stația ''​red''​ are adresă IP privată. Soluția este "​deschiderea unui port" pe gateway (adică stația ''​host''​) și redirectarea acestui port (//port forwarding//​) către portul aferent serviciului SSH (portul TCP ''​22''​) de pe stația ''​red''​. 
-<code bash> + 
-root@host:​~#​ iptables -F FORWARD +Vom aplica pe stația ''​host''​ o regulă prin care redirectăm traficul ce vine către ''​host''​ pe portul ''​10022''​ către portul ''​22''​ (SSH) al stației ''​red''​ (adresa IP ''​192.168.1.2''​):​<code bash> 
-root@host:​~#​ iptables -L FORWARD ​-n -v +root@host:​~#​ iptables -t nat -A PREROUTING -p tcp --dport 10022 -j DNAT --to-destination 192.168.1.2:​22 
-Chain FORWARD ​(policy ACCEPT ​packets, ​bytes)+</​code>​ 
 + 
 +Verificăm aplicarea regulii prin consultarea lanțului ''​PREROUTING''​ din tabela NAT:<​code bash> 
 +root@host:​~#​ iptables ​-t nat -L PREROUTING ​-n -v 
 +Chain PREROUTING ​(policy ACCEPT ​packets, ​474 bytes)
  pkts bytes target ​    prot opt in     ​out ​    ​source ​              ​destination ​          pkts bytes target ​    prot opt in     ​out ​    ​source ​              ​destination ​        
-root@host:~#+    0     0 DNAT       ​tcp ​ --  *      *       ​0.0.0.0/​0 ​           0.0.0.0/​0 ​           tcp dpt:10022 to:​192.168.1.2:​22
 </​code>​ </​code>​
-</​solution>​ 
  
-După ștergerea regulilor ​verificați funcționarea serviciilor telnetFTP, SSH prin conectare ​de la stația ''​red'' ​la stația ''​green''​.+Pentru a verifica ​rezultatul de mai sus, de pe ''​fep.grid.pub.ro''​ deschidem un nou terminal și ne conectăm prin SSH folosind portul ''​10022'' ​la stația ''​host'':<​code bash> 
 +mihai.carabas@fep:​~$ ssh -l student $ADRESA_IP_MV -p 10022  
 +root@192.168.138.129'​s password: 
 +[...] 
 +root@red:~# 
 +</​code>​ unde ''​$ADRESA_IP_MV''​ este adresa IP a masinii virtuale obținută din dashboard-ul OpenStack. 
 +<spoiler Pentru rulare masina virtuala VMware local> 
 +Daca rulați VMware local, ''​$ADRESA_IP_MV''​ este adresa interfeței ''​eth0''​ a stației ''​host''​. 
 +</​spoiler>​
  
-<​solution -hidden>​ +Observăm că în urma autentificării ne găsim pe stația ''​red''​//Port forwarding//​ a funcționat.
-<code bash> +
-root@red:~# ftp green +
-Connected to green. +
-220 (vsFTPd 2.3.5) +
-Name (green:​root):​ ^C+
  
-root@red:~# ssh green +Folosim comanda de conectare SSH la stația ''​host''​ de pe stația ''​green'':<​code bash> 
-root@green'​s password: ​+root@green:~# ssh -l student host -p 10022 
 +[...] 
 +root@red:~#  
 +</​code>​ 
 + 
 +Observăm că și de pe stația ''​green''​ am accesat stația ''​red''​ prin //port forwarding//​. Dorim să limităm //port forwarding//​ doar pentru conexiuni de la stațiile din Internet. Pentru aceasta trebuie să actualizăm regula de //port forwarding//​. 
 + 
 +Ștergeți regula de //port forwarding//​ și adăugați o regulă nouă care să permită **doar** stațiilor din Internet să acceseze prin //port forwarding//​ stația ''​red''​. 
 + 
 +<note tip> 
 +Aplicați regula doar pentru pachetele ce **sosesc** pe interfața ''​eth0''​. Adică ''​eth0''​ este interfața de **intrare**. Folosiți opțiunea ''​-i''​ a ''​iptables''​ pentru precizarea interfeței de **intrare**. 
 +</​note>​ 
 + 
 +Realizați apoi din nou conectare SSH pe portul ''​10022''​ al stației ''​host''​ de pe ''​fep.grid.pub.ro''​ și de pe stația ''​green''​. Dacă ați configurat corect, nu va merge conexiunea SSH de pe stația ''​green''​ dar va merge în continuare de pe ''​fep.grid.pub.ro''​. 
 + 
 +<​hidden>​ 
 +<​solution>​ 
 +Ștergem vechea regulă și aplicăm regula nouă, ce ține cont de interfața de intrare:<​code bash> 
 +root@host:~# iptables -t nat -D PREROUTING -p tcp --dport 10022 -j DNAT --to-destination 192.168.1.2:​22 
 +root@host:​~#​ iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 10022 -j DNAT --to-destination 192.168.1.2:​22 
 +root@host:​~#​ iptables -t nat -L PREROUTING -n -v 
 +Chain PREROUTING (policy ACCEPT 1 packets, 474 bytes) 
 + pkts bytes target ​    prot opt in     ​out ​    ​source ​              ​destination ​         
 +    0     0 DNAT       ​tcp ​ --  eth0   ​* ​      ​0.0.0.0/​0 ​           0.0.0.0/​0 ​           tcp dpt:10022 to:​192.168.1.2:​22 
 +</​code>​ 
 +Verificăm conectarea de la ''​fep.grid.pub.ro''​ și de la stația ''​green''​. Prima merge în continuare, dar a doua nu mai merge:<​code bash> 
 +mihai.carabas@fep:​~$ ssh $ADRESA_IP_VM -p 10022 
 +root@host.local's password: ​ 
 +[...] 
 +root@red:~#
  
-root@red:~# telnet green +root@green:~# ssh -l student host -p 10022 
-Trying 192.168.2.2... +ssh: connect ​to host host port 10022Connection refused
-Connected ​to green. +
-Escape character is '​^]'​. +
-Ubuntu 12.04.3 LTS +
-green login^CConnection closed by foreign host.+
 </​code>​ </​code>​
 </​solution>​ </​solution>​
 +</​hidden>​
rl/labs/08/contents/05.1384974307.txt.gz · Last modified: 2013/11/20 21:05 by razvan.deaconescu
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