Tunelowanie SSH i Proxy (SOCKS)

Wstęp

Samo SSH (ang. Secure Shell - Bezpieczna konsola) służy do podłączenia się do innego komputera zwanego serwerem SSH w taki sposób, że osoba podsłuchująca ruch nie będzie w stanie odczytać transmisji. Jednakże w szerszym znaczeniu SSH[en] pozwala na wiele innych funkcji.

W tym wpisie zajmę się jedną z rozszerzonych funkcji SSH szczególnie przydatną w wielu sytuacjach. Funkcja ta nazywa się przekierowywaniem portów, a w naszym zastosowaniu tunelem SSH.

Jakie korzyści?

Kilka przykładów sytuacji w których możemy skorzystać z tunelowania SSH:

  • Jesteśmy podpięci do sieci w której dostawca blokuje dostęp do stron Ja dla przykładu wykorzystywałem tunelowanie przez SSH będąc w Niemczech na wycieczce, gdzie autorzy filmów na youtube blokowali oglądanie ich filmów. Wtedy tunelowałem się przez serwer SSH z mojej uczelni.
  • Pracodawca blokuje dostęp z sieci wewnętrznej do różnych zasobów (stron, filmów, streamingów)
  • Jesteśmy podłączeni do publicznej sieci bezprzewodowej i chcemy być bezpieczniejsi (uwaga na marginesie: jeżeli sieć jest niezabezpieczona hasłem transmisja pomiędzy laptopem, a punktem dostępowym nie jest szyfrowana. Z tego powodu lepiej się łączyć z sieciami zamkniętymi do których znamy hasło niż do sieci otwartych)

Co potrzebujemy?

  1. Po pierwsze, najważniejsze i najtrudniejsze: serwera SSH, czyli komputera, który będzie w stanie z Internetu odebrać nasze połączenie. Jest wiele miejsc, w których można dostać taki dostęp. Ja na przykład mam taki dostęp na swoim domowym serwerku, na uczelni, w pracy i na koncie od mojego dostawcy hostingu.
  2. Zainstalowany program obsługujący SSH. Ja w tym wpisie będę używał otwartego i wolnego OpenSSH. 
  3. Program, który chcemy tunelować, a który będzie obsługiwał protokół SOCKS. Ja w tym wpisie będę pokazywał na przykładzie przeglądarki Firefox.

Rozwiązanie przypadku

Opis przypadku

Zaproponuję rozwiązanie przypadku, w którym często podłączamy się do niezabezpieczonych sieci, do których nie mamy zaufania. Nasz serwer SSH znajduje się w naszym domu i mamy zaufanie do sieci w której on się znajduje.

Podstawowe rozwiązanie

Wystarczy zrobić dwa kroki. Po pierwsze musimy przekierować port lokalny na zdalny port naszego serwera. Mówiąc prościej port lokalny to początek jednej z wielu rur, którą dla uproszczenia sobie ponumerowaliśmy i sprawiamy by koniec tej rury był przyczepiony do naszego serwera. W OpenSSH dokonujemy tego poleceniem: