Ako používať tunelové prepojenie SSH na prístup k obmedzeným serverom a bezpečné prehliadanie

Klient SSH sa pripája k serveru Secure Shell, ktorý vám umožňuje spúšťať príkazy terminálu, akoby ste sedeli pred iným počítačom. Klient SSH vám ale tiež umožňuje „tunelovať“ port medzi lokálnym systémom a vzdialeným serverom SSH.

Existujú tri rôzne typy tunelovania SSH a všetky sa používajú na rôzne účely. Každý z nich zahŕňa použitie servera SSH na presmerovanie prenosu z jedného sieťového portu na druhý. Prenos sa odosiela cez šifrované pripojenie SSH, takže ho nemožno pri prenose monitorovať ani upravovať.

Môžete to urobiť pomocou sshpríkazu zahrnutého v systémoch Linux, macOS a iných operačných systémoch podobných systému UNIX. V systéme Windows, ktorý neobsahuje zabudovaný príkaz ssh, odporúčame bezplatný nástroj PuTTY na pripojenie k serverom SSH. Podporuje tiež tunelovanie SSH.

Presmerovanie miestneho portu: Sprístupnite vzdialené zdroje vo vašom lokálnom systéme

„Miestne presmerovanie portov“ vám umožňuje prístup k prostriedkom miestnej siete, ktoré nie sú vystavené internetu. Povedzme napríklad, že chcete získať prístup k databázovému serveru vo svojej kancelárii z domova. Z bezpečnostných dôvodov je tento databázový server nakonfigurovaný iba na prijímanie pripojení zo siete miestnej kancelárie. Ale ak máte prístup k serveru SSH v kancelárii a tento server SSH umožňuje pripojenie aj mimo kancelársku sieť, môžete sa k tomuto serveru SSH pripojiť z domova a získať prístup k databázovému serveru, akoby ste boli v kancelárii. Toto je často prípad, pretože je jednoduchšie zabezpečiť jeden server SSH proti útokom ako zabezpečiť rôzne sieťové zdroje.

Za týmto účelom nadviažete spojenie SSH so serverom SSH a poviete klientovi, aby preposielal prenos z konkrétneho portu z miestneho počítača - napríklad z portu 1234 - na adresu servera databázy a jeho portu v kancelárskej sieti. Takže pri pokuse o prístup k databázovému serveru na porte 1234 na vašom súčasnom počítači „localhost“ sa táto prevádzka automaticky „vyladí“ cez pripojenie SSH a odošle sa na databázový server. Server SSH sedí v strede a presmeruje prenos tam a späť. Na prístup k databázovému serveru, akoby bežal na vašom lokálnom počítači, môžete použiť ľubovoľný príkazový riadok alebo grafický nástroj.

Ak chcete používať miestne preposielanie, pripojte sa normálne k serveru SSH, ale zadajte aj -Largument. Syntax je:

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

Napríklad povedzme, že databázový server vo vašej kancelárii sa nachádza na kancelárskej sieti na čísle 192.168.1.111. Máte prístup k serveru SSH v kancelárii na adrese ssh.youroffice.coma váš používateľský účet na serveri SSH je bob. V takom prípade by váš príkaz vyzeral takto:

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

Po vykonaní tohto príkazu budete mať prístup k databázovému serveru na porte 8888 v serveri localhost. Ak teda databázový server ponúkol prístup na web, môžete do jeho webového prehľadávača pripojiť // localhost: 8888 a získať k nemu prístup. Ak by ste mali nástroj príkazového riadku, ktorý vyžaduje sieťovú adresu databázy, nasmerovali by ste ho na localhost: 8888. Všetka komunikácia odoslaná na port 8888 vo vašom počítači bude tunelovaná na 192.168.1.111:1234 v kancelárskej sieti.

Je to trochu mätúce, ak sa chcete pripojiť k serverovej aplikácii bežiacej v rovnakom systéme ako samotný server SSH. Povedzme napríklad, že máte server SSH bežiaci na porte 22 na vašom kancelárskom počítači, ale máte tiež databázový server bežiaci na porte 1234 v rovnakom systéme na rovnakej adrese. Chcete sa dostať k databázovému serveru z domova, ale systém prijíma iba pripojenia SSH na porte 22 a jeho brána firewall neumožňuje žiadne ďalšie externé pripojenia.

V takom prípade môžete spustiť príkaz, ako je tento:

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

Pri pokuse o prístup k databázovému serveru na porte 8888 na vašom súčasnom počítači sa prenos bude odosielať cez pripojenie SSH. Keď dorazí na systém, na ktorom je spustený server SSH, server SSH ho pošle na port 1234 na serveri „localhost“, čo je ten istý počítač, na ktorom je samotný server SSH. Takže „localhost“ vo vyššie uvedenom príkaze znamená „localhost“ z pohľadu vzdialeného servera.

