Jak používat SSH tunelování pro přístup k omezeným serverům a bezpečné procházení

Klient SSH se připojuje k serveru Secure Shell, který vám umožňuje spouštět příkazy terminálu, jako byste seděli před jiným počítačem. Klient SSH vám ale také umožňuje „tunelovat“ port mezi místním systémem a vzdáleným serverem SSH.

Existují tři různé typy tunelování SSH a všechny se používají pro různé účely. Každý zahrnuje použití serveru SSH k přesměrování provozu z jednoho síťového portu na druhý. Provoz se odesílá přes šifrované připojení SSH, takže jej nelze při přenosu sledovat ani upravovat.

Můžete to udělat pomocí sshpříkazu obsaženého v operačních systémech Linux, macOS a dalších operačních systémech podobných systému UNIX. V systému Windows, který neobsahuje vestavěný příkaz ssh, doporučujeme bezplatný nástroj PuTTY pro připojení k serverům SSH. Podporuje také tunelování SSH.

Přesměrování místních portů: Zpřístupněte vzdálené zdroje ve vašem místním systému

„Místní předávání portů“ vám umožňuje přístup k prostředkům místní sítě, které nejsou vystaveny internetu. Řekněme například, že chcete přistupovat k databázovému serveru ve vaší kanceláři z domova. Z bezpečnostních důvodů je tento databázový server nakonfigurován tak, aby přijímal připojení pouze ze sítě místní kanceláře. Pokud však máte přístup k serveru SSH v kanceláři a tento server SSH umožňuje připojení mimo kancelářskou síť, můžete se k tomuto serveru SSH připojit z domova a přistupovat k databázovému serveru, jako byste byli v kanceláři. To se často stává, protože je snazší zabezpečit jeden server SSH proti útokům než zabezpečit celou řadu různých síťových prostředků.

Chcete-li to provést, navažte spojení SSH se serverem SSH a řekněte klientovi, aby předával provoz z konkrétního portu z místního počítače - například z portu 1234 - na adresu serveru databáze a jeho portu v kancelářské síti. Když se tedy pokusíte o přístup k databázovému serveru na portu 1234, váš aktuální počítač „localhost“, je tento provoz automaticky „tunelován“ přes připojení SSH a odeslán na databázový server. Server SSH sedí uprostřed a předává provoz tam a zpět. K přístupu k databázovému serveru, jako by běžel na místním počítači, můžete použít jakýkoli příkazový řádek nebo grafický nástroj.

Chcete-li použít místní předávání, připojte se normálně k serveru SSH, ale také zadejte -Largument. Syntaxe je:

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

Řekněme například, že databázový server ve vaší kanceláři se nachází v kancelářské síti na adrese 192.168.1.111. Máte přístup k serveru SSH v kanceláři na adrese ssh.youroffice.coma váš uživatelský účet na serveru SSH je bob. V takovém případě by váš příkaz vypadal takto:

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

Po spuštění tohoto příkazu budete mít přístup k databázovému serveru na portu 8888 u localhost. Pokud tedy databázový server nabídl přístup na web, můžete k němu připojit // localhost: 8888 do svého webového prohlížeče. Pokud jste měli nástroj příkazového řádku, který potřebuje síťovou adresu databáze, nasměrovali byste jej na localhost: 8888. Veškerý provoz odeslaný na port 8888 ve vašem počítači bude tunelován na 192.168.1.111:1234 ve vaší kancelářské síti.

Je to trochu více matoucí, pokud se chcete připojit k serverové aplikaci běžící ve stejném systému jako samotný server SSH. Řekněme například, že máte server SSH spuštěný na portu 22 na vašem kancelářském počítači, ale máte také databázový server spuštěný na portu 1234 ve stejném systému na stejné adrese. Chcete přistupovat k databázovému serveru z domova, ale systém přijímá pouze připojení SSH na portu 22 a jeho brána firewall neumožňuje žádná další externí připojení.

V takovém případě můžete spustit příkaz jako následující:

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

Při pokusu o přístup k databázovému serveru na portu 8888 v aktuálním počítači bude přenos odeslán přes připojení SSH. Když dorazí na systém, na kterém běží server SSH, server SSH jej odešle na port 1234 na „localhost“, což je stejný počítač, na kterém běží samotný server SSH. „Localhost“ ve výše uvedeném příkazu tedy znamená „localhost“ z pohledu vzdáleného serveru.

