/ / Hvordan bruke SSH-tunnel for å få tilgang til begrensede servere og bla sikkert

Slik bruker du SSH-tunnel for å få tilgang til begrensede servere og bla sikkert

En SSH-klient kobles til en Secure Shell-server,som lar deg kjøre terminalkommandoer som om du sitter foran en annen datamaskin. Men en SSH-klient lar deg også "tunnelere" en port mellom det lokale systemet og en ekstern SSH-server.

Det er tre forskjellige typer SSH-tunneling,og de brukes alle til forskjellige formål. Hver innebærer å bruke en SSH-server for å omdirigere trafikk fra en nettverksport til en annen. Trafikken sendes over den krypterte SSH-tilkoblingen, så den kan ikke overvåkes eller modifiseres under transport.

Du kan gjøre dette med ssh kommando inkludert på Linux, macOS og annetUNIX-lignende operativsystemer. På Windows, som ikke inkluderer en innebygd ssh-kommando, anbefaler vi det gratis verktøyet PuTTY for å koble til SSH-servere. Den støtter SSH-tunneling også.

Lokal portvideresending: Gjør eksterne ressurser tilgjengelige på ditt lokale system

"Local port forwarding" gir deg tilganglokale nettverksressurser som ikke er utsatt for Internett. La oss for eksempel si at du vil ha tilgang til en databaseserver på kontoret hjemmefra. Av sikkerhetsgrunner er den databaseserveren bare konfigurert til å godta tilkoblinger fra det lokale kontornettverket. Men hvis du har tilgang til en SSH-server på kontoret, og at SSH-serveren tillater tilkoblinger utenfor kontornettverket, kan du koble til den SSH-serveren hjemmefra og få tilgang til databaseserveren som om du var på kontoret. Dette er ofte tilfelle, da det er lettere å sikre en enkelt SSH-server mot angrep enn å sikre en rekke forskjellige nettverksressurser.

For å gjøre dette, oppretter du en SSH-forbindelse medSSH-serveren og be klienten om å videresende trafikk fra en spesifikk port fra din lokale PC - for eksempel port 1234 - til adressen til databasens server og porten på kontornettverket. Så når du prøver å få tilgang til databaseserveren i port 1234 din nåværende PC, "localhost", blir den trafikken automatisk "tunnelet" over SSH-tilkoblingen og sendt til databaseserveren. SSH-serveren sitter i midten og videresender trafikken frem og tilbake. Du kan bruke hvilken som helst kommandolinje eller grafisk verktøy for å få tilgang til databaseserveren som om den kjørte på din lokale PC.

Hvis du vil bruke lokal videresending, kobler du til SSH-serveren normalt, men leverer også -L argument. Syntaksen er:

ssh -L local_port:remote_address:remote_port username@server.com

La oss for eksempel si at databaseserveren på kontoret ditt ligger 192.168.1.111 på kontornettverket. Du har tilgang til kontorets SSH-server kl ssh.youroffice.com , og brukerkontoen din på SSH-serveren er bob . I så fall vil kommandoen din se slik ut:

ssh -L 8888:192.168.1.111:1234 bob@ssh.youroffice.com

Etter å ha kjørt denne kommandoen, vil du kunnefå tilgang til databaseserveren i port 8888 hos localhost. Så hvis databaseserveren tilbyr internettilgang, kan du koble http: // localhost: 8888 til nettleseren din for å få tilgang til den. Hvis du hadde et kommandolinjeverktøy som trenger nettverksadressen til en database, ville du peke den på localhost: 8888. All trafikk som sendes til port 8888 på din PC, blir tunnelert til 192.168.1.111:1234 på kontornettverket.

Det er litt mer forvirrende hvis du vilkoble til en serverapplikasjon som kjører på samme system som SSH-serveren selv. La oss for eksempel si at du har en SSH-server som kjører i port 22 på kontormaskinen, men at du også har en databaseserver som kjører i port 1234 på det samme systemet på samme adresse. Du vil ha tilgang til databaseserveren hjemmefra, men systemet godtar bare SSH-tilkoblinger på port 22, og brannmuren tillater ikke andre eksterne tilkoblinger.

I dette tilfellet kan du kjøre en kommando som følgende:

ssh -L 8888:localhost:1234 bob@ssh.youroffice.com

