Cum se creează SSH Tunneling sau Port Forwarding în Linux


Tunelingul SSH (numit și redirecționarea portului SSH) este pur și simplu direcționarea traficului rețelei locale prin SSH către gazdele de la distanță. Aceasta înseamnă că toate conexiunile dumneavoastră sunt securizate folosind criptare. Oferă o modalitate ușoară de a configura o VPN de bază (Virtual Private Network), utilă pentru conectarea la rețele private prin rețele publice nesigure precum Internetul.

De asemenea, puteți fi folosit pentru a expune serverele locale din spatele NAT-urilor și firewall-urilor la Internet prin tuneluri securizate, așa cum este implementat în ngrok.

Sesiunile SSH permit tunelarea conexiunilor de rețea în mod implicit și există trei tipuri de redirecționare porturi SSH: local, la distanță și dinamic > redirecționare porturi.

În acest articol, vom demonstra cum să configurați rapid și ușor tunelul SSH sau diferitele tipuri de redirecționare porturi în Linux.

Mediu de testare:

În scopul acestui articol, folosim următoarea configurație:

  1. Gazdă locală: 192.168.43.31
  2. Gazdă la distanță: Linode CentOS 7 VPS cu numele de gazdă server1.example.com.

De obicei, vă puteți conecta în siguranță la un server la distanță folosind SSH, după cum urmează. În acest exemplu, am configurat autentificarea SSH fără parolă între gazdele mele locale și la distanță, așa că nu a cerut parola de administrator al utilizatorului.

ssh [email   

Redirecționarea portului SSH local

Acest tip de redirecționare porturi vă permite să vă conectați de la computerul local la un server de la distanță. Presupunând că vă aflați în spatele unui firewall restrictiv sau blocat de un firewall de ieșire să acceseze o aplicație care rulează pe portul 3000 de pe serverul dvs. la distanță.

Puteți redirecționa un port local (de exemplu, 8080) pe care îl puteți utiliza apoi pentru a accesa aplicația local, după cum urmează. Indicatorul -L definește portul redirecționat către gazda și portul la distanță.

ssh [email  -L 8080:server1.example.com:3000

Adăugarea flagului -N înseamnă că nu executați o comandă de la distanță, nu veți primi un shell în acest caz.

ssh -N [email  -L 8080:server1.example.com:3000

Comutatorul -f indică ssh să ruleze în fundal.

ssh -f -N [email  -L 8080:server1.example.com:3000

Acum, pe computerul dvs. local, deschideți un browser, în loc să accesați aplicația de la distanță folosind adresa server1.example.com:3000, puteți utiliza pur și simplu localhost:8080 sau 192.168.43.31:8080, după cum se arată în captura de ecran de mai jos.

Redirecționare la distanță porturi SSH

Redirecționarea portului de la distanță vă permite să vă conectați de la computerul de la distanță la computerul local. În mod implicit, SSH nu permite redirecționarea portului de la distanță. Puteți activa acest lucru utilizând directiva GatewayPorts din fișierul de configurare principal SSHD /etc/ssh/sshd_config de pe gazda la distanță.

Deschideți fișierul pentru editare folosind editorul preferat de linie de comandă.

sudo vim /etc/ssh/sshd_config 

Căutați directiva necesară, decomentați-o și setați-i valoarea la yes, așa cum se arată în captură de ecran.

GatewayPorts yes

Salvați modificările și ieșiți. Apoi, trebuie să reporniți sshd pentru a aplica modificarea recentă pe care ați făcut-o.

sudo systemctl restart sshd
OR
sudo service sshd restart 

Apoi rulați următoarea comandă pentru a redirecționa portul 5000 de pe mașina de la distanță la portul 3000 de pe mașina locală.

ssh -f -N [email  -R 5000:localhost:3000

Odată ce înțelegeți această metodă de tunel, puteți expune cu ușurință și în siguranță un server de dezvoltare locală, în special în spatele NAT-urilor și firewall-urilor la Internet prin tuneluri securizate. Tunelurile precum Ngrok, pagekite, localtunnel și multe altele funcționează în mod similar.

Redirecționare dinamică porturi SSH

Acesta este al treilea tip de port forwarding. Spre deosebire de redirecționarea portului local și la distanță care permite comunicarea cu un singur port, aceasta face posibilă o gamă completă de comunicații TCP într-o serie de porturi. Redirecționarea dinamică a portului configurează aparatul dvs. ca server proxy SOCKS care ascultă în mod implicit pe portul 1080.

Pentru început, SOCKS este un protocol de internet care definește modul în care un client se poate conecta la un server prin intermediul unui server proxy (SSH în acest caz). Puteți activa redirecționarea dinamică a porturilor folosind opțiunea -D.

Următoarea comandă va porni un proxy SOCKS pe portul 1080, permițându-vă să vă conectați la gazda de la distanță.

ssh -f -N -D 1080 [email 

De acum înainte, puteți face ca aplicațiile de pe mașina dvs. să utilizeze acest server proxy SSH, modificându-le setările și configurându-le să-l folosească, pentru a se conecta la serverul dvs. de la distanță. Rețineți că proxy-ul SOCKS nu va mai funcționa după ce vă închideți sesiunea SSH.

Citiți și: 5 moduri de a menține rularea sesiunilor SSH la distanță după închiderea SSH

rezumat

În acest articol, am explicat diferitele tipuri de redirecționare porturi de la o mașină la alta, pentru tunelarea traficului prin conexiunea SSH securizată. Aceasta este una dintre numeroasele utilizări ale SSH. Vă puteți adăuga vocea la acest ghid prin intermediul formularului de feedback de mai jos.

Atenție: redirecționarea portului SSH are câteva dezavantaje considerabile, poate fi abuzată: poate fi folosită pentru a ocoli programele de monitorizare a rețelei și de filtrare a traficului (sau firewall-uri). Atacatorii îl pot folosi pentru activități rău intenționate. În următorul nostru articol, vom arăta cum să dezactivați redirecționarea portului local SSH. Rămâi conectat!