Tunelowanie połączenia przez SSH

Z Podręcznik Administratora by OPZ SGU
Przejdź do nawigacji Przejdź do wyszukiwania

Wiadomo jak to jest w dzisiejszym świecie, bezpieczeństwo jest kluczowym aspektem. Są usługi i aplikacje które natywnie nie wspierają enkrypcji, przez co ich upublicznienie na świat jest zbyt niebezpieczne. Jak zapewne każdy zainteresowany wie, to fakt że tunelowanie można wykorzystać również w celu omijania firewalli, restrykcji administratorów (np w przeglądaniu określonych stron www).


Tunelowanie z powodzeniem może wykorzystać dosłownie każdy, od użytkowników Windows (putty) po konsolo-wców Debiana.


Przykładem "pożytecznego" wykorzystania tunelowania będzie zabezpieczenie sesji VNC.

ssh -L 5901:localhost:5901 root@192.168.0.45


Poprawne tunelowanie VNC

Komenda ta spowoduje otwarcie lokalnego portu 5901 i przetransferowanie go, na port (localhost:5901) na serwerze zdalnym o adresie IP 192.168.0.45 użytkownik root.

(nazwa localhost jest myląca i oznacza komputer lokalny względem maszyny zalogowanej) Jeżeli serwer VNC stoi na innej maszynie niż komputer na którym jest SSH, wydajemy komendę


ssh -L 5901:192.168.0.152:5901 root@192.168.0.45
  • 192.168.0.152 - to komputer gdzie stoi serwer VNC w lanie razem z maszyna SSH.

Teraz, jako użytkownik, logujemy się poprzez localhost:1 (nasz ruch, zostanie przesłany poprzez zaszyfrowany tunel do serwera).

Analogicznie wygląda to w przypadku SMTP, POP3, TELNET oraz innych podstawowych usług. Ta sama komenda, zmieniamy tylko porty.




Proxy czyli szyfrowanie ruchu HTTP (SOCKS) :)

Do utworzeniu tunelu typu SOCKS użyjemy parametru -D

ssh root@192.168.0.45 -D 8888
Firefox oraz SOCKS

Spowoduje to, że ruch puszczony na nasz lokalny port 8888 przedostanie się przez SOCKS na świat, za pośrednictwem naszego serwera.

Jest to doskonała kwestia, jeżeli chcemy zalogować się do banku, firmowej strony www, poczty itp. wiedząc że korzystamy z publicznej sieci !

Dzięki temu zabiegowi, nasz ruch z serwera do użytkownika będzie całkowicie zaszyfrowany i niedostępny dla potencjalnego ciekawskiego :).


SOCKS można wykorzystać nie tylko do HTTP ale i każdej innej aplikacji która wspiera taką opcję czyli może to być nawet Kadu :)





Reverse tunel

Webmin przez reverse tunel

Odwrotność tunelu powyższego, ten pozwala nam na udostępnienie lokalnego portu, komputerowi (lub sieci komputerów) na którym się zalogujemy.


Dzięki temu, mając wewnętrzny adres IP, możemy komuś udostępnić zdalnie pulpit (RDC) (VNC) oraz dowolną inną usługę.


Komenda

 ssh -R 7777:localhost:10000 root@192.168.0.45

Mamy tutaj odwrotną sytuację niż powyższa ponieważ:

  • 7777 - to port docelowy jaki ma zostać otwarty na serwerze
  • localhost:10000 - port lokalny na komputerze z którego się logujemy

Radzę spojrzeć na zdjęcie po prawej stronie, rozwieje ono wątpliwości.