Protokół tunelowania - Tunneling protocol

W sieciach komputerowych , wykorzystując protokół tunelowania jest protokół komunikacyjny , który pozwala na przepływ danych z jednej sieci do innej. Polega ona na umożliwieniu przesyłania komunikacji w sieci prywatnej przez sieć publiczną (taką jak Internet ) w procesie zwanym hermetyzacją .

Ponieważ tunelowanie obejmuje przepakowywanie danych ruchu do innej postaci, być może ze standardowym szyfrowaniem , może ukryć charakter ruchu przechodzącego przez tunel.

Protokół tunelowania działa na zasadzie wykorzystania części danych pakietu ( ładunku ) do przenoszenia pakietów, które faktycznie świadczą usługę. Tunelowanie wykorzystuje warstwowy model protokołów, taki jak te z OSI lub zestawu protokołów TCP / IP , ale zwykle narusza warstwowanie, gdy używa się ładunku do przenoszenia usługi, która normalnie nie jest świadczona przez sieć. Zwykle protokół dostarczania działa na poziomie równym lub wyższym w modelu warstwowym niż protokół ładunku.

Używa

Protokół tunelowania może, na przykład, pozwolić na działanie obcego protokołu w sieci, która nie obsługuje tego konkretnego protokołu, na przykład IPv6 przez IPv4 .

Innym ważnym zastosowaniem jest świadczenie usług, które są niepraktyczne lub niebezpieczne przy użyciu tylko podstawowych usług sieciowych, takich jak udostępnianie adresu sieci firmowej użytkownikowi zdalnemu, którego fizyczny adres sieciowy nie jest częścią sieci firmowej.

Omijanie zasad zapory

Użytkownicy mogą również używać tunelowania do „przemykania się” przez firewall, używając protokołu, który zapora normalnie by blokował, ale „opakowanego” w protokół, którego nie blokuje firewall, na przykład HTTP . Jeśli zasada zapory konkretnie nie wyklucza tego rodzaju „zawijania”, ta sztuczka może pomóc w obejściu zamierzonej zasady zapory (lub dowolnego zestawu powiązanych ze sobą zasad zapory).

Inna metoda tunelowania oparta na protokole HTTP wykorzystuje metodę / polecenie HTTP CONNECT . Klient wysyła polecenie HTTP CONNECT do serwera proxy HTTP. Następnie proxy nawiązuje połączenie TCP z określonym serwerem: portem i przekazuje dane między tym serwerem: portem i połączeniem klienta. Ponieważ powoduje to lukę w zabezpieczeniach, serwery proxy HTTP obsługujące CONNECT zwykle ograniczają dostęp do metody CONNECT. Proxy zezwala na połączenia tylko z określonymi portami, na przykład 443 dla HTTPS.

Przegląd techniczny

Jako przykład warstwy sieciowej w warstwie sieciowej, Generic Routing Encapsulation (GRE), protokół działający przez IP ( numer protokołu IP 47), często służy do przenoszenia pakietów IP, z prywatnymi adresami RFC 1918 , przez Internet przy użyciu pakietów dostarczania z publicznym Adresy IP. W tym przypadku protokoły dostarczania i ładowania są takie same, ale adresy ładunku są niezgodne z adresami sieci dostarczania.

Możliwe jest również nawiązanie połączenia za pomocą warstwy łącza danych. Warstwa 2 protokołu tunelowania (L2TP) umożliwia transmisję ramek między dwoma węzłami. Tunel nie jest domyślnie szyfrowany: wybrany protokół TCP / IP określa poziom bezpieczeństwa.

SSH wykorzystuje port 22, aby umożliwić szyfrowanie danych przesyłanych przez sieć publiczną (taką jak Internet), zapewniając w ten sposób funkcjonalność VPN . IPsec ma tryb transportu od końca do końca, ale może również działać w trybie tunelowania przez zaufaną bramę bezpieczeństwa.

Aby zrozumieć konkretny stos protokołów narzucony przez tunelowanie, inżynierowie sieci muszą zrozumieć zarówno zestaw ładunków, jak i zestawy protokołów dostarczania.

Wspólne protokoły tunelowania

  • IP w IP (protokół 4): IP w IPv4 / IPv6
  • SIT / IPv6 (protokół 41): IPv6 w IPv4 / IPv6
  • GRE (protokół 47): Generic Routing Encapsulation
  • OpenVPN (port UDP 1194)
  • SSTP (port TCP 443): Secure Socket Tunneling Protocol
  • IPSec (protokół 50 i 51): zabezpieczenia protokołu internetowego
  • L2TP (protokół 115): protokół tunelowania warstwy 2
  • VXLAN (port UDP 4789): wirtualna rozszerzalna sieć lokalna.
  • WireGuard

Bezpieczne tunelowanie powłoki

Secure Shell (SSH) tunelu obejmuje zaszyfrowanego tunelu utworzonym przez protokół ssh połączenia. Użytkownicy mogą skonfigurować tunele SSH, aby przesyłać niezaszyfrowany ruch przez sieć za pośrednictwem zaszyfrowanego kanału. Jest to oparte na oprogramowaniu podejście do bezpieczeństwa sieci, którego wynikiem jest przejrzyste szyfrowanie.

