Startpagina » hoe » Hoe SSH Tunnelling te gebruiken om toegang te krijgen tot beperkte servers en veilig te bladeren

    Hoe SSH Tunnelling te gebruiken om toegang te krijgen tot beperkte servers en veilig te bladeren

    Een SSH-client maakt verbinding met een Secure Shell-server, waarmee u terminalopdrachten kunt uitvoeren alsof u achter een andere computer zit. Maar met een SSH-client kunt u ook een poort "tunnelen" tussen uw lokale systeem en een externe SSH-server.

    Er zijn drie verschillende typen SSH-tunneling en deze worden allemaal voor verschillende doeleinden gebruikt. Elk omvat het gebruik van een SSH-server om verkeer om te leiden van de ene netwerkpoort naar de andere. Het verkeer wordt via de gecodeerde SSH-verbinding verzonden, dus het kan niet worden gecontroleerd of gewijzigd tijdens het transport.

    U kunt dit doen met de ssh commando opgenomen op Linux, macOS en andere UNIX-achtige besturingssystemen. In Windows, dat geen ingebouwde ssh-opdracht bevat, raden we de gratis tool PuTTY aan om verbinding te maken met SSH-servers. Het ondersteunt ook SSH-tunneling.

    Local Port Forwarding: maak bronnen op afstand toegankelijk op uw lokale systeem

    "Local port forwarding" geeft u toegang tot lokale netwerkbronnen die niet zijn blootgesteld aan internet. Stel dat u bijvoorbeeld vanuit uw huis een database-server bij u op kantoor wilt openen. Om veiligheidsredenen is die databaseserver alleen geconfigureerd om verbindingen van het lokale kantoornetwerk te accepteren. Maar als u op kantoor toegang hebt tot een SSH-server en die SSH-server verbindingen van buiten het kantoornetwerk toestaat, kunt u vanaf thuis verbinding maken met die SSH-server en toegang krijgen tot de databaseserver alsof u op kantoor bent. Dit is vaak het geval, omdat het eenvoudiger is om één SSH-server tegen aanvallen te beveiligen dan om een ​​verscheidenheid aan verschillende netwerkbronnen te beveiligen.

    Hiertoe maakt u een SSH-verbinding met de SSH-server en laat u de client het verkeer van een specifieke poort vanaf uw lokale pc doorsturen, bijvoorbeeld poort 1234, naar het adres van de server van de database en de poort op het kantoornetwerk. Dus wanneer u probeert toegang te krijgen tot de databaseserver op poort 1234 uw huidige pc, "localhost", wordt dat verkeer automatisch "getunneld" over de SSH-verbinding en verzonden naar de databaseserver. De SSH-server zit in het midden en stuurt het verkeer heen en weer. U kunt elke opdrachtregel of grafische tool gebruiken om toegang te krijgen tot de databaseserver alsof deze op uw lokale pc wordt uitgevoerd.

    Om lokale doorschakeling te gebruiken, verbindt u zich normaal met de SSH-server, maar ook met de -L argument. De syntaxis is:

    ssh -L local_port: remote_address: remote_port [email protected]

    Laten we zeggen dat de databaseserver op uw kantoor zich op 192.168.1.111 op het kantoornetwerk bevindt. U hebt toegang tot de SSH-server van het kantoor op ssh.youroffice.com , en uw gebruikersaccount op de SSH-server is bob . In dat geval ziet uw opdracht er als volgt uit:

    ssh -L 8888: 192.168.1.111: 1234 [email protected]

    Na het uitvoeren van die opdracht, zou je toegang kunnen krijgen tot de databaseserver op poort 8888 bij localhost. Dus als de databaseserver webtoegang biedt, kunt u http: // localhost: 8888 aansluiten op uw webbrowser om er toegang toe te krijgen. Als u een opdrachtregelhulpprogramma had dat het netwerkadres van een database nodig heeft, wijst u dit naar localhost: 8888. Alle verkeer verzonden naar poort 8888 op uw pc wordt getunneld naar 192.168.1.111:1234 op uw bedrijfsnetwerk.

    Het is wat meer verwarrend als u verbinding wilt maken met een servertoepassing die op hetzelfde systeem draait als de SSH-server zelf. Stel dat u bijvoorbeeld een SSH-server hebt die wordt uitgevoerd op poort 22 op uw kantoorcomputer, maar u hebt ook een databaseserver die draait op poort 1234 op hetzelfde systeem op hetzelfde adres. U wilt de databaseserver vanuit huis openen, maar het systeem accepteert alleen SSH-verbindingen op poort 22 en de firewall staat geen andere externe verbindingen toe.

    In dit geval zou u een commando zoals het volgende kunnen uitvoeren:

    ssh -L 8888: localhost: 1234 [email protected]

    Wanneer u probeert toegang te krijgen tot de databaseserver op poort 8888 op uw huidige pc, wordt het verkeer via de SSH-verbinding verzonden. Wanneer het arriveert op het systeem waarop de SSH-server draait, zal de SSH-server het naar poort 1234 op "localhost" sturen, wat dezelfde pc is waarop de SSH-server zelf draait. Dus de "localhost" in de bovenstaande opdracht betekent "localhost" vanuit het perspectief van de externe server.

    Om dit te doen in de PuTTY-toepassing op Windows, selecteert u Verbinding> SSH> Tunnels. Selecteer de optie "Lokaal". Voer voor "Bronpoort" de lokale poort in. Voer voor "Bestemming" het bestemmingsadres en de poort in het formulier remote_address: remote_port in.

    Als u bijvoorbeeld dezelfde SSH-tunnel als hierboven wilt instellen, voert u dit in 8888 als de bronpoort en localhost: 1234 als de bestemming. Klik achteraf op "Toevoegen" en klik vervolgens op "Openen" om de SSH-verbinding te openen. U moet natuurlijk ook het adres en de poort van de SSH-server zelf invoeren op het hoofdscherm 'Sessie' voordat u verbinding maakt.

    Remote Port Forwarding: maak lokale bronnen toegankelijk op een systeem op afstand

    "Externe poort doorsturen" is het tegenovergestelde van lokale doorsturen en wordt niet zo vaak gebruikt. Hiermee kunt u een bron op uw lokale pc beschikbaar maken op de SSH-server. Stel dat u bijvoorbeeld een webserver draait op de lokale pc waar u voor zit. Maar uw pc bevindt zich achter een firewall die geen inkomend verkeer naar de serversoftware toestaat.

    Ervan uitgaande dat u toegang hebt tot een externe SSH-server, kunt u verbinding maken met die SSH-server en externe poortdoorschakeling gebruiken. Uw SSH-client zal de server laten weten dat hij een specifieke poort (bijvoorbeeld poort 1234) op de SSH-server doorstuurt naar een specifiek adres en poort op uw huidige pc of lokaal netwerk. Wanneer iemand toegang krijgt tot de poort 1234 op de SSH-server, wordt dat verkeer automatisch "getunneld" over de SSH-verbinding. Iedereen met toegang tot de SSH-server heeft toegang tot de webserver die op uw pc wordt uitgevoerd. Dit is effectief een manier om door firewalls te tunnelen.

    Als u externe doorsturen wilt gebruiken, gebruikt u de ssh commando met de -R argument. De syntaxis is grotendeels hetzelfde als bij lokale doorzending:

    ssh -R remote_port: local_address: local_port [email protected]

    Stel dat u een servertoepassing wilt laten luisteren op poort 1234 op uw lokale pc, beschikbaar op poort 8888 op de externe SSH-server. Het adres van de SSH-server is ssh.youroffice.com en je gebruikersnaam op de SSH-server is bob. U voert de volgende opdracht uit:

    ssh -R 8888: localhost: 1234 [email protected]

    Iemand kan dan verbinding maken met de SSH-server op poort 8888 en die verbinding wordt getunneld naar de servertoepassing die wordt uitgevoerd op poort 1234 op de lokale pc waarmee u de verbinding tot stand hebt gebracht.

    Om dit te doen in PuTTY op Windows, selecteert u Verbinding> SSH> Tunnels. Selecteer de optie "Remote". Voor "Bronpoort" voert u de externe poort in. Voer voor "Bestemming" het bestemmingsadres en de poort in de vorm local_address: local_port in.

    Als u bijvoorbeeld het bovenstaande voorbeeld wilt instellen, voert u dit in 8888 als de bronpoort en localhost: 1234 als de bestemming. Klik achteraf op "Toevoegen" en klik vervolgens op "Openen" om de SSH-verbinding te openen. U moet natuurlijk ook het adres en de poort van de SSH-server zelf invoeren op het hoofdscherm 'Sessie' voordat u verbinding maakt.

    Mensen konden vervolgens verbinding maken met poort 8888 op de SSH-server en hun verkeer zou worden getunneld naar poort 1234 op uw lokale systeem.

    Standaard zal de remote SSH-server alleen naar verbindingen van dezelfde host luisteren. Met andere woorden, alleen mensen op hetzelfde systeem als de SSH-server zelf kunnen verbinding maken. Dit is om veiligheidsredenen. U moet de optie "GatewayPorts" inschakelen in sshd_config op de externe SSH-server als u dit gedrag wilt overschrijven.

    Dynamic Port Forwarding: gebruik uw SSH-server als een proxy

    Er is ook "dynamic port forwarding", die op dezelfde manier werkt als een proxy of VPN. De SSH-client maakt een SOCKS-proxy die u kunt configureren voor gebruik. Al het verkeer dat via de proxy wordt verzonden, wordt via de SSH-server verzonden. Dit is vergelijkbaar met lokale doorsturen: lokaal verkeer wordt naar een specifieke poort op uw pc gestuurd en via een SSH-verbinding naar een externe locatie verzonden.

    Laten we bijvoorbeeld zeggen dat u een openbaar wifi-netwerk gebruikt. U wilt veilig bladeren zonder te worden bespied. Als u thuis toegang hebt tot een SSH-server, kunt u verbinding maken en dynamische poort doorsturen gebruiken. De SSH-client maakt een SOCKS-proxy op uw pc. Alle verkeer dat naar die proxy wordt verzonden, wordt via de SSH-serververbinding verzonden. Niemand die het openbare Wi-Fi-netwerk controleert, kan uw browsing volgen of de websites waar u toegang tot heeft, censureren. Vanuit het perspectief van websites die u bezoekt, is het alsof u thuis achter uw pc zit. Dit betekent ook dat je deze truc zou kunnen gebruiken om toegang te krijgen tot websites die alleen US zijn, terwijl je buiten de VS bent - aangenomen dat je toegang hebt tot een SSH-server in de VS, natuurlijk.

    Als een ander voorbeeld wilt u mogelijk toegang krijgen tot een mediaservertoepassing die u op uw thuisnetwerk hebt. Om veiligheidsredenen is het mogelijk dat u alleen een SSH-server hebt die is blootgesteld aan internet. U staat inkomende verbindingen van internet niet toe aan uw mediaservertoepassing. U kunt dynamische poortdoorschakeling instellen, een webbrowser configureren om de SOCKS-proxy te gebruiken en vervolgens via de webbrowser toegang krijgen tot servers die op uw thuisnetwerk draaien alsof u thuis voor uw SSH-systeem zat. Als uw mediaserver zich bijvoorbeeld op poort 192.168.1.123 op uw thuisnetwerk bevindt, kunt u het adres aansluiten 192.168.1.123 in elke toepassing met behulp van de SOCKS-proxy en u krijgt toegang tot de mediaserver alsof u zich in uw thuisnetwerk bevond.

    Als u dynamisch doorsturen wilt gebruiken, voert u de opdracht ssh uit met de -D argument, zoals zo:

    ssh -D local_port [email protected]

    Stel dat u bijvoorbeeld toegang heeft tot een SSH-server ssh.yourhome.com en je gebruikersnaam op de SSH-server is bob . U wilt dynamische doorsturen gebruiken om een ​​SOCKS-proxy te openen op poort 8888 op de huidige pc. U voert de volgende opdracht uit:

    ssh -D 8888 [email protected]

    Vervolgens kunt u een webbrowser of een andere toepassing configureren om uw lokale IP-adres (127.0.01) en poort 8888 te gebruiken. Al het verkeer van die toepassing wordt omgeleid door de tunnel.

    Om dit te doen in PuTTY op Windows, selecteert u Verbinding> SSH> Tunnels. Selecteer de optie "Dynamisch". Voer voor "Bronpoort" de lokale poort in.

    Als u bijvoorbeeld een SOCKS-proxy op poort 8888 wilt maken, voert u dit in 8888 als de bronpoort. Klik achteraf op "Toevoegen" en klik vervolgens op "Openen" om de SSH-verbinding te openen. U moet natuurlijk ook het adres en de poort van de SSH-server zelf invoeren op het hoofdscherm 'Sessie' voordat u verbinding maakt.

    Vervolgens kunt u een toepassing configureren voor toegang tot de SOCKS-proxy op uw lokale pc (IP-adres 127.0.0.1, die verwijst naar uw lokale pc) en de juiste poort opgeven.

    U kunt Firefox bijvoorbeeld configureren om de SOCKS-proxy te gebruiken. Dit is met name handig omdat Firefox zijn eigen proxy-instellingen kan hebben en geen proxy-instellingen voor het hele systeem hoeft te gebruiken. Firefox verzendt zijn verkeer via de SSH-tunnel, terwijl andere toepassingen uw internetverbinding normaal gebruiken.

    Wanneer u dit in Firefox doet, selecteert u "Handmatige proxyconfiguratie", voert u "127.0.0.1" in het vak SOCKS-host in en voert u de dynamische poort in het vak "Poort" in. Laat de vakken HTTP Proxy, SSL Proxy en FTP Proxy leeg.

    De tunnel blijft actief en open zolang u de verbinding met de SSH-sessie open hebt. Wanneer u uw SSH-sessie beëindigt en de verbinding met een server verbreekt, wordt de tunnel ook gesloten. Maak gewoon opnieuw verbinding met de juiste opdracht (of de juiste opties in PuTTY) om de tunnel opnieuw te openen.