Differences

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

Link to this comparison view

rl:labs:09:contents:10 [2013/12/01 20:24]
razvan.deaconescu [10. [10p] Tunel SSH invers]
rl:labs:09:contents:10 [2024/12/04 17:52] (current)
laura.ruse [10. [15p] Trimitere e-mail cu adresă personalizată din linia de comandă]
Line 1: Line 1:
-==== 10. [10pTunel SSH invers ​====+==== 10. [15pTrimitere e-mail cu adresă personalizată din linia de comandă ​====
  
-Sunt situații în care dorim ca o stație să fie accesibilă din exterior, dar este dificil să obținem un port în gateway (pentru //port forwarding//​):​ fie din rațiuni administrative,​ fie din motive ​de securitatePentru a permite totuși o conexiune din exterior, se poate crea un tunel SSH invers. Tunel SSH invers înseamnă următorii pași: +La exercițiul anterior, mesajul primit apare ca sosind ​de la ''​bogdan@host''​Nu este foarte elegant ​și am vrea să schimbăm adresa expeditorului.
-  * se creează o conexiune SSH de la o stație cu adresă IP privată la un server extern cu adresă IP publică, +
-  * se deschide un port pe serverul cu adresă IP publică +
-  * traficul către acel port este tunelat prin conexiunea SSH către stația cu adresă IP privată+
  
-Dorim să permitem conectarea la stația ​''​red'' ​din Internet pe SSH. Vom crea o conexiune SSH "​directă" de la stația ​''​red'' ​la contul vostru de pe ''​fep.grid.pub.ro''​. Prin această ​conexiune veți tunela invers traficul SSH către ​''​red'' ​permițând conexiunea din exterior. +Pentru a specifica adresa expeditorului vom folosi comanda ​''​mail'' ​disponibilă în pachetul ​''​s-nail'' ​care permite ​această ​opțiune. Este posibil ca pachetul ​''​s-nail'' ​să fie deja instalat ​pe ''​host''​. Dacă nu este instalat, atunci puteți folosi următoarea comandă pentru a-l instala: 
- +<code bash> 
-Pentru început, de pe stația ​''​red'' ​creăm o conexiune SSH directă către contul de pe ''​fep.grid.pub.ro''​ (identic cu cel de pe ''​cs.curs.pub.r''​:<code bash> +root@host:~# apt-get install s-nail 
-root@red:~# ssh -l $USERNAME fep.grid.pub.ro -R 100XY:​localhost:​22 ​  +Reading package lists... Done 
 +Building dependency tree 
 [...] [...]
-$USERNAME@fep.grid.pub.ro'​s password:  +</​code>​ 
-Last login: Mon Sep  9 09:55:37 2013 from 141.85.225.214 +Odată ce pachetul ​''​s-nail'' ​a fost instalatcomanda ​''​mail''​ este furnizată de acest pachet în mod implicit.
-[$USERNAME@fep-62-2 ~]$ netstat -tln | grep 100XY +
-tcp        0      0 127.0.0.1:​100XY ​            ​0.0.0.0:​* ​                  ​LISTEN ​      +
-tcp        0      0 ::​1:​100XY ​                  :::​* ​                       LISTEN +
-</​code> ​unde ''​$USERNAME''​ este numele contului de pe ''​fep.grid.pub.ro''/''​cs.curs.pub.ro'', ​iar ''​XY''​ este un identificator numeric unic al stației din laborator (dacă nu aveți pe monitorul stației din laborator un identificator discutați cu asistentul). Introduceți parola corespunzătoare contului vostru ​de pe ''​fep.grid.pub.ro''/''​cs.curs.pub.ro''​.+
  
-Observăm că se deschide portul ​''​100XY''​ pe ''​fep.grid.pub.ro''​. Acest port va fi folosit pentru tunelul invers care ne va duce pe stația ''​red''​.+Trimiteți un mesaj la adresa voastră de e-mail astfel încât expeditorul mesajului să fie ''​bogdan.georgescu@rl.cs.pub.ro''​.
  
-Argumentul ​''​-R 100XY:​localhost:​22'' ​transmis comenzii ​''​ssh''​ are următoarea semnificație: +<note tip> 
-   * ''​100XY''​ - portul de pe server pe care se vor asculta conexiuni care vor fi tunelate invers; +Comanda ​''​mail'' ​din pachetul ​''​s-nail''​ are opțiunea ''​-r'' ​cu ajutorul ​reia puteți preciza adresa de e-mail sursă care să fie folosită pentru trimiterea e-mail-ului. 
-   ​* ​''​localhost''​ - stația ​tre care vor fi trimise pachetele primite prin tunel (chiar stația locală); +</​note>​
-   * ''​22'' ​portul către care vor fi trimise pachetele primite prin tunel (adică portul SSH local).+
  
-După ce alți colegi rulează comenzile similare vă veți putea conecta ​pe stația ''​red''​ a acestora folosind portul deschis de ei; discutați cu alți colegi ca să vă spună ce port au deschis. Pentru aceasta, vețiu folosi stația fizică și vă veți conecta conecta pe contul ​de pe ''​fep.grid.pub.ro''​.+<note tip>Puteți folosi un serviciu precum [[https://​temp-mail.org/​|Temp Mail]] pentru obținerea unei adrese de mail temporare ​pe care puteți testa trimiterea ​de mail-uri în cadrul laboratorului.</​note>​
  
-<​note ​important+<​note>​ 
-Pe ''​fep.grid.pub.ro''​ rulează un load balancer pentru SSHDin acest motiv este posibil să intrați pe "celălalt" sistem. Verificați că numele ​de host din prompt corespunde cu cel pe care l-ați folosit inițial la crearea tunelului: adică ambele să fie ''​fep-62-2''​ sau ''​fep-62-1''​. Pentru ​siguranță folosim ​și comanda ''​netstat'':<​code bash> +În forma sa simplă, protocolul SMTP nu face verificarea adresei sursă a utilizatoruluiDacă utilizatorul se conectează la //Mail Transfer Agent// de pe o stație considerată sigură (de exemplu chiar de pe stația locală -- //​localhost//​),​ atunci acesta poate folosi orice adresă. Pentru ​autentificare se folosește SMTP cu suport ​[[http://en.wikipedia.org/​wiki/​Simple_Authentication_and_Security_Layer|SASL]],​ care obligă autentificarea utilizatorului înainte de a folosi serviciul SMTP
-[$USERNAME_COLEG@fep-62-2 ~]$ netstat -tln | grep 100ZT + 
-tcp        0      0 127.0.0.1:100ZT             0.0.0.0:*                   ​LISTEN +Detalii despre fenomen și prevenirea ​//e-mail forging/​spoofing//​ găsiți [[http://​www.cert.org/​tech_tips/​email_spoofing.html|aici]].
-tcp        0      0 ::​1:​100ZT ​                  :::​* ​                       LISTEN +
-</code> +
-În output-ul comenzii de mai sus ''​100ZT''​ este portul deschis de coleg.+
 </​note>​ </​note>​
  
-După conectarea colegului la ''​fep'',​ realizăm o conexiune prin tunelul SSH pe portul ''​100ZT''​ deschis de coleg:<code bash> +<​hidden>​ 
-[$USERNAME_COLEG@fep-62-2 ​~]ssh -l root localhost ​-p 100ZT +<​solution>​ 
-Warning: Permanently added '​[localhost]:​100ZT'​ (RSA) to the list of known hosts. +Folosim comanda de mai jos pentru a transmite e-mail cu adresa de e-mail sursă schimbată:<code bash> 
-root@localhost'​s password:  +bogdan@host:~$ echo "Un nou e-mail de la RL" | mail -s "Test RL imbunatatit"​ -r bogdan.georgescu@rl.cs.pub.ro adresa.de.email@gmail.com
-[...+
-root@red:~#+
 </​code>​ </​code>​
-În cadrul conexiunii ni se cere parola utilizatorului ''​root''​ de pe stația ''​red''​ (adică parola ''​student''​). +La destinataradresa expeditorului va fi afișată ca fiind ''​bogdan.georgescu@rl.cs.pub.ro''​. 
- +</​solution>​ 
-În final ați accesat stația ''​red''​ a coleguluio stația cu adresă IP privată inaccesibilă din exterior. Pentru aceasta ați folosit o altă stație (care ar putea fi din altă rețea) pentru a se conecta la ''​fep.grid.pub.ro'' ​și de acolo la ''​red''​ prin intermediul tunelului invers creat inițial+</​hidden>​
- +
-Creați un fișier pe stația ''​red''​ proaspăt accesată, iar colegul poate verifica faptul că, într-adevăr,​ ați accesat container-ul său prin tunelul SSH invers pe care l-a creat anterior.+
rl/labs/09/contents/10.1385922265.txt.gz · Last modified: 2013/12/01 20:24 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