Kako koristiti SSH tuneliranje za pristup ograničenim poslužiteljima i sigurno pregledavanje

SSH klijent povezuje se sa poslužiteljem Secure Shell, koji vam omogućuje pokretanje naredbi terminala kao da sjedite ispred drugog računala. Ali SSH klijent također vam omogućuje da "tunelirate" priključak između vašeg lokalnog sustava i udaljenog SSH poslužitelja.

Postoje tri različite vrste SSH tuneliranja i sve se koriste u različite svrhe. Svaka uključuje upotrebu SSH poslužitelja za preusmjeravanje prometa s jednog mrežnog priključka na drugi. Promet se šalje preko šifrirane SSH veze, tako da se ne može nadzirati ili mijenjati u prijevozu.

To možete učiniti sshnaredbom uključenom u Linux, macOS i druge operacijske sustave slične UNIX-u. Na sustavu Windows, koji ne uključuje ugrađenu naredbu ssh, preporučujemo besplatni alat PuTTY za povezivanje sa SSH poslužiteljima. Podržava i SSH tuneliranje.

Prosljeđivanje lokalnih priključaka: Učinite pristup udaljenim resursima na vašem lokalnom sustavu

"Prosljeđivanje lokalnih priključaka" omogućuje vam pristup resursima lokalne mreže koji nisu izloženi Internetu. Na primjer, recimo da poslužitelju baze podataka u uredu želite pristupiti od kuće. Iz sigurnosnih razloga taj je poslužitelj baze podataka konfiguriran samo za prihvaćanje veza s lokalne uredske mreže. Ali ako imate pristup SSH poslužitelju u uredu, a taj SSH poslužitelj dopušta veze izvan uredske mreže, tada se s tim SSH poslužiteljem možete povezati od kuće i pristupiti poslužitelju baze podataka kao da ste u uredu. To je često slučaj, jer je lakše osigurati jedan SSH poslužitelj od napada nego osigurati niz različitih mrežnih resursa.

Da biste to učinili, uspostavite SSH vezu sa SSH poslužiteljem i recite klijentu da proslijedi promet s određenog priključka s vašeg lokalnog računala - na primjer, priključka 1234 - na adresu poslužitelja baze podataka i njegova porta na uredskoj mreži. Dakle, kada pokušate pristupiti poslužitelju baze podataka na portu 1234 vašem trenutnom računalu, “localhost”, taj se promet automatski “tunelira” preko SSH veze i šalje na poslužitelj baze podataka. SSH poslužitelj nalazi se u sredini i prosljeđuje promet naprijed-natrag. Možete koristiti bilo koji naredbeni redak ili grafički alat za pristup poslužitelju baze podataka kao da je pokrenut na vašem lokalnom računalu.

Da biste koristili lokalno prosljeđivanje, normalno se povežite sa SSH poslužiteljem, ali također navedite -Largument. Sintaksa je:

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

Na primjer, recimo da se poslužitelj baze podataka u vašem uredu nalazi na 192.168.1.111 u uredskoj mreži. Imate pristup uredskom SSH poslužitelju na ssh.youroffice.com, a vaš korisnički račun na SSH poslužitelju je bob. U tom bi slučaju vaša naredba izgledala ovako:

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

Nakon pokretanja te naredbe moći ćete pristupiti poslužitelju baze podataka na portu 8888 na localhostu. Dakle, ako poslužitelj baze podataka nudi web pristup, možete priključiti // localhost: 8888 u svoj web preglednik da biste mu pristupili. Da imate alat naredbenog retka koji treba mrežnu adresu baze podataka, usmjerili biste ga na localhost: 8888. Sav promet poslan na port 8888 na vašem računalu bit će tuneliran na 192.168.1.111:1234 na vašoj uredskoj mreži.

Zbunjujuće je ako se želite povezati s poslužiteljskom aplikacijom koja radi na istom sustavu kao i sam SSH poslužitelj. Na primjer, recimo da imate SSH poslužitelj koji radi na portu 22 na vašem uredskom računalu, ali imate i poslužitelj baze podataka koji radi na portu 1234 na istom sustavu na istoj adresi. Želite pristupiti poslužitelju baze podataka od kuće, ali sustav prihvaća SSH veze samo na portu 22 i njegov vatrozid ne dopušta nikakve druge vanjske veze.

U ovom slučaju možete pokrenuti naredbu poput sljedeće:

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

Kad pokušate pristupiti poslužitelju baze podataka na portu 8888 na vašem trenutnom računalu, promet će se slati putem SSH veze. Kad stigne na sustav koji pokreće SSH poslužitelj, SSH poslužitelj će ga poslati na port 1234 na “localhost”, a to je isto računalo na kojem je pokrenut SSH poslužitelj. Dakle, „localhost“ u naredbi iznad znači „localhost“ iz perspektive udaljenog poslužitelja.