Na przykład komputery z systemem Microsoft Windows mogą udostępniać pliki przy użyciu protokołu Server Message Block (SMB), który jest protokołem niezaszyfrowanym. Gdyby ktoś zdalnie zamontował system plików Microsoft Windows przez Internet, ktoś szpiegujący połączenie mógłby zobaczyć przesłane pliki. Aby bezpiecznie zamontować system plików Windows, można ustanowić tunel SSH, który kieruje cały ruch SMB do zdalnego serwera plików przez zaszyfrowany kanał. Mimo że sam protokół SMB nie zawiera szyfrowania, zaszyfrowany kanał SSH, przez który przechodzi, zapewnia bezpieczeństwo.

Lokalne i zdalne przekierowanie portów z ssh wykonanym na niebieskim komputerze.

Po nawiązaniu połączenia SSH tunel rozpoczyna się od nasłuchiwania protokołu SSH na porcie w    host zdalny lub lokalny. Wszelkie połączenia z nim są przekazywane do określonego    adres i port pochodzący z    host przeciwny (zdalny lub lokalny, jak poprzednio).

Tunelowanie ładunku hermetyzującego TCP (takiego jak PPP ) przez połączenie oparte na protokole TCP (na przykład przekierowanie portu SSH) jest znane jako „TCP-over-TCP” i może to spowodować dramatyczną utratę wydajności transmisji (znany problem jako „topienie TCP”), dlatego oprogramowanie wirtualnej sieci prywatnej może zamiast tego używać protokołu prostszego niż TCP dla połączenia tunelowego. Jednak często nie stanowi to problemu podczas korzystania z przekierowania portów OpenSSH, ponieważ wiele przypadków użycia nie obejmuje tunelowania TCP przez TCP; topnienia unika się, ponieważ klient OpenSSH przetwarza lokalne połączenie TCP po stronie klienta, aby dostać się do rzeczywistego ładunku, który jest wysyłany, a następnie wysyła ten ładunek bezpośrednio przez własne połączenie TCP tunelu na stronę serwera, gdzie OpenSSH serwer podobnie „rozpakowuje” ładunek, aby „opakować” go ponownie i skierować do miejsca docelowego. Oczywiście to owijanie i odwijanie zachodzi również w odwrotnym kierunku tunelu dwukierunkowego.

Tunele SSH umożliwiają ominięcie zapór ogniowych, które blokują określone usługi internetowe - o ile witryna zezwala na połączenia wychodzące. Na przykład organizacja może zabronić użytkownikowi dostępu do stron internetowych (port 80) bezpośrednio bez przechodzenia przez filtr proxy organizacji (który zapewnia organizacji środki monitorowania i kontrolowania tego, co użytkownik widzi w sieci). Jednak użytkownicy mogą nie chcieć, aby ich ruch internetowy był monitorowany lub blokowany przez filtr proxy organizacji. Jeśli użytkownicy mogą połączyć się z zewnętrznym serwerem SSH , mogą utworzyć tunel SSH, aby przekierować dany port na ich komputerze lokalnym do portu 80 na zdalnym serwerze internetowym. Aby uzyskać dostęp do zdalnego serwera WWW, użytkownicy wskazywaliby swoją przeglądarkę na lokalny port pod adresem http: // localhost /

Niektórzy klienci SSH obsługują dynamiczne przekierowanie portów, które umożliwia użytkownikowi utworzenie proxy SOCKS 4/5. W takim przypadku użytkownicy mogą skonfigurować swoje aplikacje do korzystania z lokalnego serwera proxy SOCKS. Daje to większą elastyczność niż tworzenie tunelu SSH do pojedynczego portu, jak opisano wcześniej. SOCKS może uwolnić użytkownika od ograniczeń łączenia się tylko z predefiniowanym zdalnym portem i serwerem. Jeśli aplikacja nie obsługuje SOCKS, można użyć proxy do przekierowania aplikacji na lokalny serwer proxy SOCKS. Niektóre proxy, takie jak Proxycap, obsługują bezpośrednio SSH, unikając w ten sposób potrzeby klienta SSH.

W ostatnich wersjach OpenSSH dozwolone jest nawet tworzenie tuneli warstwy 2 lub warstwy 3, jeśli oba końce mają takie możliwości tunelowania. Tworzy to tun (warstwa 3, domyślna) lub tap (warstwa 2) wirtualne interfejsy na obu końcach połączenia. Pozwala to na użycie normalnego zarządzania siecią i routingu, a gdy jest używany na routerach, ruch w całej podsieci może być tunelowany. Para tap wirtualnych interfejsów działa jak kabel Ethernet łączący oba końce połączenia i może łączyć mosty jądra.

Zobacz też

Bibliografia

Ten artykuł jest oparty na materiałach zaczerpniętych z Free On-line Dictionary of Computing przed 1 listopada 2008 i włączonych na warunkach „ponownego licencjonowania” GFDL , wersja 1.3 lub nowsza.

Zewnętrzne linki