Pagina principala » HOWTO » Cum se utilizează tunelul SSH pentru a accesa serverele restricționate și pentru a naviga în siguranță

    Cum se utilizează tunelul SSH pentru a accesa serverele restricționate și pentru a naviga în siguranță

    Un client SSH se conectează la un server Secure Shell, care vă permite să executați comenzi terminale ca și cum ați fi în fața altui computer. Dar un client SSH vă permite de asemenea să "tunelați" un port între sistemul dvs. local și un server SSH la distanță.

    Există trei tipuri diferite de tuneluri SSH și toate sunt utilizate în scopuri diferite. Fiecare implică utilizarea unui server SSH pentru redirecționarea traficului de la un port de rețea la altul. Traficul este trimis peste conexiunea SSH criptată, deci nu poate fi monitorizată sau modificată în timpul transportului.

    Puteți face acest lucru cu ssh comandă inclusă pe Linux, MacOS și alte sisteme de operare similare UNIX. Pe Windows, care nu include o comandă ssh încorporată, vă recomandăm instrumentul gratuit PuTTY să vă conectați la serverele SSH. Acesta susține și tunelul SSH.

    Portul local de redirecționare: Faceți acces la resursele de la distanță în sistemul dvs. local

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

    Pentru a face acest lucru, stabiliți o conexiune SSH cu serverul SSH și spuneți-i clientului să transfere traficul de la un anumit port de la PC-ul local - de exemplu portul 1234 - la adresa serverului bazei de date și a portului său din rețeaua de birouri. Deci, când încercați să accesați serverul bazei de date la portul 1234 PC-ul curent, "localhost", traficul este "tunelat" automat prin conexiunea SSH și trimis la serverul de bază 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 bazei de date ca și cum ar fi rulat pe PC-ul local.

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

    ssh -L local_port: remote_address: remote_port [email protected]

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

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

    După ce ați executat comanda respectivă, veți putea accesa serverul bazei de date la portul 8888 la localhost. Deci, dacă serverul de baze de date a oferit acces la Web, ați putea conecta http: // localhost: 8888 în browserul dvs. web pentru al accesa. Dacă aveați un instrument de linie de comandă care are nevoie de adresa de rețea a unei baze de date, ar trebui să indicați la localhost: 8888. Tot traficul trimis la portul 8888 de pe PC va fi tunelat la 192.168.1.111:1234 în rețeaua de birouri.

    Este ceva 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 de pe computerul dvs. de birou, dar de asemenea aveți un server de bază de date care rulează la portul 1234 pe același sistem la aceeași adresă. Doriți să accesați serverul bază de date de la domiciliu, dar sistemul acceptă numai conexiuni SSH pe portul 22, iar paravanul de protecție nu permite alte conexiuni externe.

    În acest caz, puteți rula o comandă ca cea de mai jos:

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

    Când încercați să accesați serverul bază de date la portul 8888 pe PC-ul dvs. curent, 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", același PC care rulează serverul SSH. Astfel, "localhost" din comanda de mai sus inseamna "localhost" din perspectiva serverului de la distanta.

    Pentru a face acest lucru în aplicația PuTTY din Windows, selectați Connection> SSH> Tunnels. Selectați opțiunea "Local". Pentru "Portul sursă", introduceți portul local. Pentru "Destinație", introduceți adresa de destinație și portul în formularul remote_address: remote_port.

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

    Remote Port Forwarding: Faceți accesarea resurselor locale pe un sistem la distanță

    "Redirecționarea portului de la distanță" este opusul redirecționării locale și nu este folosit la fel de frecvent. Acesta vă permite să creați o resursă pe PC-ul local disponibil pe serverul SSH. De exemplu, să presupunem că rulați un server web pe PC-ul local pe care stați în fața lui. Dar PC-ul dvs. se află în spatele unui paravan de protecție care nu permite traficul de intrare către software-ul server.

    Presupunând că aveți acces la un server SSH la distanță, vă puteți conecta la acel server SSH și puteți utiliza redirecționarea portului la distanță. Clientul dvs. SSH va spune serverului să trimită un anumit port-say, portul 1234-pe serverul SSH la o anumită adresă și port pe PC-ul curent sau în rețeaua locală. Când cineva accesează portul 1234 de pe serverul SSH, traficul respectiv va fi "tunelat" automat prin conexiunea SSH. Oricine are acces la serverul SSH va putea accesa serverul web care rulează pe PC. Aceasta este în mod eficient o modalitate de tunel prin firewall-uri.

    Pentru a utiliza redirecționarea de la distanță, utilizați ssh comanda cu -R argument. Sintaxa este în mare măsură aceeași cu cea de redirecționare locală:

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

    Să presupunem că doriți să faceți o aplicație de tip server ascultând la portul 1234 de pe PC-ul local disponibil la portul 8888 de pe serverul SSH de la distanță. Adresa serverului SSH este ssh.youroffice.com și numele dvs. de utilizator pe serverul SSH este bob. Ați rula următoarea comandă:

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

    Cineva ar putea apoi să se conecteze la serverul SSH la portul 8888 și această conexiune va fi tunelată la aplicația de server care rulează la portul 1234 pe PC-ul local pe care ați stabilit-o de la.

    Pentru a face acest lucru în PuTTY în Windows, selectați Connection> SSH> Tunnels. Selectați opțiunea "Remote". Pentru "Portul sursă", introduceți portul la distanță. Pentru "Destinație", introduceți adresa de destinație și portul în formularul local_address: local_port.

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

    Oamenii ar putea apoi să se conecteze la portul 8888 pe serverul SSH și traficul lor ar fi tunelat la portul 1234 din sistemul dvs. local.

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

    Dynamic Port Forwarding: Utilizați serverul SSH ca proxy

    Există, de asemenea, "redirecționare dinamică a porturilor", care funcționează similar unui proxy sau VPN. Clientul SSH va crea un proxy SOCKS pe care îl puteți configura aplicațiile pentru utilizare. Tot traficul trimis prin proxy va fi trimis prin serverul SSH. Acest lucru este similar cu redirecționarea locală - este nevoie ca traficul local să fie trimis la un anumit port de pe PC și să îl trimită peste conexiunea SSH la o locație îndepărtată.

    De exemplu, să presupunem că utilizați o rețea publică Wi-Fi. Doriți să răsfoiți în siguranță fără a fi speriat. Dacă aveți acces la un server SSH acasă, puteți să vă conectați la acesta și să utilizați redirecționarea porturilor dinamice. Clientul SSH va crea un proxy SOCKS pe PC. Tot traficul trimis către acel proxy va fi trimis prin conexiunea serverului SSH. Nimeni care monitorizează rețeaua publică Wi-Fi nu va putea să vă monitorizeze navigarea sau să cenzureze site-urile pe care le puteți accesa. Din perspectiva oricăror site-uri pe care le vizitați, va fi ca și cum ați fi așezat în fața calculatorului dvs. acasă. Acest lucru înseamnă, de asemenea, că ați putea folosi acest truc pentru a accesa site-uri Web numai în SUA în afara SUA - presupunând că aveți acces la un server SSH din SUA, desigur.

    Ca un alt exemplu, poate doriți să accesați o aplicație de server media pe care o aveți în rețeaua de domiciliu. Din motive de securitate, este posibil să aveți un server SSH expus la Internet. Nu permiteți conexiunile de intrare de pe Internet la aplicația serverelor media. Ați putea să configurați redirecționarea dinamică a porturilor, să configurați un browser web pentru a utiliza proxy-ul SOCKS și apoi să accesați serverele care rulează în rețeaua dvs. de domiciliu prin browserul web, ca și cum ați fi în fața sistemului SSH acasă. De exemplu, dacă serverul media este localizat la portul 192.168.1.123 din rețeaua dvs. de domiciliu, puteți conecta adresa 192.168.1.123 în orice aplicație care utilizează proxy-ul SOCKS și accesați serverul media ca și cum ați fi în rețeaua de domiciliu.

    Pentru a utiliza redirecționarea dinamică, executați comanda ssh cu -D argument, cum ar fi:

    ssh -D local_port [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 PC-ul curent. Ați 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 în Windows, selectați Connection> SSH> Tunnels. Selectați opțiunea "Dinamic". Pentru "Portul sursă", introduceți portul local.

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

    Apoi, puteți configura o aplicație pentru a accesa proxy-ul SOCKS de pe PC-ul local (adică adresa IP 127.0.0.1, care indică spre PC-ul dvs. local) și specificați portul corect.

    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ările de proxy la nivel de sistem. Firefox va trimite traficul prin tunelul SSH, în timp ce alte aplicații vor folosi în mod normal conexiunea la Internet.

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

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