SSH přes http proxy – nastavení, tunely

autor - Dub.03, 2008 - Linux

Nacházíte se v počítačové síti, která je od internetu oddělena http proxy, jsou povoleny pouze některé porty (např. pouze pro prohlížení webu: 80 pro http a 443 pro https) a přesto byste se rádi připojili na svůj domácí počítač (SSH, NX), případně nemáte zájem, aby provozovatel věděl, jaké webové stránky prohlížíte?

Topologie:

  • domácí počítač s linuxem se nachází v lokální síti u vás doma, běží na něm OpenSSH server a můžete se na něj přihlásit uživatelským jménem „pepa“ a heslem „pepicek“.
  • domácí síť je k internetu připojena routerem, jež má přidělenu veřejnou IP adresu 82.82.82.82
  • pracovní počítač s Window XP se nachází v síti chráněné http proxy s otevřenými porty 80 a 443. Proxy má adresu 194.168.0.254, naslouchá na portu 8080 a vaše přihlašovací jméno je „novak“ a heslo „heslicko“, jste bez administrátorských práv. Proxy zjistíte třeba z Internet Exploreru – Nastavení připojení.

SSH připojení na domácí počítač

Nastavení domácí sítě a počítače:

  • SSH server na domácím počítači naslouchající na portu 443. (Viz /etc/ssh/sshd_config, parametr „ListenAddress 443“. Pokud chcete nadále umožnit i připojení na obvyklém portu 22, ponechte na samostatném řádku i „ListenAddress 22“.)
  • Otevření příchozí komunikace na portu 443 na firewallu (jak routeru, tak i domácího počítače).
  • Přesměrování komunikace na portu 443 z internetu na domácí počítač – tj. nastavit NAT na routeru.

Nastavení pracovního počítače:

  • Nainstalujte OpenSSH klienta a corkscrew – instalaci provedete během instalačního průvodce cygwin, není nutné nic kompilovat.
  • Nastavte konfiguraci pro OpenSSH připojení na domácí počítač v souboru ~/.ssh/config:
    Host doma
    Hostname 82.82.82.82
    Port 443
    ProxyCommand /usr/bin/corkscrew 194.100.0.254 8080 %h %p ~/.ssh/credentials
    User pepa
  • Corkscrew zajistí „protažení“ SSH komunikace přes http proxy v pracovní počítačové síti. K tomu potřebuje znát přístupové údaje do pracovní sítě (obvykle shodné s proxy). Uložte je do souboru ~/.ssh/credentials:
    novak:heslicko

Samotné přihlášení je již klasické:

$ ssh doma

a po přijetí fingerprintu vašeho domácího serveru a zadání hesla „pepicek“ jste doma.

Z pohledu http proxy v síti, ve které je připojen pracovní počítač, to vypadá, jako když máte otevřené zabezpečené webové stránky na adrese 82.82.82.82. Pokud ponecháte terminál shellu delší dobu bez povšimnutí, je možné, že dojde k přerušení spojení – za to může http proxy. Obejdete to spuštěním například programu „top“ na domácím počítači v okně shellu.

Vzdálený přístup s grafickým rozhrazním – NX server a klient

Pokud Vás příkazová řádka zabezpečeného shellu již omrzela a chtěli byste běžné přihlášení do grafického prostředí Gnome, tak OpenSSH pomůže i se spojením mezi NX klientem a serverem na domácím počítači.

Nastavení domácího počítače je shodné jako v předchozí situaci, pouze nainstalujte nxserver, nxnode a nxclient od fy NoMachine. Vyzkoušejte přihlášení na NX server z jiného počítače v domácí síti programem NX klient (ať už z MS Windows nebo linuxu).

Nastavení pracovního počítače

  • je shodné jako v předchozí situaci, pouze nainstalujte NX klienta pro Windows. Ujistěte se, že NX klient používá správný soukromý klíč NX serveru (uložený na domácím počítači v /usr/NX/share/keys/server.id_dsa.key).
  • Do výše uvedeného konfiguračního souboru ~/.ssh/config doplňte údaje k vytvoření šifrovaného tunelu pro NX klienta pro připojení na domácí počítač. Nový parametr LocalForward způsobí, že váš pracovní počítač bude naslouchat na portu 10022 a příchozí komunikaci přesměruje na váš domací počítač (doslova na localhost z pohledu domácího počítače). Nezkoušejte nahradit localhost přímo veřejnou IP adresou 82.82.82.82 – počítač je za NATem a takto by se nepodařilo vytvořit zpětné spojení z domácího počítače na domácí počítač.
    Host doma.nx
    Hostname 82.82.82.82
    Port 443
    ProxyCommand /usr/bin/corkscrew 194.100.0.254 8080 %h %p ~/.ssh/credentials
    User pepa
    LocalForward 10022:localhost:22

A teď už jen zbývá nejprve aktivovat tunel (z pohledu uživatele se otevře shell na domácím počítači a nic zvláštního se nestane. Neodhlašujte se, dokud neukončíte spojení s NX serverem):

$ ssh doma.nx

a jako hostname v NX klientu uveďte localhost a port 10022.

Pokud se nezdaří, ověřte, že pracovní počítač naslouchá na portu 10022 (příkaz „netstat -a“), zkuste se připojit ssh přes vytvořený tunel místo přes proxy dle předchozí situace (příkaz „ssh -p 10022 pepa@localhost“) a případně použijte přepínač „-v“ pro zobrazení debug informací.

Vytvoření http proxy na domácím počítači

Vytvořený SSH tunel přes http proxy můžete použít i přímo pro brouzdání po webu – ssh tunel zajistí, že tato aktivita zůstane skryta před logovacími schopnostmi http proxy v pracovní počítačové síti (tedy až na fakt, že bude vidět aktivní připojení na váš domácí počítač).

Zbývá pouze nainstalovat na vašem domácím počítači další http proxy, tentokrát pod vaší kontrolou, která bude požadavky přesměrovávat do internetu. Tok informací bude následovný: prohlížeč na pracovním počítači — šifrování pomocí ssh a vytvoření tunelu — pracovní http proxy — ssh server na domácím počítač — http proxy na domácím počítači — webový server na internetu.

… bude doplněno později …

:

Komentáře: 2

  • Milan Knížek

    Pokud se ptáte na část ohledně http proxy, tak zatím spíše ne. Důvody jsou dva: a) chci-li brouzdat, používám vzdálené připojení přímo na domácí počítač (přes NX od NoMachine); b) mám ADSL s pouze 256 kbps uploadem. Při „synchronním“ download/upload je to prakticky ještě významně pomalejší (což je vlastnost ADSL).
    Jinými slovy, http proxy doma nevyužiju.

  • radim

    Super článek… Bude pokračování?

Zanechte komentář

Archivy