Cum să utilizați SSH Tunneling pentru a accesa serverele restricționate și a naviga în siguranță

Publicat: 2022-01-29

Un client SSH se conectează la un server Secure Shell, care vă permite să rulați comenzile terminalului ca și cum ați fi așezat în fața unui alt computer. Dar un client SSH vă permite, de asemenea, să „tunelați” un port între sistemul dumneavoastră local și un server SSH la distanță.

Există trei tipuri diferite de tunel SSH și toate sunt utilizate în scopuri diferite. Fiecare implică utilizarea unui server SSH pentru a redirecționa traficul de la un port de rețea la altul. Traficul este trimis prin conexiunea SSH criptată, deci nu poate fi monitorizat sau modificat în tranzit.

Puteți face acest lucru cu comanda ssh inclusă pe Linux, macOS și alte sisteme de operare asemănătoare UNIX și puteți crea un fișier de configurare ssh pentru a vă salva setările. Pe Windows, care nu include o comandă ssh încorporată, vă recomandăm instrumentul gratuit PuTTY pentru a vă conecta la serverele SSH. Acceptă și tunelul SSH.

Redirecționarea portului local: faceți resursele de la distanță accesibile pe sistemul dvs. local

„Redirecționarea portului local” vă permite să accesați resursele rețelei locale care nu sunt expuse la Internet. De exemplu, să presupunem că doriți să accesați un server de baze de date de la biroul dvs. de acasă. Din motive de securitate, acel server de bază de date este configurat doar să accepte conexiuni din rețeaua locală de birou. Dar dacă aveți acces la un server SSH la birou și acel server SSH permite conexiuni din afara rețelei de birou, atunci vă puteți conecta la acel server SSH de acasă și accesați serverul de baze de date ca și cum ați fi la birou. Acesta este adesea cazul, deoarece este mai ușor să securizați un singur server SSH împotriva atacurilor decât să securizați o varietate de resurse diferite de rețea.

Pentru a face acest lucru, stabiliți o conexiune SSH cu serverul SSH și îi spuneți clientului să redirecționeze traficul de la un anumit port de pe computerul local, de exemplu, portul 1234, către adresa serverului bazei de date și portul acestuia din rețeaua de birou. Deci, atunci când încercați să accesați serverul bazei de date de la portul 1234 PC-ul actual, „localhost”, acel trafic este automat „tunelizat” prin conexiunea SSH și trimis către serverul bazei de date. Serverul SSH se află în mijloc, redirecționând traficul înainte și înapoi. Puteți utiliza orice linie de comandă sau instrument grafic pentru a accesa serverul de baze de date ca și cum ar fi rulat pe computerul dvs. local.

Publicitate

Pentru a utiliza redirecționarea locală, conectați-vă la serverul SSH în mod normal, dar furnizați și argumentul -L . Sintaxa este:

 ssh -L port_local:adresă_la distanță:port_la distanță nume [email protected]

De exemplu, să presupunem că serverul de baze de date de la biroul dvs. se află la 192.168.1.111 în rețeaua de birou. Aveți acces la serverul SSH al biroului la ssh.youroffice.com , iar contul dvs. de utilizator de pe serverul SSH este bob . În acest caz, comanda ta ar arăta astfel:

 ssh -L 8888:192.168.1.111:1234 [email protected]

După ce rulați această comandă, veți putea accesa serverul bazei de date la portul 8888 la localhost. Deci, dacă serverul bazei de date oferă acces web, ați putea conecta http://localhost:8888 în browserul dvs. web pentru a-l accesa. Dacă aveți un instrument de linie de comandă care are nevoie de adresa de rețea a unei baze de date, l-ați îndrepta către localhost:8888. Tot traficul trimis către portul 8888 de pe computerul dvs. va fi tunelizat la 192.168.1.111:1234 în rețeaua dvs. de birou.

Este puțin mai confuz dacă doriți să vă conectați la o aplicație de server care rulează pe același sistem ca și serverul SSH. De exemplu, să presupunem că aveți un server SSH care rulează la portul 22 pe computerul dvs. de birou, dar aveți și un server de baze de date care rulează la portul 1234 pe același sistem la aceeași adresă. Doriți să accesați serverul bazei de date de acasă, dar sistemul acceptă doar conexiuni SSH pe portul 22 și firewall-ul său nu permite alte conexiuni externe.

În acest caz, puteți rula o comandă ca următoarea:

 ssh -L 8888:localhost:1234 [email protected]

Când încercați să accesați serverul bazei de date la portul 8888 de pe computerul dvs. actual, traficul va fi trimis prin conexiunea SSH. Când ajunge pe sistemul care rulează serverul SSH, serverul SSH îl va trimite la portul 1234 pe „localhost”, care este același PC care rulează însuși serverul SSH. Deci, „localhost” din comanda de mai sus înseamnă „localhost” din perspectiva serverului la distanță.