Da biste to učinili u aplikaciji PuTTY u sustavu Windows, odaberite Connection> SSH> Tunnels. Odaberite opciju "Local". Za "Izvorni port" unesite lokalnu luku. Za “Odredište” unesite adresu odredišta i priključak u obliku remote_address: remote_port.

Na primjer, ako želite postaviti isti SSH tunel kao gore, unijeli biste 8888kao izvorni port i localhost:1234kao odredište. Zatim kliknite "Dodaj", a zatim kliknite "Otvori" da biste otvorili SSH vezu. Također ćete prije povezivanja, naravno, trebati unijeti adresu i priključak samog SSH poslužitelja na glavni zaslon "Session".

Daljinsko prosljeđivanje priključaka: Učinite lokalne resurse dostupnima na udaljenom sustavu

"Udaljeno prosljeđivanje porta" suprotno je lokalnom prosljeđivanju i ne koristi se tako često. Omogućuje vam da resurs na vašem lokalnom računalu bude dostupan na SSH poslužitelju. Na primjer, recimo da imate web poslužitelj na lokalnom računalu ispred kojeg sjedite. Ali vaše se računalo nalazi iza vatrozida koji ne dopušta dolazni promet do poslužiteljskog softvera.

Pod pretpostavkom da možete pristupiti udaljenom SSH poslužitelju, možete se povezati s tim SSH poslužiteljem i koristiti daljinsko prosljeđivanje porta. Vaš SSH klijent reći će poslužitelju da proslijedi određeni port - recimo, port 1234 - na SSH poslužitelju na određenu adresu i port na vašem trenutnom računalu ili lokalnoj mreži. Kad netko pristupi portu 1234 na SSH poslužitelju, taj će se promet automatski "tunelirati" preko SSH veze. Svatko tko ima pristup SSH poslužitelju moći će pristupiti web poslužitelju pokrenutom na vašem računalu. Ovo je efektivan način prolaska kroz vatrozid.

Da biste koristili daljinsko prosljeđivanje, upotrijebite sshnaredbu s -Rargumentom. Sintaksa je uglavnom ista kao i kod lokalnog prosljeđivanja:

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

Recimo da želite omogućiti poslužiteljsku aplikaciju koja preslušava na priključku 1234 na vašem lokalnom računalu dostupnom na priključku 8888 na udaljenom SSH poslužitelju. Adresa SSH poslužitelja je, ssh.youroffice.coma vaše korisničko ime na SSH poslužitelju je bob . Pokrenuli biste sljedeću naredbu:

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

Tada bi se netko mogao spojiti na SSH poslužitelj na portu 8888 i ta bi veza bila tunelirana na poslužiteljsku aplikaciju koja se izvodi na portu 1234 na lokalnom računalu s kojeg ste uspostavili vezu.

Da biste to učinili u PuTTY na sustavu Windows, odaberite Connection> SSH> Tunnels. Odaberite opciju "Remote". Za "Izvorni port" unesite udaljeni port. Za "Odredište" unesite adresu odredišta i priključak u obliku local_address: local_port.

Na primjer, ako želite postaviti gornji primjer, unijeli biste 8888kao izvorni port i localhost:1234kao odredište. Zatim kliknite "Dodaj", a zatim kliknite "Otvori" da biste otvorili SSH vezu. Također ćete prije povezivanja, naravno, trebati unijeti adresu i priključak samog SSH poslužitelja na glavni zaslon "Session".

Ljudi bi se tada mogli povezati na port 8888 na SSH poslužitelju i njihov bi promet bio tuneliran na port 1234 na vašem lokalnom sustavu.

Prema zadanim postavkama, udaljeni SSH poslužitelj će slušati samo veze s istog hosta. Drugim riječima, samo ljudi na istom sustavu kao i sam SSH poslužitelj moći će se povezati. To je iz sigurnosnih razloga. Morat ćete omogućiti opciju "GatewayPorts" u sshd_config na udaljenom SSH poslužitelju ako želite poništiti ovo ponašanje.

Dinamičko prosljeđivanje priključaka: Koristite svoj SSH poslužitelj kao proxy

POVEZANO: Koja je razlika između VPN-a i proxyja?

Tu je i "dinamičko prosljeđivanje porta", koje djeluje slično proxyju ili VPN-u. SSH klijent će stvoriti SOCKS proxy koji možete konfigurirati za upotrebu. Sav promet poslan putem proxyja bit će poslan putem SSH poslužitelja. Ovo je slično lokalnom prosljeđivanju - on uzima lokalni promet poslan na određeni priključak na vašem računalu i šalje ga putem SSH veze na udaljeno mjesto.

