Differences

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

Link to this comparison view

rl:labs:08:contents:05 [2013/09/18 09:47]
razvan.deaconescu
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ți pe stația "​host"​ toate regulile de pe lanțul FORWARD. Folosiți opțiunea "​-F"​ a iptables.+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 șpentru a permite unei stații din rețeaua locală să fie accesată din Internet, adică să se inițieze conexiuni din Internet. Acest proces poartă numele de //port forwarding//​.
  
-După ștergerea regulilor verificați funcționarea corectă a serviciilor telnetFTPSSH prin conectare de la stația ​"red" la stația "green".+Dorim să putem accesa prin SSHdin 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''​.
  
 +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 -t nat -A PREROUTING -p tcp --dport 10022 -j DNAT --to-destination 192.168.1.2:​22
 +</​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 1 packets, 474 bytes)
 + pkts bytes target ​    prot opt in     ​out ​    ​source ​              ​destination ​        
 +    0     0 DNAT       ​tcp ​ --  *      *       ​0.0.0.0/​0 ​           0.0.0.0/​0 ​           tcp dpt:10022 to:​192.168.1.2:​22
 +</​code>​
 +
 +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>​
 +
 +Observăm că în urma autentificării ne găsim pe stația ''​red''​. //Port forwarding//​ a funcționat.
 +
 +Folosim comanda de conectare SSH la stația ''​host''​ de pe stația ''​green'':<​code bash>
 +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@green:​~#​ ssh -l student host -p 10022
 +ssh: connect to host host port 10022: Connection refused
 +</​code>​
 +</​solution>​
 +</​hidden>​
rl/labs/08/contents/05.1379486841.txt.gz · Last modified: 2013/09/18 09:47 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