Publicitate

Pentru a face acest lucru în aplicația PuTTY din Windows, selectați Conexiune > SSH > Tuneluri. Selectați opțiunea „Local”. Pentru „Port sursă”, introduceți portul local. Pentru „Destinație”, introduceți adresa de destinație și portul sub forma adresă_remotă:port_la distanță.

De exemplu, dacă doriți să configurați același tunel SSH ca mai sus, ați introduce 8888 ca port sursă și localhost:1234 ca destinație. Faceți clic pe „Adăugați” apoi, apoi faceți clic pe „Deschidere” pentru a deschide conexiunea SSH. De asemenea, va trebui să introduceți adresa și portul serverului SSH însuși pe ecranul principal „Sesiune” înainte de a vă conecta, desigur.

LEGATE: Ce este redirecționarea agentului SSH și cum o utilizați?

Redirecționare porturi de la distanță: Faceți resursele locale accesibile pe un sistem de la distanță

„Redirecționarea portului de la distanță” este opusul redirecționării locale și nu este folosită la fel de frecvent. Vă permite să faceți o resursă de pe computerul dvs. local disponibilă pe serverul SSH. De exemplu, să presupunem că rulați un server web pe computerul local cu care vă aflați. Dar computerul dvs. se află în spatele unui firewall care nu permite traficul de intrare către software-ul serverului.

Presupunând că puteți accesa un server SSH la distanță, vă puteți conecta la acel server SSH și puteți utiliza redirecționarea portului de la distanță. Clientul dvs. SSH va spune serverului să redirecționeze un anumit port, de exemplu, portul 1234, de pe serverul SSH la o anumită adresă și port de pe computerul dvs. curent sau rețeaua locală. Când cineva accesează portul 1234 de pe serverul SSH, acel trafic va fi automat „tunelizat” prin conexiunea SSH. Oricine are acces la serverul SSH va putea accesa serverul web care rulează pe computerul dvs. Aceasta este efectiv o modalitate de a trece prin firewall-uri.

Pentru a utiliza redirecționarea la distanță, utilizați comanda ssh cu argumentul -R . Sintaxa este în mare parte aceeași ca și în cazul redirecționării locale:

 ssh -R remote_port:local_address:local_port [email protected]

Să presupunem că doriți să faceți o aplicație de server care ascultă la portul 1234 de pe computerul local, disponibilă la portul 8888 de pe serverul SSH la distanță. Adresa serverului SSH este ssh.youroffice.com , iar numele dvs. de utilizator de pe serverul SSH este bob . Ai rula următoarea comandă:

 ssh -R 8888:localhost:1234 [email protected]
Publicitate

Cineva s-ar putea conecta apoi la serverul SSH de la portul 8888 și acea conexiune va fi conectată la aplicația de server care rulează la portul 1234 de pe computerul local de pe care ai stabilit conexiunea.

Pentru a face acest lucru în PuTTY pe Windows, selectați Conexiune > SSH > Tuneluri. Selectați opțiunea „La distanță”. Pentru „Port sursă”, introduceți portul de la distanță. Pentru „Destinație”, introduceți adresa de destinație și portul sub forma local_address:local_port.

De exemplu, dacă doriți să configurați exemplul de mai sus, ați introduce 8888 ca port sursă și localhost:1234 ca destinație. Faceți clic pe „Adăugați” apoi, apoi faceți clic pe „Deschidere” pentru a deschide conexiunea SSH. De asemenea, va trebui să introduceți adresa și portul serverului SSH însuși pe ecranul principal „Sesiune” înainte de a vă conecta, desigur.

Oamenii s-ar putea conecta apoi la portul 8888 de pe serverul SSH, iar traficul lor va fi tunelizat la portul 1234 de pe sistemul dumneavoastră local.

În mod implicit, serverul SSH la distanță va asculta doar conexiunile de la aceeași gazdă. Cu alte cuvinte, numai persoanele de pe același sistem cu serverul SSH în sine se vor putea conecta. Acest lucru este din motive de securitate. Va trebui să activați opțiunea „GatewayPorts” în sshd_config pe serverul SSH la distanță dacă doriți să înlocuiți acest comportament.

LEGATE: Cum să gestionați un fișier de configurare SSH în Windows și Linux

Redirecționare dinamică a portului: utilizați serverul SSH ca proxy

RELATE: Care este diferența dintre un VPN și un proxy?

Există, de asemenea, „redirecționare dinamică a portului”, care funcționează similar cu un proxy sau VPN. Clientul SSH va crea un proxy SOCKS pe care îl puteți configura aplicațiile pe care să le utilizați. Tot traficul trimis prin proxy va fi trimis prin serverul SSH. Acest lucru este similar cu redirecționarea locală - preia traficul local trimis către un anumit port de pe computer și îl trimite prin conexiunea SSH către o locație de la distanță.