Ak to chcete urobiť v aplikácii PuTTY vo Windows, vyberte Pripojenie> SSH> Tunely. Vyberte možnosť „Miestne“. Ako „Zdrojový port“ zadajte miestny port. V prípade „Cieľ“ zadajte cieľovú adresu a port vo formáte vzdialená_adresa: vzdialený_port.

Napríklad, ak by ste chceli nastaviť ten istý SSH tunel ako vyššie, zadali by ste 8888ako zdrojový port a localhost:1234ako cieľ. Potom kliknite na „Pridať“ a potom na „Otvoriť“, aby ste otvorili pripojenie SSH. Pred pripojením samozrejme budete musieť na hlavnej obrazovke „Relácia“ zadať adresu a port samotného servera SSH.

Vzdialené presmerovanie portov: Sprístupnite miestne zdroje na vzdialenom systéme

„Vzdialené presmerovanie portov“ je opakom miestneho presmerovania a nepoužíva sa tak často. Umožňuje vám sprístupniť zdroj na vašom lokálnom počítači na serveri SSH. Povedzme napríklad, že máte spustený webový server na lokálnom počítači, pred ktorým sedíte. Váš počítač je však za bránou firewall, ktorá neumožňuje prichádzajúci prenos do serverového softvéru.

Za predpokladu, že máte prístup k vzdialenému serveru SSH, môžete sa k nemu pripojiť a použiť vzdialené presmerovanie portov. Váš klient SSH povie serveru, aby preposlal konkrétny port - napríklad port 1234 - na serveri SSH na konkrétnu adresu a port v aktuálnom počítači alebo lokálnej sieti. Keď niekto získa prístup k portu 1234 na serveri SSH, bude sa tento prenos automaticky „tunelovať“ cez pripojenie SSH. Ktokoľvek s prístupom k serveru SSH bude mať prístup k webovému serveru spustenému na vašom počítači. Toto je efektívny spôsob tunelovania cez brány firewall.

Ak chcete použiť vzdialené preposielanie, použite sshpríkaz s -Rargumentom. Syntax je do značnej miery rovnaká ako pri lokálnom preposielaní:

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

Povedzme, že chcete sprístupniť serverovú aplikáciu počúvajúcu na porte 1234 na vašom lokálnom počítači na porte 8888 na vzdialenom serveri SSH. Adresa servera SSH je ssh.youroffice.coma vaše používateľské meno na serveri SSH je bob . Spustili by ste nasledujúci príkaz:

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

Niekto by sa potom mohol pripojiť k serveru SSH na porte 8888 a toto pripojenie by sa tunelovalo so serverovou aplikáciou bežiacou na porte 1234 v lokálnom počítači, z ktorého ste nadviazali pripojenie.

Ak to chcete urobiť v aplikácii PuTTY v systéme Windows, vyberte Pripojenie> SSH> Tunely. Vyberte možnosť „Vzdialené“. Do poľa „Zdrojový port“ zadajte vzdialený port. V prípade „Cieľ“ zadajte cieľovú adresu a port vo formáte local_address: local_port.

Napríklad, ak chcete nastaviť vyššie uvedený príklad, zadali by ste 8888ako zdrojový port a localhost:1234ako cieľ. Potom kliknite na „Pridať“ a potom na „Otvoriť“, aby ste otvorili pripojenie SSH. Pred pripojením samozrejme budete musieť na hlavnej obrazovke „Relácia“ zadať adresu a port samotného servera SSH.

Ľudia by sa potom mohli pripojiť k portu 8888 na serveri SSH a ich prenos by bol tunelovaný na port 1234 vo vašom lokálnom systéme.

Vzdialený server SSH bude predvolene počúvať iba pripojenia od toho istého hostiteľa. Inými slovami, budú sa môcť pripojiť iba ľudia v rovnakom systéme ako samotný server SSH. Je to z bezpečnostných dôvodov. Ak chcete toto správanie prepísať, musíte v sshd_config na vzdialenom serveri SSH povoliť možnosť „GatewayPorts“.

Dynamické presmerovanie portov: Použite svoj server SSH ako proxy server

SÚVISIACE: Aký je rozdiel medzi VPN a Proxy?

K dispozícii je tiež „dynamické presmerovanie portov“, ktoré funguje podobne ako proxy alebo VPN. Klient SSH vytvorí proxy server SOCKS, ktorý môžete nakonfigurovať na použitie aplikácií. Celá prevádzka odosielaná prostredníctvom servera proxy by sa posielala cez server SSH. Je to podobné ako s miestnym presmerovaním - trvá to miestny prenos odoslaný na konkrétny port vášho počítača a odosiela sa cez pripojenie SSH na vzdialené miesto.

