Tunele SSH: konfiguracja, wykorzystanie

Tunelowanie SSH to metoda transportu dowolnych danych sieciowych za pośrednictwem szyfrowanego połączenia SSH. Może być używany do dodawania zaszyfrowanych przestarzałych programów. Może również służyć do implementacji VPN (wirtualnych sieci prywatnych) i dostępu do usług intranetowych za pośrednictwem zapór ogniowych.

Wprowadzenie

Przesyłanie portów SSH tworzy bezpieczne połączenie między komputerem a maszyną zdalną, przez które można przesyłać usługi. Ponieważ połączenie jest szyfrowane, tunelowanie SSH jest przydatne do przesyłania informacji wykorzystujących niezaszyfrowany protokół taki jak IMAP, VNC lub IRC.


Tunel SSH systemu Windows wykorzystuje port 22 do zapewnienia szyfrowania danych przesyłanych przez sieć publiczną (np. Internet), zapewniając w ten sposób funkcje VPN. IPsec ma tryb tranzytowy, ale może również działać w trybie tunelowania przez bezpieczną bramkę bezpieczeństwa.

Definicja

Tunel przez SSH jest standardem bezpiecznego zdalnego logowania i przesyłania plików przez niezaufane sieci. Zapewnia także sposób ochrony ruchu danych dowolnej aplikacji za pomocą przekierowania portów, zasadniczo tunelując dowolny port TCP /IP przez SSH. Oznacza to, że ruch jest kierowany do strumienia wewnątrz zaszyfrowanego połączenia SSH, tak aby nie można było go wysłuchać ani przechwycić podczas podróży. Tunelowanie SSH pozwala dodać bezpieczeństwo sieci do przestarzałych programów, które nie obsługują szyfrowania.


Zabezpieczone połączenie w nierzetelnej sieci jest ustanawiane między klientem SSH a serwerem SSH. To połączenie SSH jest szyfrowane, chroni poufność i integralność oraz uwierzytelnia połączenia wiążące. Połączenie SSH jest używane przez aplikację do łączenia się z serwerem aplikacji. Po aktywacji tunelowania aplikacja łączy się z portem lokalnego hosta, słuchając klienta SSH. Klient SSH przekierowuje następnie aplikację przez jej zaszyfrowany tunel na serwer. Ten ostatni łączy się z rzeczywistym serwerem aplikacji - zwykle na tym samym komputerze lub w tym samym centrum danych, co serwer SSH. W ten sposób połączenie aplikacji jest chronione bez potrzeby zmiany przepływu pracy aplikacji lub użytkowników końcowych.

Protokoły tunelowania - co to jest?

Protokół tunelowania w sieciach komputerowych umożliwia użytkownikowi sieci uzyskanie dostępu do usługi sieciowej, której nie zapewnia lub nie zapewnia bezpośrednio sieć podstawowa. Jedną z ważnych aplikacji jest umożliwienie pracy z protokołem zewnętrznym w sieci, która nie obsługuje tego konkretnego protokołu (na przykład IPv6 uruchamiana za pośrednictwem protokołu IPv4). Innym ważnym punktem jest świadczenie usług, które są nieodpowiednie lub niebezpieczne w użyciu tylko z podstawowymi usługami sieciowymi. Na przykład podanie korporacyjnego adresu sieciowego użytkownika zdalnego, którego fizyczny adres sieciowy nie należy do sieci korporacyjnej. Ponieważ tunelowanie polega na przepakowaniu danych o ruchu do innej postaci, prawdopodobnie przy użyciu standardowego szyfrowania,ważną funkcją jest ukrycie charakteru ruchu, który przebiega przez tunele.

mocuje Shell - bezpiecznej transmisji danych

Bezpieczne Powłoka składa się z zaszyfrowanym tunelu utworzonym przez ssh protokołu. Użytkownicy mogą konfigurować tunele SSH, aby wysyłać niezaszyfrowany ruch przez sieć za pośrednictwem zaszyfrowanego kanału. Na przykład komputery Microsoft Windows mogą udostępniać pliki za pomocą protokołu Message Server (SMB), niezaszyfrowanego protokołu. Jeśli chcesz zdalnie połączyć się z systemem plików Microsoft Windows przez Internet, ktoś śledzi połączenie, może zobaczyć przesłane pliki. Aby bezpiecznie podłączyć system plików systemu Windows można zainstalować SSH tunel, który kieruje całą SMB-ruch na zdalnym serwerze plików za pośrednictwem szyfrowanego kanału. Pomimo faktu, że sam protokół SMB nie zawiera szyfrowania, zaszyfrowany kanał SSH, przez który się przemieszcza, zapewnia bezpieczeństwo.

