IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

3. diel - SSH - TCP tunelovanie

V predchádzajúcich dieloch sme si vyskúšali základné konfiguráciu SSH servera aj klienta a ako nadviazať spojenie. Čo poznáme teoreticky stačí na bežné použitie, bola by však škoda nevyužiť niektoré pokročilé možnosti. Dnes sa pozrieme na tunelovanie .. Ak používate Cygwin, použite návody pre Linux.

Tcp Tunelovanie

Zatiaľ sme SSH používali len na pripojenie k serveru - ako terminál. Okrem toho môžeme ale SSH server využiť aj ako tzv. Tunel. V praxi to znamená, že všetky prenosy vykonané skrze tunel nepôjdu priamo k cieľu, ale najprv na SSH server. Ukážeme si to na príklade odoslanie dát. Chceme poslať dáta na nejaký server .. Ak to urobíme cez tunel, dáta sa v skutočnosti pošlú prvýkrát na SSH server (teda v zašifrovanej podobe) a až potom budú odoslaná na cieľový server.

Tunel je realizovaný presmerovaním portov (port forwarding), ale možno ho tiež využiť v kombinácii so SOCKS proxy (o tom neskôr). Port forwarding, ako už názov napovedá, v praxi znamená, že pošlem dáta portom A na SSH server a ten ich prepošle na cieľový server na port B. Možno ho bez problému nastaviť pre oba smery a mať tak plnohodnotný tunel.

A k čomu vlastne to TCP tunelovanie je? Spomenul by som dve situácie ... Po prvé. Nie je vôbec neobvyklé, že zamestnávateľ / škola blokujú určité servery, popr. rovno celé porty. Alebo prevádzka sledujú a prístup k určitým službám môže byť tvrdo penalizovaný. Čo s tým? My už odpoveď poznáme .. Jednoducho si komunikáciu presmerujeme cez nejaký SSH server. Je zakázaný port 12451 (čo môže byť napríklad port nejaké hry)? Nevadí - pošleme si to treba cez 16455. Toto sa navyše zle sleduje a blokuje, takže to väčšina správcov vôbec nerieši. Druhá situácia je použitie verejného pripojenia - napríklad niekde v kaviarni. Nikdy neviete, kto počúva (a odposlechnout dáta z verejnej siete je otázka chvíľky). Použitím tunela si vlastne vytvoríme šifrované spojenie a podstatne tým zvýšime bezpečnosť dát, ktoré chceme preniesť.

Lokálny port forwarding

Presmerovanie lokálneho portu na vzdialený port. K použitiu je potrebné na SSH server nastaviť atribút AllowTcpForwarding.

Linux a Mac

Pre zapnutie lokálneho port forwarding, musíte pred príkaz ssh pridať prepínač -L. Tu je príklad príkazu:

$ ssh -L 9000:mailserver.com:25 remoteuser@remotehost

Príkaz presmeruje lokálny port 9000 na vzdialený port 25 servera mailserver.com. Teraz keď sa pripojíte v emailovom klientovi na svoj mailové konto na serveri mailserver.com, budú sa všetky maily odosielať (nie príjmať) cez šifrovaný tunel. Pamätajte, že na linuxových SSH serveroch nemôžete ako lokálne port (tu 9000) použiť bez rootovských práv port nižšia ako 1024.

Windows

V PuTTY bežte do sekcie SSH-> Tunnels. Do položky Source port zadajte lokálny port, do Destination server a port, na ktoré chcete presmerovať. Tunel vytvoríte kliknutím na Add a môžete ich vytvořet viac. Tunel sa otvára tlačidlom Open.

Ssh

Vzdialený port forwarding

Vzdialený port forwarding sa používa presne opačným spôsobom. Napríklad ste za routerom s NAT a potrebujete niekomu ukázať svoj výtvor, čo máte iba na lokálu. Môžete použiť práve vzdialený port forwarding. Port na SSH serveri sa použije ako forward port na váš lokálny port. Podmienka je explicitné povolenie na serveri (u OpenSSH voľba GatewayPorts).

