co je SSH port Forwarding, aka SSH Tunneling?
SSH port forwarding je mechanismus v SSH pro tunelování aplikačních portů z klientského počítače na serverový stroj nebo naopak. To může být použit pro přidání šifrování pro starší aplikace, které jdou přes firewally, a některé systémové administrátory a IT profesionály použít pro otevření zadní vrátka do vnitřní sítě z jejich domácích počítačů. Může být také zneužit hackery a malwarem k otevření přístupu z Internetu do interní sítě., Širší přehled naleznete na stránce SSH tunelování.
Local Forwarding
Local forwarding slouží k předání portu z klientského počítače do serverového počítače. V zásadě klient SSH poslouchá připojení na nakonfigurovaném portu a když přijme připojení, tuneluje připojení k serveru SSH. Server se připojuje k konfigurovanému cílovému portu, případně na jiném počítači, než je SSH server.,
Typické použití pro lokální port forwarding patří:
-
Tunelování relace a přenos souborů přes jump servery
-
Připojení ke službě na interní síť z venku
-
Připojení ke vzdálené sdílení souborů přes Internet
Poměrně málo organizací pro všechny příchozí SSH přístup přes jeden skok, server. Server může být standardní Linux/Unix pole, obvykle s nějakým extra zpevnění, detekce narušení a/nebo přihlášení, nebo to může být komerční jump server řešení.,
mnoho serverů jump umožňuje přesměrování příchozích portů, jakmile je připojení ověřeno. Takové přesměrování portů je výhodné, protože umožňuje technicky zdatným uživatelům používat interní zdroje zcela transparentně. Například, oni mohou forward portu na jejich místní stroj na firemní intranet web server, interní poštovní server IMAP port, do místního souboru serveru 445 a 139 porty, tiskárny, na verzi kontroly úložiště, nebo téměř jakýkoliv jiný systém na vnitřní síti. Port je často tunelován do portu SSH na interním počítači.,
V OpenSSH, místní port forwarding nakonfigurován pomocí -L
možnosti:
ssh -L 80:intra.example.com:80 gw.example.com
Tento příklad otevře připojení do gw.example.com
jump server, a dopředu nějaké spojení na portu 80 na lokálním počítači na port 80 na intra.example.com
.
ve výchozím nastavení se může kdokoli (i na různých strojích) připojit k zadanému portu na klientském počítači SSH., Nicméně, toto může být omezeno na programy na stejném hostiteli tím, že dodává bind adresa:
ssh -L 127.0.0.1:80:intra.example.com:80 gw.example.com
LocalForward
možnost v OpenSSH klient konfigurační soubor může být použit ke konfiguraci přesměrování, aniž byste museli zadat na příkazovém řádku.
Remote Forwarding
v OpenSSH jsou zadány vzdálené předávání SSH portů pomocí volby -R
. Například:
ssh -R 8080:localhost:80 public.example.com
to umožňuje komukoli na vzdáleném serveru připojit se k portu TCP 8080 na vzdáleném serveru., Spojení pak bude tunelováno zpět do klientského hostitele a klient poté provede TCP připojení k portu 80 na localhost
. Místo localhost
lze použít jakýkoli jiný název hostitele nebo IP adresu pro zadání hostitele, ke kterému se chcete připojit.
tento konkrétní příklad by byl užitečný pro poskytnutí přístupu někoho zvenčí k internímu webovému serveru. Nebo vystavení interní webové aplikace veřejnému internetu. To by mohl udělat zaměstnanec pracující z domova nebo útočník.,
ve výchozím nastavení umožňuje OpenSSH pouze připojení ke vzdáleným předaným portům z hostitele serveru. K ovládání však lze použít volbu GatewayPorts
v konfiguračním souboru serveru sshd_config. Tyto alternativy jsou možné:
GatewayPorts no
tím se zabrání připojení k předány porty z venku počítači serveru.
GatewayPorts yes
to umožňuje komukoli připojit se k předaným portům. Pokud je server na veřejném internetu, může se k portu připojit kdokoli na internetu.,
GatewayPorts clientspecified
To znamená, že klient může zadat IP adresu, ze které připojení k portu jsou povoleny. Syntaxe je:
ssh -R 52.194.1.73:8080:localhost:80 host147.aws.example.com
v tomto příkladu jsou povolena pouze připojení z IP adresy 52.194.1.73
do portu 8080.
OpenSSH také umožňuje přeposílání vzdáleného portu na zadané jako 0. V takovém případě server dynamicky přidělí port a nahlásí jej klientovi. Při použití s volbou -O forward
klient vytiskne přidělené číslo portu na standardní výstup.,
otevření zadních dveří do podniku
vzdálené přesměrování SSH portů běžně používají zaměstnanci k otevření zadních dveří do podniku. Například zaměstnanec může nastavit si zdarma-tier server z Amazon AWS, a přihlaste se z kanceláře, že server, s uvedením vzdálené přesměrování z portu na server na určitém serveru nebo aplikace na vnitřní podnikové sítě. Pro otevření přístupu k více než jedné aplikaci může být zadáno více vzdálených forwardů.,
zaměstnanec by také na serveru nastavil GatewayPorts yes
(většina zaměstnanců nemá doma pevné IP adresy, takže nemohou omezit IP adresu).
například následující příkaz otevře přístup k interní databázi Postgres na portu 5432 a internímu portu SSH na portu 2222.
ssh -R 2222:d76767.nyc.example.com:22 -R 5432:postgres3.nyc.example.com:5432 aws4.mydomain.net
Server-Side Konfiguraci
AllowTcpForwarding
možnost v OpenSSH server konfigurační soubor musí být povolena na serveru povolit port forwarding. Ve výchozím nastavení je povoleno přesměrování., Možné hodnoty pro tuto možnost jsou yes
nebo all
povolit všechny TCP forwarding, no
, aby se zabránilo všechny TCP forwarding, local
povolit místní forwardování, a remote
povolit vzdálené forwardování.
Další možností zájmu je AllowStreamLocalForwarding
, které lze použít k předávání unixových doménových soketů. Umožňuje stejné hodnoty jako AllowTcpForwarding
. Výchozí hodnota je yes
.,
například:
AllowTcpForwarding remote AllowStreamLocalForwarding no
GatewayPorts
možnost konfigurace, jak je popsáno výše ovlivňuje i vzdálené forwardování portu. Možné hodnoty byly no
(pouze místní spojení z hostitele serveru povoleno; výchozí nastavení), yes
(někdo na Internetu může připojit ke vzdálenému předány porty), a clientspecified
(klient může zadat adresu IP, která se může připojit kdokoliv může, pokud není uvedeno jinak).,
jak zabránit přesměrování portů SSH v obcházení firewallů
doporučujeme, aby přesměrování portů bylo v případě potřeby výslovně zakázáno. Ponechání povoleného přesměrování portů může organizaci vystavit bezpečnostním rizikům a zadním dveřím. Například, pokud je server určen pouze poskytnout SFTP přenos souborů umožňuje forwardování portu, ty forwardování může být použit k získání nechtěného přístupu do vnitřní sítě z Intranetu.
problém je v tom, že přesměrování portů může být v praxi zabráněno pouze serverem nebo firewallem., Podnik nemůže ovládat všechny servery na internetu. Ovládání založené na firewallu může být také složité, protože většina organizací má servery v Amazon AWS a dalších cloudových službách a tyto servery jsou obvykle přístupné pomocí SSH.