Når du prøver å få tilgang til databaseserveren klport 8888 på din nåværende PC, vil trafikken bli sendt over SSH-tilkoblingen. Når den ankommer systemet som kjører SSH-serveren, vil SSH-serveren sende den til port 1234 på “localhost”, som er den samme PCen som kjører SSH-serveren selv. Så "localhost" i kommandoen over betyr "localhost" fra perspektivet til den eksterne serveren.

For å gjøre dette i PuTTY-applikasjonen på Windows,Velg Tilkobling> SSH> Tunneler. Velg alternativet “Lokal”. For "Source Port" angir du den lokale porten. For "Destinasjon" angir du destinasjonsadresse og port i skjemaet fjernadresse: fjern_port.

Hvis du for eksempel ønsket å sette opp den samme SSH-tunnelen som over, ville du angi 8888 som kildeport og localhost:1234 som destinasjon. Klikk "Legg til" etterpå, og klikk deretter "Åpne" for å åpne SSH-tilkoblingen. Du må også angi adressen og porten til selve SSH-serveren på hovedskjermbildet "Session" før du selvfølgelig kobler til.

Videresending av ekstern port: Gjør lokale ressurser tilgjengelige på et eksternt system

"Videresending av ekstern port" er det motsatte av lokalvideresending, og brukes ikke så ofte. Det lar deg gjøre en ressurs på din lokale PC tilgjengelig på SSH-serveren. La oss for eksempel si at du kjører en webserver på den lokale PC-en du sitter foran. Men PCen din står bak en brannmur som ikke tillater innkommende trafikk til serverprogramvaren.

Forutsatt at du har tilgang til en ekstern SSH-server, dukan koble til den SSH-serveren og bruke ekstern portvideresending. SSH-klienten din vil be serveren videresende en bestemt port - si port 1234 - på SSH-serveren til en spesifikk adresse og port på din nåværende PC eller lokale nettverk. Når noen får tilgang til porten 1234 på SSH-serveren, vil den trafikken automatisk bli “tunnelert” over SSH-forbindelsen. Alle som har tilgang til SSH-serveren vil kunne få tilgang til webserveren som kjører på din PC. Dette er effektivt en måte å tunnelere gjennom brannmurer.

Hvis du vil bruke ekstern videresending, bruker du ssh kommando med -R argument. Syntaksen er stort sett den samme som med lokal videresending:

ssh -R remote_port:local_address:local_port username@server.com

La oss si at du vil gjøre et serverprogram som lytter på port 1234 på din lokale PC tilgjengelig på port 8888 på den eksterne SSH-serveren. SSH-serverens adresse er ssh.youroffice.com og brukernavnet ditt på SSH-serveren er bob. Du kjørte følgende kommando:

ssh -R 8888:localhost:1234 bob@ssh.youroffice.com

Noen kunne da koble seg til SSH-serveren i port 8888, og den forbindelsen ville bli tunnelert til serverprogrammet som kjører i port 1234 på den lokale PC-en du etablerte forbindelsen fra.

For å gjøre dette i PuTTY på Windows, velger du Tilkobling> SSH> Tunneler. Velg alternativet “Remote”. For "Source Port" angir du den eksterne porten. For "Destinasjon" angir du destinasjonsadressen og porten i skjemaet local_address: local_port.

Hvis du for eksempel ville konfigurere eksemplet over, ville du legge inn 8888 som kildeport og localhost:1234 som destinasjon. Klikk "Legg til" etterpå, og klikk deretter "Åpne" for å åpne SSH-tilkoblingen. Du må også angi adressen og porten til selve SSH-serveren på hovedskjermbildet "Session" før du selvfølgelig kobler til.

Folk kunne deretter koble seg til port 8888 på SSH-serveren, og trafikken deres ville bli tunnelert til port 1234 på det lokale systemet.

Som standard vil den eksterne SSH-serveren barelytte til tilkoblinger fra samme vert. Med andre ord er det bare personer på samme system som SSH-serveren som selv kan koble til. Dette er av sikkerhetsmessige årsaker. Du må aktivere alternativet "GatewayPorts" i sshd_config på den eksterne SSH-serveren hvis du vil overstyre denne oppførselen.

Videresending av dynamisk port: Bruk SSH-serveren som en proxy

I SLEKT: Hva er forskjellen mellom en VPN og en proxy?

Det er også "dynamisk port forwarding", somfungerer på samme måte som en proxy eller VPN. SSH-klienten oppretter en SOCKS-proxy som du kan konfigurere applikasjoner til å bruke. All trafikk som sendes via proxy, vil bli sendt via SSH-serveren. Dette ligner på lokal videresending - det tar lokal trafikk sendt til en spesifikk port på PC-en din og sender den over SSH-tilkoblingen til et eksternt sted.

