Android

Jak nastavit ssh tunneling (port forwarding)

Seminář IPv6 2017 – Ondřej Caletka – BCOP aneb jak nejlépe IPv6 nasazovat

Seminář IPv6 2017 – Ondřej Caletka – BCOP aneb jak nejlépe IPv6 nasazovat

Obsah:

Anonim

Tunelování SSH nebo předávání portů SSH je metoda vytváření šifrovaného spojení SSH mezi klientem a serverovým strojem, prostřednictvím kterého lze přenášet porty služeb.

Předávání SSH je užitečné pro přenos síťových dat služeb, které používají nešifrovaný protokol, jako je VNC nebo FTP, pro přístup k obsahu s omezeným přístupem nebo obcházení přechodných bran firewall. V zásadě můžete přesměrovat libovolný port TCP a tunelovat provoz prostřednictvím zabezpečeného připojení SSH.

Existují tři typy předávání portů SSH:

  • Přesměrování místních portů. - Přeposílá spojení z hostitele klienta k hostiteli serveru SSH a poté k cílovému portu hostitele. - Přeposílá port z hostitele serveru na hostitele klienta a poté do cílového portu hostitele.Dynamické předávání portů. - Vytvoří proxy server SOCKS, který umožňuje komunikaci přes řadu portů.

, budeme hovořit o tom, jak nastavit místní, vzdálené a dynamické šifrované tunely SSH.

Přesměrování místních portů

Lokální přeposílání portů umožňuje přeposlat port na lokálním (ssh klientském) počítači na port na vzdáleném (ssh server) stroji, který je pak přeposlán na port na cílovém počítači.

Při tomto typu předávání poslouchá klient SSH na daném portu a tuneluje jakékoli připojení k tomuto portu na určený port na vzdáleném serveru SSH, který se poté připojí k portu na cílovém počítači. Cílovým strojem může být vzdálený server SSH nebo jakýkoli jiný stroj.

Lokální předávání portů se většinou používá pro připojení ke vzdálené službě v interní síti, jako je například databáze nebo server VNC.

V Linuxu, macOS a dalších unixových systémech pro vytvoření lokálního předávání portů předejte volbu -L klientovi ssh :

ssh -L LOCAL_PORT:DESTINATION:DESTINATION_PORT SSH_SERVER

Používané možnosti jsou následující:

  • LOCAL_PORT - ip lokálního počítače a číslo portu. Když je LOCAL_IP vynechán, ssh klient se váže na localhost. DESTINATION:DESTINATION_PORT - IP nebo název hostitele a port cílového počítače. SERVER_IP - IP adresa vzdáleného uživatele a serveru SSH.

Jako LOCAL_PORT můžete použít libovolné číslo portu větší než 1024 . Čísla portů menší než 1024 jsou privilegované porty a mohou být použity pouze rootem. Pokud váš server SSH poslouchá na jiném portu než 22 (výchozí), použijte volbu -p .

Cílový název hostitele musí být rozlišitelný ze serveru SSH.

Řekněme, že máte databázový server MySQL spuštěný na stroji db001.host na interní (soukromé) síti, na portu 3306, který je přístupný z počítače pub001.host a chcete se připojit pomocí místního počítače mysql k databázovému serveru. Chcete-li tak učinit, můžete předat připojení následujícím způsobem:

ssh -L 3336:db001.host:3306 [email protected]

Po spuštění příkazu budete vyzváni k zadání hesla uživatele vzdáleného SSH. Po jeho zadání budete přihlášeni ke vzdálenému serveru a bude vytvořen tunel SSH. Je vhodné nastavit autentizaci pomocí klíče SSH a připojit se k serveru bez zadání hesla.

Nyní, pokud db001.host:3306 svého databázového klienta místního počítače na 127.0.0.1:3336 , bude připojení přesměrováno na server MySQL db001.host:3306 prostřednictvím počítače pub001.host který bude fungovat jako přechodný server.

Jediným příkazem ssh můžete přesměrovat více portů na více cílů. Například máte na počítači db002.host spuštěn další databázový server MySQL a chcete se připojit k oběma serverům prostřednictvím místního klienta, kterého byste spustili:

ssh -L 3336:db001.host:3306 3337:db002.host:3306 [email protected]

Pro připojení k druhému serveru byste použili 127.0.0.1:3337 .

Pokud je cílový hostitel stejný jako server SSH místo určení cílové IP hostitele nebo názvu hostitele, můžete použít localhost .

Řekněme, že se musíte připojit ke vzdálenému počítači prostřednictvím VNC, který běží na stejném serveru a není přístupný zvnějšku. Příkaz, který byste použili, je:

