Als het gaat om het beveiligen van je voetafdruk op het web, heb je misschien wel eens gehoord van VPN's, toch? Een VPN fungeert als tussenpersoon tussen je computer en het internet. Al het verkeer gaat via de VPN-server, waardoor je IP-adres en locatie effectief worden gemaskeerd.
VPN is echter niet de enige vorm van een proxyserver. SOCKS (Socket Secure) is een vergelijkbaar netwerkprotocol dat communicatie met servers via een firewall mogelijk maakt door het netwerkverkeer namens een client te routeren. Vergeleken met VPN biedt SOCKS meer flexibiliteit en controle over de netwerkconfiguratie. Het is handig als je de VPN-client niet kunt installeren of een VPN-provider niet vertrouwt.
Deze gids zal demonstreren hoe je een SSH SOCKS 5-proxytunnel opzet en je webverkeer door de tunnel routeert.
Vereisten
Voor de demonstratie hebben we een lokale machine met Ubuntu desktop gebruikt en een externe machine met Ubuntu server. Je moet SSH geconfigureerd hebben voordat het soepel werkt. Omdat we een SOCKS-proxy gebruiken, hebben we om de verbinding te testen een app nodig die deze kan gebruiken. Firefox is een perfect voorbeeld. Het is een moderne webbrowser die de SOCKS 5-proxytunnel ondersteunt.
Als je Windows gebruikt, gebruik je ofwel WSL (Windows Subsystem for Linux) om een lokale Linux-omgeving op te zetten of gebruik je PuTTY, een open-source app die verschillende netwerkprotocollen zoals Telnet, rlogin, enz. kan implementeren.
De SOCKS-tunnel configureren
-
De SOCKS-tunnel opzetten (macOS/Linux)
Op de lokale computer moeten we een SSH-sleutel configureren om een veilige verbinding te garanderen. De SSH-sleutel moet ook op het externe systeem worden geregistreerd. Deze gids over het configureren van SSH-sleutelgebaseerde authenticatie demonstreert het proces in detail.
Het volgende SSH-commando zal een SOCKS-tunnel naar de externe server tot stand brengen:
|
1 |
ssh -i ~/.ssh/id_rsa -D 2000 -f -C -q -N <remote_username>@<remote_server> |

Laten we het commando ontleden:
-
-i: Dit vertelt SSH welke SSH-sleutel moet worden gebruikt voor de verbinding.
-
-D: Dit vertelt SSH dat we een SOCKS-tunnel willen opzetten. Wat betreft de poort, we gebruiken poort 1024. Het is geen vaste waarde. Je kunt elke poort kiezen tussen 1024 en 65536.
-
-f: Het SSH-proces wordt naar de achtergrond verplaatst (forked).
-
-C: SSH zal de gegevens comprimeren voordat ze naar de externe server worden verzonden. Dit kan zowel het dataverbruik verminderen als de effectieve bandbreedte verhogen.
-
-q: Voer de tool uit in stille modus (quiet mode).
-
-N: Dit vertelt SSH dat er na het opzetten van de tunnel geen commando zal worden verzonden.
Eenmaal uitgevoerd, kunnen we controleren of het proces correct is gestart. Het volgende commando toont informatie over alle actieve SSH-processen:
|
1 |
ps aux | grep ssh |

Nu kun je het terminalvenster veilig sluiten. Het SSH-proces zal op de achtergrond blijven werken zoals bedoeld.
-
SOCKS-tunnel opzetten (Windows)
Voor Windows-gebruikers is het gebruik van PuTTY een eenvoudigere oplossing. Eerst moet je PuTTY downloaden:

Start PuTTY na de installatie op:

Voer in het tabblad Session in het linkerpaneel de Host Name (or IP address) van je server in. Selecteer bij Connection type de optie SSH. Ga vervolgens naar Connection >> SSH >> Tunnels. Selecteer hier, onder het veld Destination, de opties die in de schermafbeelding worden getoond:

Klik vervolgens op Open. Er verschijnt een terminalvenster om via SSH verbinding te maken met de externe server. Log in op de externe server:

De SOCKS-tunnel implementeren
De tunnel is nu ingesteld. Elke app die SOCKS ondersteunt, kan de tunnel gebruiken. Ter demonstratie is Firefox een uitstekend voorbeeld.
Open eerst Firefox. Klik in de rechterbovenhoek op het menu-icoon. Ga naar Instellingen:

