przykład przekierowania portów SSH

czym jest przekierowanie portów SSH, czyli tunelowanie SSH?

przekierowanie portów SSH jest mechanizmem w SSH służącym do tunelowania portów aplikacji z maszyny klienckiej do maszyny serwerowej lub odwrotnie. Może być używany do dodawania szyfrowania do starszych aplikacji, przechodzenia przez zapory sieciowe, a niektórzy administratorzy systemów i specjaliści IT używają go do otwierania backdoorów w sieci wewnętrznej ze swoich domowych komputerów. Może być również nadużywany przez hakerów i złośliwe oprogramowanie, aby otworzyć dostęp z Internetu do sieci wewnętrznej., Szerszy przegląd można znaleźć na stronie tunelowania SSH.

przekierowanie lokalne

przekierowanie lokalne jest używane do przesyłania portu z maszyny klienckiej do maszyny serwerowej. Zasadniczo klient SSH nasłuchuje połączeń na skonfigurowanym porcie, a po otrzymaniu połączenia tuneluje połączenie z serwerem SSH. Serwer łączy się z konfigurowanym portem docelowym, być może na innej maszynie niż serwer SSH.,

typowe zastosowania dla lokalnego przekierowania portów obejmują:

  • sesje tunelowania i transfery plików przez serwery jump

  • łączenie się z usługą w sieci wewnętrznej z zewnątrz

  • łączenie się ze zdalnym udostępnianiem plików przez Internet

sporo organizacji dla wszystkich przychodzących dostępu SSH przez pojedynczy serwer jump. Serwer może być standardową skrzynką Linux/Unix, zwykle z dodatkowym hartowaniem, wykrywaniem włamań i/lub logowaniem, lub może być komercyjnym rozwiązaniem jump server.,

wiele serwerów jump umożliwia przekierowanie portów przychodzących, po uwierzytelnieniu połączenia. Takie przekazywanie portów jest wygodne, ponieważ pozwala zaawansowanym technologicznie użytkownikom na korzystanie z zasobów wewnętrznych dość przejrzyście. Na przykład, mogą one przesłać port na swojej lokalnej maszynie do korporacyjnego serwera intranetowego, do wewnętrznego serwera pocztowego portu IMAP, do lokalnego serwera plików portów 445 i 139, do drukarki, do repozytorium kontroli wersji lub do prawie każdego innego systemu w sieci wewnętrznej. Często port jest tunelowany do portu SSH na wewnętrznej maszynie.,

w OpenSSH lokalne przekierowanie portów jest konfigurowane przy użyciu opcji -L:

 ssh -L 80:intra.example.com:80 gw.example.com

Ten przykład otwiera połączenie z serwerem skoków gw.example.com I przekazuje dowolne połączenie do Portu 80 na maszynie lokalnej do Portu 80 na gw.example.com.div id = „759d89bc30” > .

domyślnie każdy (nawet na różnych komputerach) może połączyć się z określonym portem na komputerze klienta SSH., Może to być jednak ograniczone do programów na tym samym hoście poprzez podanie adresu bind:

 ssh -L 127.0.0.1:80:intra.example.com:80 gw.example.com

opcja LocalForward w pliku konfiguracyjnym klienta OpenSSH może być użyta do skonfigurowania przekierowania bez konieczności podawania go w wierszu poleceń.

zdalne przekierowanie

w OpenSSH zdalne przekierowanie portu SSH jest określone za pomocą opcji-R. Na przykład:

 ssh -R 8080:localhost:80 public.example.com

pozwala to każdemu na zdalnym serwerze połączyć się z portem tcp 8080 na zdalnym serwerze., Połączenie zostanie następnie tunelowane z powrotem do hosta klienta, a następnie klient nawiąże połączenie TCP do Portu 80 na localhost. Zamiast localhost można użyć dowolnej innej nazwy hosta lub adresu IP, aby określić host, z którym ma się połączyć.

ten konkretny przykład byłby przydatny do zapewnienia komuś z zewnątrz dostępu do wewnętrznego serwera www. Lub wystawienie wewnętrznej aplikacji internetowej do publicznego Internetu. Może to zrobić pracownik pracujący w domu lub napastnik.,

