SSH Port Forwarding Example (Română)

ce este SSH Port Forwarding, AKA SSH Tunneling?

SSH Port forwarding este un mecanism în SSH pentru porturile de aplicații de tunelare de la mașina client la mașina server sau invers. Poate fi folosit pentru adăugarea de criptare la aplicațiile moștenite, trecând prin firewall-uri, iar unii administratori de sistem și profesioniști IT îl folosesc pentru deschiderea backdoors în rețeaua internă de la mașinile lor de acasă. De asemenea, poate fi abuzat de hackeri și malware pentru a deschide accesul de pe Internet la rețeaua internă., Consultați pagina de tunel SSH pentru o imagine de ansamblu mai largă.

redirecționare locală

redirecționarea locală este utilizată pentru a redirecționa un port de la mașina client la mașina server. Practic, clientul SSH ascultă conexiunile pe un port configurat, iar atunci când primește o conexiune, tunelează conexiunea la un server SSH. Serverul se conectează la un port de destinație configurat, posibil pe o altă mașină decât serverul SSH.,

utilizările Tipice locale port forwarding includ:

  • Tunel sesiuni și transferuri de fișiere prin salt servere

  • Conectarea la un serviciu la o rețea internă din exterior,

  • Conectarea la o partajare de fișiere la distanță prin Internet

Destul de câteva organizații pentru toate mesajele primite SSH acces printr-un singur salt server. Serverul poate fi un standard Linux / Unix box, de obicei, cu unele întărire suplimentare, detectarea intruziunilor, și/sau logare, sau poate fi o soluție comercială jump server.,

multe servere jump permit redirecționarea porturilor de intrare, odată ce conexiunea a fost autentificată. O astfel de redirecționare a porturilor este convenabilă, deoarece permite utilizatorilor cu experiență tehnologică să utilizeze resursele interne destul de transparent. De exemplu, ei pot transmite un port de pe mașina lor locală către serverul web intranet corporativ, către portul IMAP al unui server de poștă internă, către porturile 445 și 139 ale unui server de fișiere local, către o imprimantă, către un depozit de control al versiunilor sau către aproape orice alt sistem din rețeaua internă. Frecvent, portul este tunelat la un port SSH pe o mașină internă.,

În OpenSSH, locale port forwarding este configurat folosind -L opțiune:

 ssh -L 80:intra.example.com:80 gw.example.com

Acest exemplu deschide o conexiune la gw.example.com sari server, și înainte de orice conexiune la portul 80 de pe mașina locală la portul 80 pe intra.example.com.în mod implicit, oricine (chiar și pe mașini diferite) se poate conecta la portul specificat pe mașina client SSH., Cu toate acestea, acest lucru poate fi limitat la programe pe aceeași gazdă prin furnizarea de o lega adresa:

 ssh -L 127.0.0.1:80:intra.example.com:80 gw.example.com

LocalForward opțiune în OpenSSH client configuration file poate fi folosit pentru a configura redirecționarea fără a fi nevoie să-l specifica pe linia de comandă.

Remote Forwarding

în OpenSSH, expedierile porturilor SSH la distanță sunt specificate folosind opțiunea -R. De exemplu:

 ssh -R 8080:localhost:80 public.example.com

Acest lucru permite oricui de pe serverul de la distanță să se conecteze la portul TCP 8080 de pe serverul de la distanță., Conexiunea va fi apoi tunelată înapoi la gazda client, iar clientul face apoi o conexiune TCP la portul 80 pe localhost. Orice alt nume de gazdă sau adresă IP ar putea fi utilizate în loc de localhost pentru a specifica gazda la care să se conecteze.

acest exemplu special ar fi util pentru a oferi cuiva din exterior acces la un server Web intern. Sau expunerea unei aplicații web interne la Internetul public. Acest lucru ar putea fi făcut de un angajat care lucrează de acasă sau de un atacator.,

în mod implicit, OpenSSH permite doar conectarea la porturile redirecționate la distanță de la gazda serverului. Cu toate acestea, opțiunea GatewayPorts din fișierul de configurare a serverului sshd_config poate fi utilizată pentru a controla acest lucru. Sunt posibile următoarele alternative:

 GatewayPorts no