Zoek vervolgens naar proxy. Klik op Instellingen bij Configureer hoe Firefox verbinding maakt met het internet:

Selecteer daarna Handmatige proxyconfiguratie. Gebruik voor de SOCKS-host, localhost of 127.0.0.1. Voer vervolgens bij de poort de poort in die we hebben toegewezen aan de SOCKS-tunnel. Vergeet niet om SOCKS_v5:

te selecteren. Vink ten slotte de optie DNS proxyen bij gebruik van SOCKS_v5 aan. Klik op OK om door te gaan.
Open vervolgens een nieuw tabblad en probeer een webpagina te openen. Je kunt bijvoorbeeld je IP-adres controleren via CheckMyIP.
De proxy terugdraaien
Wanneer u de proxyverbinding met de SSH-tunnel niet meer nodig heeft, kunt u deze veilig uitschakelen in de proxy-instellingen van Firefox:

Selecteer in het venster Systeemproxyinstellingen gebruiken en klik op OK.
De SOCKS-tunnel sluiten
-
De tunnel sluiten op macOS/Linux
Om de tunnel te sluiten, moeten we het SSH-proces handmatig beëindigen. We hebben de PID (proces-ID) van het SSH-proces nodig. Het volgende commando toont de PID's van alle actieve SSH-processen:
|
1 |
ps aux | grep ssh |
Noteer het SSH-proces dat actief is met het commando om de tunnel te maken. Beëindig het proces:
|
1 |
kill <tunnel_ssh_pid> |
Als er geen optie is gedefinieerd, zal het kill commando een generiek SIGTERM signaal naar het doelproces sturen. U kunt meer leren over Linux-procesbeheer in deze handleiding.
-
De tunnel sluiten op Windows
Het sluiten van het PuTTY-venster zou de tunnelverbinding moeten sluiten.
Probleemoplossing
Hier zijn enkele veelvoorkomende problemen die u kunt tegenkomen bij het gebruik van SOCKS om verkeer om te leiden.
-
Firewall
Als u geen verbinding kunt maken vanwege een firewallbeperking, is de firewall waarschijnlijk geconfigureerd om verbindingen met poort te blokkeren22. Dit is de standaardpoort die SSH gebruikt om verbinding te maken met externe systemen. Sommige poorten blijven standaard open, bijvoorbeeld poort 80 (algemeen webverkeer) en poort 443 (TLS, beveiligd webverkeer).
Als de SSH-server geen webinhoud serveert, kunnen we een van de standaardpoorten ( 80 of 443 ) gebruiken in plaats van poort 22. Het wordt aanbevolen om poort te gebruiken443 omdat deze standaard versleuteld verkeer verwacht. Het zal ook het uitgaande verkeer versleutelen. Om deze wijziging door te voeren, moeten we het SSH-configuratiebestand aanpassen. Open het bestand in een teksteditor:
|
1 |
sudo nano /etc/ssh/sshd_config |
SSH kan meerdere poorten voor zijn doel gebruiken. Scrol omlaag in het configuratiebestand en zoek het poortgedeelte:

Zodra de wijzigingen zijn aangebracht, slaat u het bestand op en sluit u de editor. Start de SSH-service opnieuw op om de wijziging toe te passen:
|
1 |
sudo service ssh restart |
Om te controleren of de nieuwe poort werkt, probeert u verbinding te maken met de externe server via de nieuwe poort:
|
1 |
ssh <remote_username>@<remote_server> -p 443 |
Als de verbinding succesvol was, kunnen we poort veilig gebruiken443 voor SSH-tunneling. Hier is het herziene commando om de SOCKS-tunnel op te zetten:
|
1 |
ssh -i ~/.ssh/id_rsa -D 2000 -f -C -q -N <remote_username>@<remote_server> -p 443 |
Hier vertelt de vlag -p SSH om poort te gebruiken443.
Laatste gedachten
In deze tijd zijn privacy en beveiliging enkele van de grootste zorgen. Er zijn veel manieren om veilig te browsen wanneer u zich op een onveilig netwerk bevindt. In de meeste gevallen biedt het gebruik van een VPN voldoende beveiliging voor uw netwerkverkeer. Aan de andere kant biedt een SOCKS-tunnel u de nodige beveiliging als u een VPN niet kunt of wilt vertrouwen. Het hebben van een SOCKS-tunnel geeft u bovendien volledige controle over de configuratie.
Veel computerplezier!
Reacties
Nog geen reacties. Wees de eerste.