Linux a Mac

Na Linuxe a Macu sa vzdialený port forwarding používa nasledujúcim spôsobom, prepínačom -R:

$ ssh -R 9000:localhost:80 remoteuser@remotehost

Teraz, keď v prehliadači zadáte URL http: // remotehost: 9000, zobrazí sa hlavná stránka vášho lokálneho HTTP servera (ak nejaký máte, ak nie, zobrazí sa chyba prehliadača). Zase ako u lokálneho port forwarding, prvá hodnota (tu 9000), nesmie byť bez root práv nižšia ako 1024.

Windows

V PuTTY bežte opäť do sekcie SSH-> Tunnels. Do položky Source port napíšte port, ktorý chcete použiť na vzdialenom serveri a do poľa Destination napíšte localhost: port, kde port nahraďte portom vašej lokálne služby, na ktorú sa bude presmerovávať. Dole zaškrtnite miesto Local Remote, a kliknite na Add.

Ssh

Socks Proxy

Jedná sa o transparentné HTTP forwarder, ktorý existuje na to, aby odovzdával sieťovú prevádzku medzi klientom a serverom. V zásade to funguje tak, že pošlete požiadavku na webovú stránku - ten ide ale prvýkrát na SSH server (skrze TCP tunel). SSH server potom pošle požiadavku na cieľový server a prijme odpoveď, ktorú zase odošle naspäť nám. Webovú stránku tak v zásade "prezerá" SSH server, ale obsah vidíme my. Je to jednoduchšie, než manuálne vytvárať tunel, ale je potreba podpora zo strany SSH servera. Nami používané OpenSSH ju má.

Linux a Mac

Tunelové SOCKS proxy vytvoríte príkazom:

$ ssh -D 9999 remoteuser@remotehost

Príkaz vytvorí tunelované SOCKS proxy na lokálnom porte 9999. Teraz si napríklad SOCKS proxy môžete nastaviť vo Firefoxe, a to s nastavením localhost na port 9999. Port môžete samozrejme ľubovoľne meniť.

Ssh

Windows

V PuTTY opäť bežte do sekcie SSH-> Tunnels. Do položky source port napíšte port SOCKS proxy, ktoré bude lokálne vytvorené. Zmeňte prepínač na Dynamic, a kliknite na Add. Potom sa môžete pripojiť. SOCKS proxy potom môžete nastaviť v Firefoxu, s detailmi localhost a portom, ktorým ste zadali v nastavení.

Ssh

Prehľad prepínačov

Dnes sme si ukázali tri nové prepínače SSH.

-L Local, vytvorenie lokálneho port forwarding
-R Remote, vytvorenie vzdialeného port forwarding
-D Dynamic, vytvorenie SOCKS proxy spojenia
Keď použijete príkazy, ktoré sme si ukázali, budú vypisovať otravné hlášky a otvárať nový shell, ktoré však pri vytváraní tunela nepotrebujeme. Našťastie exituje prepínače, ktoré toto nastavujú ..
-N neobjaví sa výzva na prihlásenie
-n zabráni čítanie znakov zo stdin
-T zabráni otvoreniu terminálu
Ideálne teda môžeme spúšťať príkazy nasledovne:
$ ssh -L -nNT 9000:mailserver.com:25 remoteuser@remotehost

Takto SSH vôbec neotvorí terminál ani nič nevypíše, len vykoná príkaz, čo sme chceli. Aby to fungovalo, musíte sa však autorizovať kľúčom (o tom si povieme nabudúce). Pokiaľ na server pristupujeme pomocou hesla, logicky ho musíme nejako zadať .. ;)

To je pre dnešok všetko. Nabudúce sa pozrieme na kľúče - čo to je, ako to funguje a na čo sa to dá použiť.


 

Predchádzajúci článok
Ssh - Inštalácia a nastavenie servera
Všetky články v sekcii
Ssh
Článok pre vás napísal Neaktivní uživatel
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Tento uživatelský účet již není aktivní na základě žádosti jeho majitele.
Aktivity