Acest lucru împiedică conectarea la porturile redirecționate din afara computerului serverului.

 GatewayPorts yes

Acest lucru permite oricui să se conecteze la porturile redirecționate. Dacă serverul se află pe Internetul public, oricine de pe Internet se poate conecta la port.,

 GatewayPorts clientspecified

aceasta înseamnă că clientul poate specifica o adresă IP de la care sunt permise conexiunile la port. Sintaxa este:

 ssh -R 52.194.1.73:8080:localhost:80 host147.aws.example.com

În acest exemplu, doar conexiunile de la adresa IP 52.194.1.73 la portul 8080 sunt permise.OpenSSH permite, de asemenea, portul de la distanță transmis la specificat ca 0. În acest caz, serverul va aloca dinamic un port și îl va raporta clientului. Când este utilizat cu opțiunea -O forward, Clientul va imprima numărul portului alocat la ieșirea standard.,

deschiderea Backdoors în întreprindere

redirecționarea porturilor SSH la distanță este frecvent utilizată de angajați pentru a deschide backdoors în întreprindere. De exemplu, angajatul poate seta obțineți un server de nivel liber de la Amazon AWS și conectați-vă de la birou la acel server, specificând redirecționarea de la distanță dintr-un port de pe server către un server sau o aplicație din rețeaua internă a întreprinderii. Mai multe redirecționări la distanță pot fi specificate pentru a deschide accesul la mai multe aplicații.,

angajatul ar seta, de asemenea, GatewayPorts yes pe server (majoritatea angajaților nu au adrese IP fixe acasă, deci nu pot restricționa adresa IP).

de exemplu, următoarea comandă deschide accesul la o bază de date Postgres internă la portul 5432 și la un port SSH intern la portul 2222.

 ssh -R 2222:d76767.nyc.example.com:22 -R 5432:postgres3.nyc.example.com:5432 aws4.mydomain.net

Configurare Server-Side

AllowTcpForwarding opțiune în serverul OpenSSH fișier de configurare trebuie să fie activată pe server, pentru a permite port forwarding. În mod implicit, redirecționarea este permisă., Valori posibile pentru această opțiune sunt yes sau all pentru a permite tuturor TCP forwarding, no pentru a preveni toate TCP forwarding, local pentru a permite locală forwardings, și remote de la distanță forwardings.

o altă opțiune de interes este AllowStreamLocalForwarding, care poate fi folosit pentru a transmite prize de domeniu Unix. Acesta permite aceleași valori ca AllowTcpForwarding. Valoarea implicită este yes.,

De exemplu:

 AllowTcpForwarding remote AllowStreamLocalForwarding no

GatewayPorts opțiune de configurare, după cum este descris mai sus afectează, de asemenea, la distanță de port forwardings. Valorile posibile au fost no (numai conexiuni locale de server gazdă permis; implicit), yes (oricine de pe Internet poate conecta de la distanță a transmis porturi), și clientspecified (clientul poate specifica o adresă IP care se poate conecta, oricine poate, dacă nu este specificat).,

cum să preveniți redirecționarea porturilor SSH de a eluda firewall-urile

vă recomandăm ca redirecționarea porturilor să fie dezactivată în mod expres atunci când nu este necesar. Lăsarea port forwarding activat poate expune organizația la riscuri de securitate și backdoors. De exemplu, dacă un server destinat să furnizeze numai transferuri de fișiere SFTP permite expedieri de porturi, aceste expedieri ar putea fi utilizate pentru a obține acces neintenționat în rețeaua internă din Intranet.

problema este că redirecționarea porturilor poate fi prevenită în practică numai de un server sau de un firewall., O întreprindere nu poate controla toate serverele de pe Internet. Controlul bazat pe Firewall poate fi, de asemenea, dificil, deoarece majoritatea organizațiilor au servere în Amazon AWS și alte servicii cloud, iar aceste servere sunt de obicei accesate folosind SSH.

Leave a Comment