ssh -L 5901:127.0.0.1:5901 -N -f [email protected]

Volba -f říká příkazu ssh aby se spouštěl na pozadí, a aby neprovedl vzdálený příkaz. Používáme localhost protože VNC a SSH server běží na stejném hostiteli.

Vzdálené předávání portů

Vzdálené přeposílání portů je opakem předávání lokálních portů. Umožňuje předat port na vzdáleném počítači (ssh server) na port na místním počítači (ssh klient), který je poté přeposlán na port na cílovém počítači.

V tomto typu předávání server SSH poslouchá na daném portu a tuneluje jakékoli připojení k tomuto portu na určený port v místním klientovi SSH, který se poté připojí k portu v cílovém počítači. Cílovým strojem může být místní nebo jakýkoli jiný stroj.

V Linuxu, macOS a dalších unixových systémech pro vytvoření vzdáleného předávání portů předejte možnost -R ssh klientovi:

ssh -R REMOTE_PORT:DESTINATION:DESTINATION_PORT SSH_SERVER

Používané možnosti jsou následující:

  • REMOTE_PORT - IP a číslo portu na vzdáleném SSH serveru. Prázdný REMOTE znamená, že vzdálený server SSH se naváže na všechna rozhraní. DESTINATION:DESTINATION_PORT - IP nebo název hostitele a port cílového počítače. SERVER_IP - IP adresa vzdáleného uživatele a serveru SSH.

Lokální přesměrování portů se většinou používá k poskytnutí přístupu k interní službě někomu zvnějšku.

Řekněme, že vyvíjíte webovou aplikaci na místním počítači a chcete ukázat náhled svému kolegovi vývojáři. Nemáte veřejnou IP, takže druhý vývojář nemá přístup k aplikaci přes internet.

ssh -L 8080:127.0.0.1:3000 -N -f [email protected]

Výše uvedený příkaz způsobí, že server ssh poslouchá na portu 8080 a naladí veškerý provoz z tohoto portu na místní počítač na portu 3000 .

Nyní váš partnerský vývojář může do svého prohlížeče zadat the_ssh_server_ip:8080 a zobrazit náhled své úžasné aplikace.

Dynamické předávání portů

Dynamické předávání portů vám umožňuje vytvořit soket na místním (ssh klientském) počítači, který funguje jako proxy server SOCKS. Když se klient připojí k tomuto portu, je připojení přeposláno na vzdálený (ssh server) stroj, který je pak přeposlán na dynamický port na cílovém počítači.

Tímto způsobem se všechny aplikace používající proxy serveru SOCKS připojí k serveru SSH a server přesměruje veškerý provoz do svého skutečného cíle.

V Linuxu, macOS a dalších Unixových systémech pro vytvoření dynamického předávání portů (SOCKS) předejte volbu -D klientovi ssh :

ssh -D LOCAL_PORT SSH_SERVER

Používané možnosti jsou následující:

  • LOCAL_PORT - ip lokálního počítače a číslo portu. Když je LOCAL_IP vynechán, ssh klient se váže na localhost. SERVER_IP - IP adresa vzdáleného uživatele a serveru SSH.

Typickým příkladem dynamického předávání portů je vyladění provozu webového prohlížeče prostřednictvím serveru SSH.

Následující příkaz vytvoří tunel SOCKS na portu 9090 :

ssh -D 9090 -N -f [email protected]

Po vytvoření tunelování můžete nakonfigurovat aplikaci tak, aby ji používala. Tento článek vysvětluje, jak nakonfigurovat prohlížeče Firefox a Google Chrome pro použití proxy serveru SOCKS.

Předávání portů musí být nakonfigurováno samostatně pro každou aplikaci, kterou chcete tunel provozovat.

Nastavte SSH Tunneling ve Windows

Uživatelé Windows mohou vytvářet tunely SSH pomocí klienta PuTTY SSH. Zde si můžete stáhnout PuTTY.

  1. Spusťte Putty a do pole Host name (or IP address) zadejte IP adresu serveru SSH.

    Zobrazí se nové okno s požadavkem na uživatelské jméno a heslo. Po zadání uživatelského jména a hesla budete přihlášeni k serveru a bude spuštěn tunel SSH.

    Nastavení ověřování pomocí veřejného klíče vám umožní připojit se k serveru bez zadání hesla.

Závěr

Ukázali jsme vám, jak nastavit tunely SSH a předat provoz pomocí zabezpečeného připojení SSH. Pro snadné použití můžete v konfiguračním souboru SSH definovat tunel SSH nebo vytvořit alias Bash, který vytvoří tunel SSH.

ssh zabezpečení