Kako kreirati SSH tuneliranje ili prosljeđivanje portova u Linuxu


SSH tuneliranje (također se naziva prosljeđivanje SSH porta) jednostavno je usmjeravanje lokalnog mrežnog prometa preko SSH-a na udaljene hostove. To znači da su sve vaše veze zaštićene šifriranjem. Pruža jednostavan način postavljanja osnovnog VPN-a (Virtuelna privatna mreža), korisnog za povezivanje na privatne mreže preko nesigurnih javnih mreža kao što je Internet.

Možete se koristiti i za izlaganje lokalnih servera iza NAT-ova i zaštitnih zidova Internetu preko sigurnih tunela, kao što je implementirano u ngrok.

SSH sesije dozvoljavaju tuneliranje mrežnih veza prema zadanim postavkama i postoje tri tipa prosljeđivanja SSH portova: lokalno, daljinsko i dinamičko > prosljeđivanje portova.

U ovom članku ćemo pokazati kako brzo i jednostavno postaviti SSH tuneliranje ili različite vrste prosljeđivanja portova u Linuxu.

Testno okruženje:

Za potrebe ovog članka koristimo sljedeće postavke:

  1. Lokalni host: 192.168.43.31
  2. Udaljeni host: Linode CentOS 7 VPS sa imenom hosta server1.example.com.

Obično se možete bezbedno povezati na udaljeni server koristeći SSH na sledeći način. U ovom primjeru, konfigurirao sam SSH prijavu bez lozinke između mojih lokalnih i udaljenih hostova, tako da nije tražio korisničku administratorsku lozinku.

ssh [email   

Prosljeđivanje lokalnog SSH porta

Ova vrsta prosljeđivanja portova vam omogućava da se povežete sa vašeg lokalnog računara na udaljeni server. Pod pretpostavkom da ste iza restriktivnog firewall-a ili ste blokirani odlaznim firewall-om da pristupite aplikaciji koja radi na portu 3000 na vašem udaljenom serveru.

Možete proslijediti lokalni port (npr. 8080) koji zatim možete koristiti za lokalni pristup aplikaciji na sljedeći način. Oznaka -L definira port koji se prosljeđuje udaljenom hostu i udaljenom portu.

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

Dodavanje oznake -N znači da ne izvršavate udaljenu komandu, u ovom slučaju nećete dobiti ljusku.

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

Prekidač -f nalaže ssh da radi u pozadini.

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

Sada, na svom lokalnom računaru, otvorite pretraživač, umjesto da pristupate udaljenoj aplikaciji koristeći adresu server1.example.com:3000, možete jednostavno koristiti localhost:8080 ili 192.168.43.31:8080, kao što je prikazano na slici ispod.

Udaljeno prosljeđivanje SSH portova

Prosljeđivanje udaljenog porta vam omogućava da se povežete sa vašeg udaljenog uređaja na lokalni računar. Podrazumevano, SSH ne dozvoljava udaljeno prosljeđivanje portova. Ovo možete omogućiti korištenjem GatewayPorts direktive u vašoj glavnoj konfiguracijskoj datoteci SSHD-a /etc/ssh/sshd_config na udaljenom hostu.

Otvorite datoteku za uređivanje koristeći svoj omiljeni uređivač komandne linije.

sudo vim /etc/ssh/sshd_config 

Potražite potrebnu direktivu, dekomentirajte je i postavite njenu vrijednost na yes, kao što je prikazano na snimku ekrana.

GatewayPorts yes

Sačuvajte promjene i izađite. Zatim morate ponovo pokrenuti sshd da biste primijenili nedavnu promjenu koju ste napravili.

sudo systemctl restart sshd
OR
sudo service sshd restart 

Zatim pokrenite sljedeću naredbu za prosljeđivanje porta 5000 na udaljenoj mašini na port 3000 na lokalnoj mašini.

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

Jednom kada shvatite ovu metodu tuneliranja, možete lako i sigurno izložiti lokalni razvojni server, posebno iza NAT-ova i zaštitnih zidova, Internetu preko sigurnih tunela. Tuneli kao što su Ngrok, pagekite, localtunnel i mnogi drugi rade na sličan način.

Dinamičko prosljeđivanje SSH portova

Ovo je treća vrsta prosljeđivanja portova. Za razliku od lokalnog i daljinskog prosljeđivanja portova koje omogućava komunikaciju s jednim portom, ono omogućava cijeli niz TCP komunikacija preko niza portova. Dinamičko prosljeđivanje portova postavlja vašu mašinu kao SOCKS proxy server koji sluša port 1080, prema zadanim postavkama.

Za početak, SOCKS je Internet protokol koji definira kako se klijent može povezati na server preko proxy servera (SSH u ovom slučaju). Možete omogućiti dinamičko prosljeđivanje portova pomoću opcije -D.

Sljedeća komanda će pokrenuti SOCKS proxy na portu 1080 omogućavajući vam da se povežete na udaljeni host.

ssh -f -N -D 1080 [email 

Od sada, možete učiniti da aplikacije na vašem računaru koriste ovaj SSH proxy server tako što ćete urediti njihova podešavanja i konfigurisati ih da ga koriste, za povezivanje na vaš udaljeni server. Imajte na umu da će SOCKS proxy prestati raditi nakon što zatvorite svoju SSH sesiju.

Pročitajte također: 5 načina za održavanje udaljenih SSH sesija nakon zatvaranja SSH-a

Sažetak

U ovom članku smo objasnili različite vrste prosljeđivanja portova s jednog stroja na drugi, za tuneliranje prometa kroz sigurnu SSH vezu. Ovo je jedna od mnogih upotreba SSH-a. Možete dodati svoj glas ovom vodiču putem obrasca za povratne informacije u nastavku.

Pažnja: Prosljeđivanje SSH portova ima neke značajne nedostatke, može se zloupotrijebiti: može se koristiti za zaobilaženje programa za praćenje mreže i filtriranje prometa (ili zaštitne zidove). Napadači ga mogu koristiti za zlonamjerne aktivnosti. U našem sljedećem članku ćemo pokazati kako onemogućiti SSH lokalno prosljeđivanje portova. Ostani povezan!