LEGATE: De ce utilizarea unei rețele Wi-Fi publice poate fi periculoasă, chiar și atunci când accesați site-uri web criptate

De exemplu, să presupunem că utilizați o rețea Wi-Fi publică. Doriți să navigați în siguranță, fără a fi căutat. Dacă aveți acces la un server SSH acasă, vă puteți conecta la acesta și utilizați redirecționarea dinamică a portului. Clientul SSH va crea un proxy SOCKS pe computerul dvs. Tot traficul trimis către acel proxy va fi trimis prin conexiunea la serverul SSH. Nimeni care monitorizează rețeaua Wi-Fi publică nu va putea monitoriza navigarea sau cenzura site-urile web pe care le puteți accesa. Din perspectiva oricăror site-uri web pe care le vizitați, va fi ca și cum ați sta acasă în fața computerului. Acest lucru înseamnă, de asemenea, că puteți folosi acest truc pentru a accesa site-uri web numai din SUA în afara Statelor Unite - presupunând că aveți acces la un server SSH în SUA, desigur.

Publicitate

Ca un alt exemplu, poate doriți să accesați o aplicație de server media pe care o aveți în rețeaua dvs. de acasă. Din motive de securitate, este posibil să aveți doar un server SSH expus la Internet. Nu permiteți conexiuni de intrare de pe Internet la aplicația dvs. de server media. Puteți configura redirecționarea dinamică a portului, configurați un browser web pentru a utiliza proxy-ul SOCKS și apoi accesați serverele care rulează în rețeaua dvs. de domiciliu prin intermediul browserului web ca și cum ați fi așezat în fața sistemului SSH acasă. De exemplu, dacă serverul dvs. media se află la portul 192.168.1.123 din rețeaua dvs. de domiciliu, puteți conecta adresa 192.168.1.123 la orice aplicație care folosește proxy-ul SOCKS și ați accesa serverul media ca și cum ați fi în rețeaua dvs. de acasă .

Pentru a utiliza redirecționarea dinamică, rulați comanda ssh cu argumentul -D , astfel:

 ssh -D port_local nume [email protected]

De exemplu, să presupunem că aveți acces la un server SSH la ssh.yourhome.com și numele dvs. de utilizator pe serverul SSH este bob . Doriți să utilizați redirecționarea dinamică pentru a deschide un proxy SOCKS la portul 8888 de pe computerul curent. Ai rula următoarea comandă:

 ssh -D 8888 [email protected]

Apoi, puteți configura un browser web sau o altă aplicație pentru a utiliza adresa IP locală (127.0.01) și portul 8888. Tot traficul din acea aplicație va fi redirecționat prin tunel.

Pentru a face acest lucru în PuTTY pe Windows, selectați Conexiune > SSH > Tuneluri. Selectați opțiunea „Dinamic”. Pentru „Port sursă”, introduceți portul local.

Publicitate

De exemplu, dacă doriți să creați un proxy SOCKS pe portul 8888, ați introduce 8888 ca port sursă. Faceți clic pe „Adăugați” apoi, apoi faceți clic pe „Deschidere” pentru a deschide conexiunea SSH. De asemenea, va trebui să introduceți adresa și portul serverului SSH însuși pe ecranul principal „Sesiune” înainte de a vă conecta, desigur.

Puteți configura apoi o aplicație pentru a accesa proxy-ul SOCKS pe computerul dvs. local (adică adresa IP 127.0.0.1, care indică computerul local) și să specificați portul corect.

LEGATE: Cum să configurați un server proxy în Firefox

De exemplu, puteți configura Firefox să utilizeze proxy-ul SOCKS. Acest lucru este deosebit de util deoarece Firefox poate avea propriile setări de proxy și nu trebuie să utilizeze setări de proxy la nivel de sistem. Firefox își va trimite traficul prin tunelul SSH, în timp ce alte aplicații vor folosi conexiunea ta la Internet în mod normal.

Când faceți acest lucru în Firefox, selectați „Configurare manuală proxy”, introduceți „127.0.0.1” în caseta gazdă SOCKS și introduceți portul dinamic în caseta „Port”. Lăsați casetele Proxy HTTP, Proxy SSL și Proxy FTP goale.

Tunelul va rămâne activ și deschis atâta timp cât aveți conexiunea de sesiune SSH deschisă. Când încheiați sesiunea SSH și vă deconectați de la un server, tunelul va fi de asemenea închis. Reconectați-vă doar cu comanda corespunzătoare (sau cu opțiunile corespunzătoare din PuTTY) pentru a redeschide tunelul.

LEGATE: Cele mai bune laptopuri Linux pentru dezvoltatori și entuziaști