SÚVISIACE: Prečo môže byť používanie verejnej siete Wi-Fi nebezpečné, dokonca aj pri prístupe na šifrované webové stránky.

Povedzme napríklad, že používate verejnú sieť Wi-Fi. Chcete surfovať bezpečne, bez toho, aby vás niekto sledoval. Ak máte doma prístup k serveru SSH, môžete sa k nemu pripojiť a použiť dynamické presmerovanie portov. Klient SSH vytvorí na vašom počítači SOCKS proxy. Celá prevádzka odosielaná na tento server proxy sa bude odosielať cez pripojenie k serveru SSH. Nikto, kto sleduje verejnú sieť Wi-Fi, nebude môcť sledovať vaše prehliadanie ani cenzurovať webové stránky, na ktoré máte prístup. Z pohľadu všetkých webových stránok, ktoré navštívite, to bude, akoby ste sedeli pred počítačom doma. To tiež znamená, že tento trik môžete použiť na prístup na webové stránky iba v USA, keď ste mimo USA - samozrejme za predpokladu, že máte prístup k serveru SSH v USA.

Ďalším príkladom môže byť prístup k aplikácii servera médií, ktorú máte v domácej sieti. Z bezpečnostných dôvodov môžete mať iba server SSH vystavený internetu. Nepovoľujete prichádzajúce pripojenia z Internetu do aplikácie servera médií. Môžete nastaviť dynamické presmerovanie portov, nakonfigurovať webový prehľadávač tak, aby používal proxy server SOCKS, a potom pristupovať k serverom bežiacim vo vašej domácej sieti prostredníctvom webového prehľadávača, akoby ste sedeli pred systémom SSH doma. Napríklad, ak je váš mediálny server umiestnený na porte 192.168.1.123 vo vašej domácej sieti, môžete adresu pripojiť 192.168.1.123do ľubovoľnej aplikácie pomocou servera SOCKS proxy a k mediálnemu serveru by ste sa pripojili, akoby ste boli v domácej sieti.

Ak chcete použiť dynamické preposielanie, spustite príkaz ssh s -Dargumentom, napríklad takto:

ssh -D local_port [email protected]

Povedzme napríklad, že máte prístup k serveru SSH na adrese ssh.yourhome.coma vaše používateľské meno na serveri SSH je bob. Ak chcete na otvorení servera SOCKS proxy na porte 8888 na súčasnom počítači použiť dynamické preposielanie. Spustili by ste nasledujúci príkaz:

ssh -D 8888 [email protected]

Potom by ste mohli nakonfigurovať webový prehliadač alebo inú aplikáciu tak, aby používala vašu miestnu adresu IP (127.0.01) a port 8888. Celá prevádzka z tejto aplikácie by bola presmerovaná cez tunel.

Ak to chcete urobiť v aplikácii PuTTY v systéme Windows, vyberte Pripojenie> SSH> Tunely. Vyberte možnosť „Dynamický“. Ako „Zdrojový port“ zadajte miestny port.

Napríklad, ak ste chceli vytvoriť SOCKS proxy na porte 8888, zadali by ste 8888ako zdrojový port. Potom kliknite na „Pridať“ a potom na „Otvoriť“, aby ste otvorili pripojenie SSH. Pred pripojením samozrejme budete musieť na hlavnej obrazovke „Relácia“ zadať adresu a port samotného servera SSH.

Potom by ste mohli nakonfigurovať aplikáciu na prístup k proxy serveru SOCKS na vašom lokálnom počítači (tj. IP adresa 127.0.0.1, ktorá smeruje na váš lokálny počítač) a určiť správny port.

SÚVISIACE: Ako nakonfigurovať proxy server vo Firefoxe

Napríklad môžete nakonfigurovať Firefox tak, aby používal proxy SOCKS. Je to obzvlášť užitočné, pretože Firefox môže mať svoje vlastné nastavenia servera proxy a nemusí používať nastavenia servera v celom systéme. Firefox bude odosielať svoju komunikáciu cez tunel SSH, zatiaľ čo iné aplikácie budú vaše pripojenie na internet používať normálne.

Keď to robíte vo Firefoxe, zvoľte „Manuálna konfigurácia proxy“, do poľa hostiteľa SOCKS zadajte „127.0.0.1“ a do poľa „Port“ zadajte dynamický port. Polia Proxy HTTP, SSL Proxy a FTP Proxy nechajte prázdne.

Tunel zostane aktívny a otvorený, pokiaľ máte otvorené pripojenie relácie SSH. Po ukončení relácie SSH a odpojení od servera sa uzavrie aj tunel. Stačí sa znova pripojiť pomocou príslušného príkazu (alebo príslušných možností v PuTTY), aby ste znova otvorili tunel.