Chcete-li to provést v aplikaci PuTTY ve Windows, vyberte Připojení> SSH> Tunely. Vyberte možnost „Místní“. Do pole „Zdrojový port“ zadejte místní port. Pro „Cíl“ zadejte cílovou adresu a port ve tvaru vzdálená_adresa: vzdálený_port.

Pokud byste například chtěli nastavit stejný tunel SSH jako výše, zadali byste 8888jako zdrojový port a localhost:1234jako cíl. Poté klikněte na „Přidat“ a poté kliknutím na „Otevřít“ otevřete připojení SSH. Samozřejmě budete muset před připojením samozřejmě také zadat adresu a port samotného serveru SSH na hlavní obrazovce „Session“.

Vzdálené předávání portů: Zpřístupněte místní zdroje ve vzdáleném systému

„Vzdálené přesměrování portů“ je opakem místního přesměrování a nepoužívá se tak často. Umožňuje vám zpřístupnit prostředek v místním počítači na serveru SSH. Řekněme například, že používáte webový server na místním počítači, před kterým sedíte. Váš počítač je však za bránou firewall, která neumožňuje příchozí přenosy na serverový software.

Za předpokladu, že máte přístup ke vzdálenému serveru SSH, můžete se k němu připojit a použít vzdálené přesměrování portů. Váš klient SSH řekne serveru, aby předal konkrétní port - řekněme port 1234 - na serveru SSH na konkrétní adresu a port v aktuálním počítači nebo místní síti. Když někdo přistupuje k portu 1234 na serveru SSH, bude tento provoz automaticky „tunelován“ přes připojení SSH. Každý, kdo má přístup k serveru SSH, bude mít přístup k webovému serveru spuštěnému ve vašem počítači. Toto je efektivní způsob tunelování přes brány firewall.

Chcete-li použít dálkové předávání, použijte sshpříkaz s -Rargumentem. Syntaxe je do značné míry stejná jako u místního přeposílání:

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

Řekněme, že chcete zpřístupnit serverovou aplikaci naslouchající na portu 1234 na místním počítači na portu 8888 na vzdáleném serveru SSH. Adresa serveru SSH je ssh.youroffice.coma vaše uživatelské jméno na serveru SSH je bob . Spustili byste následující příkaz:

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

Někdo by se pak mohl připojit k serveru SSH na portu 8888 a toto připojení by bylo tunelováno na serverovou aplikaci spuštěnou na portu 1234 v místním počítači, ze kterého jste navázali připojení.

Chcete-li to provést v PuTTY ve Windows, vyberte Připojení> SSH> Tunely. Vyberte možnost „Vzdálené“. Do pole „Zdrojový port“ zadejte vzdálený port. Pro „Cíl“ zadejte cílovou adresu a port ve tvaru local_address: local_port.

Pokud byste například chtěli nastavit výše uvedený příklad, zadali byste 8888jako zdrojový port a localhost:1234jako cíl. Poté klikněte na „Přidat“ a poté kliknutím na „Otevřít“ otevřete připojení SSH. Samozřejmě budete muset před připojením samozřejmě také zadat adresu a port samotného serveru SSH na hlavní obrazovce „Session“.

Lidé by se pak mohli připojit k portu 8888 na serveru SSH a jejich provoz by byl tunelován na port 1234 v místním systému.

Ve výchozím nastavení bude vzdálený server SSH poslouchat pouze připojení od stejného hostitele. Jinými slovy se budou moci připojit pouze lidé ve stejném systému jako samotný server SSH. Je to z bezpečnostních důvodů. Chcete-li toto chování přepsat, musíte povolit možnost „GatewayPorts“ v sshd_config na vzdáleném serveru SSH.

Dynamické přesměrování portů: Použijte svůj server SSH jako proxy

SOUVISEJÍCÍ: Jaký je rozdíl mezi VPN a proxy?

K dispozici je také „dynamické předávání portů“, které funguje podobně jako proxy nebo VPN. Klient SSH vytvoří proxy SOCKS, který můžete nakonfigurovat pro použití aplikací. Veškerý provoz odeslaný prostřednictvím serveru proxy by byl odeslán prostřednictvím serveru SSH. Toto je podobné jako místní předávání - přebírá místní provoz odesílaný na konkrétní port vašeho počítače a odesílá jej přes připojení SSH do vzdáleného umístění.