domyślnie OpenSSH umożliwia łączenie się tylko ze zdalnymi portami przekierowanymi z hosta serwera. Jednak opcja GatewayPorts w pliku konfiguracyjnym serwera sshd_config może być użyta do kontrolowania tego problemu. Możliwe są następujące alternatywy:

 GatewayPorts no

uniemożliwia to łączenie się z przekierowanymi portami spoza komputera serwera.

 GatewayPorts yes

pozwala to każdemu połączyć się z przekierowanymi portami. Jeśli serwer znajduje się w publicznym Internecie, każdy w Internecie Może połączyć się z portem.,

 GatewayPorts clientspecified

oznacza to, że klient może określić adres IP, z którego dozwolone są połączenia z portem. Składnia to:

 ssh -R 52.194.1.73:8080:localhost:80 host147.aws.example.com

w tym przykładzie dozwolone są tylko połączenia z adresu IP 52.194.1.73 do portu 8080.

OpenSSH pozwala również na przekierowanie zdalnego portu do określonego jako 0. W takim przypadku serwer dynamicznie przydziela port i zgłasza go Klientowi. W przypadku użycia z opcją -O forward, klient wydrukuje przypisany numer portu na standardowe wyjście.,

otwieranie backdoorów w przedsiębiorstwie

zdalne przekierowanie portów SSH jest powszechnie używane przez pracowników do otwierania backdoorów w przedsiębiorstwie. Na przykład pracownik może ustawić get a free-tier server z Amazon AWS i zalogować się z Biura na ten serwer, określając zdalne przekazywanie z portu na serwerze do jakiegoś serwera lub aplikacji w wewnętrznej sieci korporacyjnej. W celu otwarcia dostępu do więcej niż jednej aplikacji można podać wiele zdalnych przekazów.,

pracownik ustawiłby również GatewayPorts yes na serwerze (większość pracowników nie ma stałych adresów IP w domu, więc nie mogą ograniczyć adresu IP).

na przykład poniższe polecenie otwiera dostęp do wewnętrznej bazy danych Postgres na porcie 5432 i wewnętrznego portu SSH na porcie 2222.

 ssh -R 2222:d76767.nyc.example.com:22 -R 5432:postgres3.nyc.example.com:5432 aws4.mydomain.net

konfiguracja po stronie serwera

opcjaAllowTcpForwarding w pliku konfiguracyjnym serwera OpenSSH musi być włączona na serwerze, aby umożliwić przekazywanie portów. Domyślnie przekazywanie jest dozwolone., Możliwe wartości dla tej opcji to yes lub all, aby zezwolić na przekazywanie wszystkich TCP, no, aby zapobiec przekazywaniu wszystkich TCP, local, aby zezwolić na lokalne spedytory, i remote aby umożliwić zdalne spedycje.

inną interesującą opcją jestAllowStreamLocalForwarding, która może być używana do przekazywania gniazd domen uniksowych. Pozwala na te same wartości co AllowTcpForwarding. Domyślną wartością jest yes.,

na przykład:

 AllowTcpForwarding remote AllowStreamLocalForwarding no

opisana powyżej Opcja konfiguracji GatewayPorts wpływa również na zdalne przesyłanie portów. Możliwe wartości to no (dozwolone są tylko lokalne połączenia z hosta serwera; domyślnie), yes(każdy w Internecie Może połączyć się ze zdalnymi portami forwarded) i clientspecified (klient może podać adres IP, który może się połączyć, każdy może, jeśli nie określono).,

jak zapobiec omijaniu zapór sieciowych przez przekierowanie portów SSH

zalecamy wyraźne wyłączenie przekierowania portów, gdy nie jest to konieczne. Włączenie przekierowania portów może narazić organizację na zagrożenia bezpieczeństwa i backdoory. Na przykład, jeśli serwer przeznaczony do przesyłania plików SFTP zezwala na przesyłanie portów, mogą one być używane do uzyskania niezamierzonego dostępu do sieci wewnętrznej z intranetu.

problem polega na tym, że przekierowanie portów można w praktyce uniemożliwić tylko przez serwer lub zaporę sieciową., Przedsiębiorstwo nie może kontrolować wszystkich serwerów w Internecie. Kontrola oparta na zaporze może być również trudna, ponieważ większość organizacji ma serwery w Amazon AWS i innych usługach w chmurze, a do tych serwerów zwykle uzyskuje się dostęp za pomocą SSH.

Leave a Comment