I SLEKT: Hvorfor bruke et offentlig Wi-Fi-nettverk kan være farlig, selv når du får tilgang til krypterte nettsteder

La oss for eksempel si at du bruker en offentlighetWi-Fi-nettverk. Du vil bla deg sikkert uten å bli snopet på. Hvis du har tilgang til en SSH-server hjemme, kan du koble deg til den og bruke dynamisk portvideresending. SSH-klienten oppretter en SOCKS-proxy på din PC. All trafikk som sendes til denne proxy, vil bli sendt over SSH-serverforbindelsen. Ingen som overvåker det offentlige Wi-Fi-nettverket vil kunne overvåke surfingen din eller sensurere nettstedene du har tilgang til. Sett fra alle nettsteder du besøker, vil det være som om du sitter foran PCen hjemme. Dette betyr også at du kan bruke dette trikset for å få tilgang til nettsteder som bare er i USA mens du er utenfor USA - forutsatt at du selvfølgelig har tilgang til en SSH-server i USA.

Som et annet eksempel kan det være lurt å få tilgang til enmedietjenerapplikasjonen du har i hjemmenettverket. Av sikkerhetsgrunner kan det hende du bare har en SSH-server eksponert for Internett. Du tillater ikke innkommende tilkoblinger fra Internett til medieserverprogrammet. Du kan konfigurere dynamisk portvideresending, konfigurere en nettleser til å bruke SOCKS-proxy, og deretter få tilgang til servere som kjører på hjemmenettverket ditt gjennom nettleseren som om du satt foran SSH-systemet ditt hjemme. Hvis for eksempel medieserveren din ligger i port 192.168.1.123 i hjemmenettverket, kan du plugge adressen 192.168.1.123 i ethvert program som bruker SOCKS-proxy, og du får tilgang til mediaserveren som om du var i hjemmenettverket.

Hvis du vil bruke dynamisk videresending, kjører du ssh-kommandoen med -D argument, sånn:

ssh -D local_port username@server.com

La oss for eksempel si at du har tilgang til en SSH-server kl ssh.yourhome.com og brukernavnet ditt på SSH-serveren er bob . Du vil bruke dynamisk videresending for å åpne en SOCKS-proxy på port 8888 på den nåværende PC-en. Du kjørte følgende kommando:

ssh -D 8888 bob@ssh.yourhome.com

Du kan deretter konfigurere en nettleser eller et annet program for å bruke din lokale IP-adresse (127.0.01) og port 8888. All trafikk fra det programmet vil bli omdirigert gjennom tunnelen.

For å gjøre dette i PuTTY på Windows, velger du Tilkobling> SSH> Tunneler. Velg alternativet “Dynamisk”. For "Source Port" angir du den lokale porten.

Hvis du for eksempel ønsket å opprette en SOCKS-proxy på port 8888, skriver du inn 8888 som kildeport. Klikk "Legg til" etterpå, og klikk deretter "Åpne" for å åpne SSH-tilkoblingen. Du må også angi adressen og porten til selve SSH-serveren på hovedskjermbildet "Session" før du selvfølgelig kobler til.

Du kan deretter konfigurere et program for å få tilgang til SOCKS-proxy på din lokale PC (det vil si IP-adresse 127.0.0.1, som peker til din lokale PC) og angi riktig port.

I SLEKT: Hvordan konfigurere en proxy-server i Firefox

For eksempel kan du konfigurere Firefox til å brukeSOCKS proxy. Dette er spesielt nyttig fordi Firefox kan ha egne proxy-innstillinger og ikke trenger å bruke proxyinnstillinger over hele systemet. Firefox vil sende trafikken sin gjennom SSH-tunnelen, mens andre applikasjoner bruker Internett-tilkoblingen din normalt.

Når du gjør dette i Firefox, velger du “Manuell proxykonfigurasjon ”, skriv“ 127.0.0.1 ”i SOCKS-vertsboksen, og skriv den dynamiske porten i“ Port ”-boksen. La HTTP Proxy-, SSL Proxy- og FTP Proxy-boksene være tomme.

Tunnelen vil forbli aktiv og åpen for somså lenge du har SSH-øktforbindelsen åpen. Når du avslutter SSH-økten og kobler fra en server, blir tunnelen også stengt. Bare koble til igjen med den riktige kommandoen (eller de aktuelle alternativene i PuTTY) for å åpne tunnelen på nytt.