POVEZANO: Zašto korištenje javne Wi-Fi mreže može biti opasno, čak i kada pristupate šifriranim web mjestima

Na primjer, recimo da upotrebljavate javnu Wi-Fi mrežu. Želite sigurno pregledavati bez promatranja. Ako kod kuće imate pristup SSH poslužitelju, možete se povezati s njim i koristiti dinamičko prosljeđivanje porta. SSH klijent stvorit će SOCKS proxy na vašem računalu. Sav promet poslan tom proxyju bit će poslan preko veze SSH poslužitelja. Nitko koji nadgleda javnu Wi-Fi mrežu neće moći nadgledati vaše pregledavanje ili cenzurirati web stranice kojima možete pristupiti. Iz perspektive bilo koje web stranice koju posjetite, bit će to kao da sjedite ispred računala kod kuće. To također znači da biste ovaj trik mogli koristiti za pristup web mjestima samo za SAD dok ste izvan SAD-a - pod pretpostavkom da imate pristup SSH poslužitelju u SAD-u, naravno.

Kao još jedan primjer, možda ćete htjeti pristupiti aplikaciji medijskog poslužitelja koju imate u svojoj kućnoj mreži. Iz sigurnosnih razloga možda imate samo SSH poslužitelj izložen Internetu. Ne dopuštate dolazne veze s Interneta na vašu aplikaciju medijskog poslužitelja. Možete postaviti dinamičko prosljeđivanje priključaka, konfigurirati web preglednik da koristi proxy SOCKS, a zatim putem web preglednika pristupiti poslužiteljima koji se izvode u vašoj kućnoj mreži kao da sjedite ispred svog SSH sustava kod kuće. Na primjer, ako se vaš medijski poslužitelj nalazi na priključku 192.168.1.123 na vašoj kućnoj mreži, adresu možete uključiti 192.168.1.123u bilo koju aplikaciju pomoću proxyja SOCKS i pristupili biste medijskom poslužitelju kao da ste na kućnoj mreži.

Da biste koristili dinamičko prosljeđivanje, pokrenite naredbu ssh s -Dargumentom, ovako:

ssh -D local_port korisničko [email protected]

Na primjer, recimo da imate pristup SSH poslužitelju na ssh.yourhome.comi da je vaše korisničko ime na SSH poslužitelju bob. Želite koristiti dinamičko prosljeđivanje da biste otvorili SOCKS proxy na portu 8888 na trenutnom računalu. Pokrenuli biste sljedeću naredbu:

ssh -D 8888 [email protected]

Tada biste mogli konfigurirati web preglednik ili drugu aplikaciju da koristi vašu lokalnu IP adresu (127.0.01) i port 8888. Sav promet iz te aplikacije preusmjerit će se kroz tunel.

Da biste to učinili u PuTTY na sustavu Windows, odaberite Connection> SSH> Tunnels. Odaberite opciju "Dynamic". Za "Izvorni port" unesite lokalnu luku.

Na primjer, ako želite stvoriti SOCKS proxy na portu 8888, unijeli biste 8888kao izvorni port. Zatim kliknite "Dodaj", a zatim kliknite "Otvori" da biste otvorili SSH vezu. Također ćete prije povezivanja, naravno, trebati unijeti adresu i priključak samog SSH poslužitelja na glavni zaslon "Session".

Tada biste mogli konfigurirati aplikaciju za pristup proxyju SOCKS na vašem lokalnom računalu (to jest IP adresa 127.0.0.1, koja upućuje na vaše lokalno računalo) i odrediti ispravan port.

POVEZANO: Kako konfigurirati proxy poslužitelj u Firefoxu

Na primjer, možete konfigurirati Firefox da koristi proxy SOCKS. To je posebno korisno jer Firefox može imati vlastite postavke proxyja i ne mora koristiti proxy postavke za cijeli sustav. Firefox će svoj promet slati kroz SSH tunel, dok će druge aplikacije normalno koristiti vašu internetsku vezu.

Kad to radite u Firefoxu, odaberite "Ručna konfiguracija proxyja", unesite "127.0.0.1" u okvir hosta SOCKS i unesite dinamički port u okvir "Port". Ostavite polja HTTP proxy, SSL proxy i FTP proxy prazna.

Tunel će ostati aktivan i otvoren sve dok imate otvorenu vezu SSH sesije. Kada završite SSH sesiju i isključite se s poslužiteljem, tunel će također biti zatvoren. Samo se ponovno povežite s odgovarajućom naredbom (ili odgovarajućim opcijama u PuTTY) da biste ponovo otvorili tunel.