SOUVISEJÍCÍ: Proč může být používání veřejné Wi-Fi sítě nebezpečné, i když přistupujete k šifrovaným webům

Řekněme například, že používáte veřejnou síť Wi-Fi. Chcete procházet bezpečně, aniž byste byli sledováni. Pokud máte doma přístup k serveru SSH, můžete se k němu připojit a použít dynamické předávání portů. Klient SSH vytvoří na vašem PC proxy SOCKS. Veškerý provoz odeslaný tomuto proxy bude odeslán přes připojení k serveru SSH. Nikdo, kdo sleduje veřejnou síť Wi-Fi, nebude moci sledovat vaše procházení ani cenzurovat webové stránky, na které máte přístup. Z pohledu všech navštívených webových stránek to bude, jako byste seděli před počítačem doma. To také znamená, že tento trik můžete použít pro přístup k webům pouze v USA, když jste mimo USA - samozřejmě za předpokladu, že máte přístup k serveru SSH v USA.

Jako další příklad můžete použít přístup k aplikaci serveru médií, kterou máte ve své domácí síti. Z bezpečnostních důvodů můžete mít pouze server SSH vystavený internetu. Nepovolujete příchozí připojení z Internetu k aplikaci mediálního serveru. Můžete nastavit dynamické předávání portů, nakonfigurovat webový prohlížeč tak, aby používal proxy SOCKS, a poté přistupovat k serverům běžícím ve vaší domácí síti prostřednictvím webového prohlížeče, jako byste seděli před vaším systémem SSH doma. Pokud je například váš server médií umístěn na portu 192.168.1.123 ve vaší domácí síti, můžete adresu připojit k 192.168.1.123libovolné aplikaci pomocí proxy SOCKS a přistupovat k mediálnímu serveru, jako byste byli v domácí síti.

Chcete-li použít dynamické předávání, spusťte příkaz ssh s -Dargumentem, například:

ssh -D local_port [email protected]

Řekněme například, že máte přístup k serveru SSH na adrese ssh.yourhome.coma vaše uživatelské jméno na serveru SSH je bob. Chcete použít dynamické předávání k otevření serveru SOCKS proxy na portu 8888 na aktuálním počítači. Spustili byste následující příkaz:

ssh -D 8888 [email protected]

Potom můžete nakonfigurovat webový prohlížeč nebo jinou aplikaci tak, aby používala vaši místní IP adresu (127.0.01) a port 8888. Veškerý provoz z této aplikace by byl přesměrován tunelem.

Chcete-li to provést v PuTTY ve Windows, vyberte Připojení> SSH> Tunely. Vyberte možnost „Dynamický“. Do pole „Zdrojový port“ zadejte místní port.

Pokud byste například chtěli vytvořit proxy SOCKS na portu 8888, zadali byste 8888jako zdrojový port. Poté klikněte na „Přidat“ a poté kliknutím na „Otevřít“ otevřete připojení SSH. Samozřejmě budete muset před připojením samozřejmě také zadat adresu a port samotného serveru SSH na hlavní obrazovce „Session“.

Poté můžete nakonfigurovat aplikaci pro přístup k proxy serveru SOCKS na místním počítači (tj. IP adresa 127.0.0.1, která odkazuje na místní počítač) a zadat správný port.

SOUVISEJÍCÍ: Jak nakonfigurovat proxy server ve Firefoxu

Můžete například nakonfigurovat Firefox tak, aby používal proxy SOCKS. To je obzvláště užitečné, protože Firefox může mít vlastní nastavení serveru proxy a nemusí používat nastavení serveru v celém systému. Firefox odešle svůj provoz přes tunel SSH, zatímco ostatní aplikace budou vaše připojení k internetu používat běžně.

Pokud to děláte ve Firefoxu, vyberte „Ruční konfigurace proxy“, do pole Hostitel SOCKS zadejte „127.0.0.1“ a do pole „Port“ zadejte dynamický port. Pole HTTP Proxy, SSL Proxy a FTP Proxy nechte prázdná.

Tunel zůstane aktivní a otevřený, dokud máte otevřené připojení relace SSH. Když ukončíte relaci SSH a odpojíte se od serveru, bude také uzavřen tunel. Stačí znovu připojit pomocí příslušného příkazu (nebo příslušných možností v PuTTY) a znovu otevřít tunel.