Rodzaje przekierowanie portów

portów Ekspedycja - jest powszechnie obsługiwana funkcja, która znajduje się we wszystkich głównych klient i serwer SSH. Dzięki funkcji przekazywania portów SSH można przesyłać różne rodzaje ruchu internetowego przez sieć. Służy to uniknięciu śledzenia sieci lub obchodzenia nieprawidłowo skonfigurowanych routerów w Internecie. Istnieją trzy rodzaje przekierowania portów z SSH:
  • LAN - podłączenie do klienta SSH przekierowany do serwera SSH i wtedy serwer;
  • zdalne - połączenia z serwerem SSH są przekierowywane przezKlient SSH, a następnie na serwer;
  • Dynamiczne - połączenia z różnych aplikacji są przesyłane przez klienta SSH, następnie przez serwer SSH i na końcu do kilku serwerów docelowych.
  • Lokalne przekazywanie portów jest najbardziej rozpowszechnionym typem, a w szczególności pozwala ominąć zaporę sieciową firmy blokującej Wikipedię. Zdalne przekazywanie portów jest mniej powszechne. Umożliwia połączenie się z serwerem SSH na komputerze w intranecie firmy. Dynamiczne przekazywanie portów jest rzadko używane. Pozwala ominąć zaporę sieciową firmy, która całkowicie blokuje dostęp do Internetu. Wymaga to wielu prac dostosowawczych i zwykle łatwiej jest korzystać z lokalnego przekazywania portów dla określonych witryn, do których chcesz uzyskać dostęp.

    Dane techniczne

    Aby korzystać z przekierowania portów, należy upewnić się, że przekazywanie portów jest włączone na serwerze. Musisz również podać klientowi numer portu źródłowego i docelowego. Jeśli używasz lokalnych lub zdalnych przekierowań, musisz poinformować klienta o serwerze końcowym. Jeśli używane jest przekazywanie dynamiczne, musisz skonfigurować aplikacje, aby korzystały z serwera proxy SOCKS. Znowu, jak to zrobić, zależy od tego, którego klienta SSH używasz, więc możesz potrzebować więcej informacji na temat dokumentacji.

    Przykłady wdrożenia

    Najlepszym sposobem zrozumienia tego jest - rozważenie przykładu z lokalnym przekierowaniem. Wyobraź sobie, kim jesteśJesteś w sieci prywatnej, która nie pozwala ci połączyć się z określonym serwerem. Załóżmy, że jesteś w pracy, a witryna vk.com jest zablokowana. Aby ominąć blokadę, możemy utworzyć tunel za pośrednictwem serwera, który nie jest w naszej sieci i dzięki temu uzyskać dostęp do wymaganego zasobu: $ ssh -L 9000: vk.com: 80 [email protected]. Kluczem tutaj jest -L, który stwierdza, że ​​wykonujemy lokalne przekazywanie portów. Zespół następnie zgłasza, że ​​wysyłamy nasz 9000 lokalny port do vk.com:80, który jest domyślnym portem dla HTTP. Teraz musisz otworzyć przeglądarkę i przejść do http: //localhost: 9000. Niezaprzeczalną zaletą tuneli SSH jest to, że są one zaszyfrowane. Nikt nie zobaczy, które strony odwiedzasz - tylko połączenie SSH z serwerem będzie widoczne.

    Łączenie się z bazą danych zapory ogniowej

    Kolejnym dobrym przykładem jest to, że musisz uzyskać dostęp do portu na serwerze, do którego można to zrobić tylko z lokalnego hosta, a nie zdalnie. Przykładem jest tu potrzeba połączenia z konsolą baz danych, która z powodów bezpieczeństwa umożliwia tylko połączenie lokalne. Na przykład używasz PostgreSQL na swoim serwerze, który domyślnie słucha portu 5432: $ ssh -L 9000: localhost: 5432 [email protected]. Częścią, która się tutaj zmieniła jest - localhost: 5432, który odnosi się do przekierowań połączeń z lokalnego portu 9000 do localhost: 5432 i do twojego serwera. Teraz możemy po prostu połączyć się z naszą bazą danych: $ psql -h localhost -p 9000.

    Zdalne przekierowanie portów

    Teraz objaśnijmy w rzeczywistym przykładzie pracę zdalnegoprzekierowania Załóżmy, że tworzysz aplikację Rails na swoim komputerze lokalnym i chcesz pokazać ją znajomemu. Niestety, twój ISP nie dał wam publiczny adres IP, więc nie można podłączyć bezpośrednio do komputera za pośrednictwem Internetu. Czasami może to być rozwiązane poprzez konfigurację NAT (Network Address Translation) na routerze, ale to nie zawsze działa, i trzeba zmienić konfigurację routera, co nie zawsze jest pożądane. To rozwiązanie również nie działa, jeśli nie masz dostępu do sieci. Aby rozwiązać ten problem, trzeba innego komputera, który jest publicznie dostępny i ma dostęp do SSH. Może to być dowolny serwer w Internecie, jeśli możesz się z nim połączyć. Stworzymy SSH tunel, który zostanie otwarty nowy port na serwerze i podłączyć ją do portu lokalnego na komputerze: $ ssh-R 9000: localhost: 3000 składnia [email protected] jest bardzo podobny do lokalnej przekierowanie portów, z jednej wymiany -L na -R Ale, podobnie jak w przypadku lokalnego przekazywania portów, składnia pozostaje niezmieniona.

    Zakres i zagrożenia

    Wadą jest to, że każdy użytkownik może zalogować się na serwerze może zawierać port forwarding. Jest on powszechnie stosowany przez wewnętrznych specjalistów IT, aby wprowadzić swoje maszyny w domu lub serwerów w chmurze, port forwarding z serwera z powrotem do sieci firmowej na swoim komputerze stacjonarnym lub odpowiedniego serwera. Hakerzy i złośliwe oprogramowanie mogą również użyć go do pozostawienia defektu algorytmu w sieci wewnętrznej. Może być również używany dlaukrywając ślady napastników, atakując kilkoma urządzeniami, które umożliwiają niekontrolowane drążenie tuneli. Tunelowanie jest często używane w połączeniu z kluczami tunelu PHP SSH i uwierzytelnianiem klucza publicznego w celu pełnej automatyzacji procesu.

    Zalety

    Sprzedaż tuneli SSH jest szeroko stosowana w wielu środowiskach korporacyjnych, które wykorzystują systemy mainframe jako swoje aplikacje. W tych środowiskach same aplikacje mogą mieć bardzo ograniczone wsparcie bezpieczeństwa. Dzięki tunelowaniu można uzyskać zgodność z SOX, HIPAA, PCI-DSS i innymi standardami bez konieczności zmiany aplikacji. W wielu przypadkach te aplikacje i serwery aplikacji są takie, że wprowadzanie w nich zmian może być niepraktyczne lub zbyt kosztowne. Kod źródłowy może być niedostępny, sprzedawca mógł zbankrutować, produkt może być wyjęty z pudełka lub nie ma zespołu programistów. Dodanie powłoki ochronnej, takiej jak szpachla do tunelu SSH, zapewnia ekonomiczny i praktyczny sposób dodawania zabezpieczeń do takich aplikacji. Na przykład wszystkie bankomaty naszego kraju korzystają z tuneli dla celów bezpieczeństwa.

    Zagrożenia

    Jako użyteczna rzecz niewątpliwie wspiera tunelowanie SSH. Obejmuje ona ryzyka, które musi poradzić sobie dział bezpieczeństwa korporacyjnego. Połączenie wolnych tuneli SSH jest chronione silnym szyfrowaniem. Dzięki temu ich zawartość jest niewidoczna dla większości wdrożonych rozwiązań do monitorowania sieci i filtrowania ruchu. Ta niewidzialność jest ponoszonaznaczące ryzyko, jeśli jest wykorzystywane do złośliwych celów, takich jak filtrowanie danych. Cyberprzestępcy lub złośliwe oprogramowanie mogą wykorzystywać tunele SSH do ukrywania swoich nieautoryzowanych wiadomości lub usuwania skradzionych danych z sieci docelowej.
    W ataku tunelowym SSH atakujący instaluje serwer poza siecią docelową (na przykład Amazon AWS). Po wykryciu wroga w systemie docelowym łączy się on z zewnętrznym serwerem SSH od wewnątrz. Większość organizacji zezwala na tunele Linux SSH, przynajmniej jeśli mają serwery w chmurze publicznej. To połączenie SSH jest skonfigurowane z opcją umożliwiającą wysyłanie portu TCP z portu na serwerze zewnętrznym do portu SSH na serwerze w sieci wewnętrznej. Aby skonfigurować tunel SSH, potrzebujesz jednego polecenia z pojedynczym wierszem i możesz je łatwo zautomatyzować. Większość firewall prawie go nie chroni.

    Powiązane publikacje