This shows you the differences between two versions of the page.
rl:labs:09:contents:10 [2013/11/26 15:25] razvan.deaconescu created |
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. [10p] Tunel SSH invers ==== | + | ==== 10. [15p] Trimitere 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 securitate. Pentru 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'':<code bash> | + | root@host:~# apt-get install s-nail |
- | root@red:~# ssh -l $USERNAME fep.grid.pub.ro -R 10022: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 instalat, comanda ''mail'' este furnizată de acest pachet în mod implicit. |
- | [$USERNAME@fep-62-2 ~]$ netstat -tln | grep 10022 | + | |
- | tcp 0 0 127.0.0.1:10022 0.0.0.0:* LISTEN | + | |
- | tcp 0 0 ::1:10022 :::* LISTEN | + | |
- | </code> unde ''$SUERNAME'' este numele contului de pe ''fep.grid.pub.ro''/''cs.curs.pub.ro''. Introduceți parola corespunzătoare. | + | |
- | Observăm că se deschide portul ''10022'' 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''. |
- | <note important> | + | <note tip> |
- | Dacă altcineva a rulat comanda de creare a tunelului, atunci a ocupat portul ''10022'' de pe server. În acest caz folosiți un alt port pe server (''10122'', ''10222'' etc.). | + | Comanda ''mail'' din pachetul ''s-nail'' are opțiunea ''-r'' cu ajutorul căreia puteți preciza adresa de e-mail sursă care să fie folosită pentru trimiterea e-mail-ului. |
</note> | </note> | ||
- | Argumentul ''-R 10022:localhost:22'' transmis comenzii ''ssh'' are următoarea semnificație: | + | <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> |
- | * ''10022'' - portul de pe server pe care se vor asculta conexiuni care vor fi tunelate invers; | + | |
- | * ''localhost'' - stația către care vor fi trimise pachetele primite prin tunel (chiar stația locală); | + | |
- | * ''22'' - portul către care vor fi trimise pachetele primite prin tunel (adică portul SSH local). | + | |
- | Discutați cu un coleg pentru a se conecta pe ''fep.grid.pub.ro'' pe contul propriu și apoi de a se conecta către ''red'' folosind contul portul deschis mai sus (''10022''). Pentru aceasta, colegul va folosi stația fizică și se va conecta pe contul său la ''fep.grid.pub.ro'':<code bash> | + | <note> |
- | student@mjolnir:~$ ssh -l $USERNAME_COLEG fep.grid.pub.ro | + | În forma sa simplă, protocolul SMTP nu face verificarea adresei sursă a utilizatorului. Dacă 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. |
- | [...] | + | |
- | </code> | + | |
- | <note important> | + | Detalii despre fenomen și prevenirea //e-mail forging/spoofing// găsiți [[http://www.cert.org/tech_tips/email_spoofing.html|aici]]. |
- | Pe ''fep.grid.pub.ro'' rulează un load balancer pentru SSH. Din acest motiv este posibil să intrați pe "celălalt" sistem. Verificați că numele de host din promtp 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> | + | |
- | [$USERNAME_COLEG@fep-62-2 ~]$ netstat -tln | grep 10022 | + | |
- | tcp 0 0 127.0.0.1:10022 0.0.0.0:* LISTEN | + | |
- | tcp 0 0 ::1:10022 :::* LISTEN | + | |
- | </code> | + | |
</note> | </note> | ||
- | După conectarea colegului la ''fep'', realizăm o conexiune prin tunelul SSH pe portul ''10022'' deschis:<code bash> | + | <hidden> |
- | [$USERNAME_COLEG@fep-62-2 ~]$ ssh -l root localhost -p 10022 | + | <solution> |
- | Warning: Permanently added '[localhost]:10022' (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 destinatar, adresa expeditorului va fi afișată ca fiind ''bogdan.georgescu@rl.cs.pub.ro''. |
- | + | </solution> | |
- | În final colegul a accesat stația ''red'', o stația cu adresă IP privată inaccesibilă din exterior. Pentru aceasta a 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> |