SSH tunnels,Reverse SSH en Poort Forwarding

Achtergrond URL’s
Openssh website
Debian SSH Tutorial(EN)

Geschreven door Maikel van Leeuwen, 14 februari 2013

 

changelog

 

  • 2017-09-11: Link naar ‘wat is mij ip adress’ aangepast naar een tracking free website.

 

Met enige verbazing viel het mij op dat er weinig handleidingen zijn over SSH-tunnels. Soms behandeld een de manier om een VPN verbinding te maken voor het browsen en/of mail, maar laat het de reverse SSH op de plank liggen. Juist die combinatie van VPN’en en reverse SSH’en maakt SSH zo’n krachtig middel voor remote control, backdoors, firewall avoidance en een goed middel tegen package sniffing sysadmins. Deze korte howto is niet gericht op de beginnende gebruiker, echter door het stap voor stap volgen van de handleiding moet het lukken om het een en ander voor elkaar te krijgen.

Benodigdheden

Ik ga er van uit dat je een netwerk verbinding, een server met toegang via SSH met het liefst root access en/of een vps en een computer waar SSH op staat met root access.

Browsen via een SSH-tunnel

Casus: Je logt in op een netwerk waarvan je weet dat het strak gemonitord wordt. Je wilt niet dat je surf gedrag bekend wordt of bepaalde sites zijn geblokkeerd, vanwege ‘huisregels’, zoals op vele scholen/universiteiten.

Stap 1 Controleer op https://www.vpnmentor.com/tools/ipinfo/ wat het adres is vanwaar je internet, zonder vpn.

Stap 2 Maak verbinding met je eigen server door te SSH’en met het volgende commando:

ssh -N -f -D 8080 user@example.org

Flags uitgelegd van voorbeeld code

  • -N Stuurt alle commando’s door naar /dev/null, ofwel het ‘maak een verbinding zonder commando’s uit te voeren’ modus.
  • -f Zet SSH in de achtergrond van een shell sessie.
  • -D Bind poort aan de computer en maak een tunnel naar de server.

Stap 3 Stel Firefox in zoals hier in het plaatje.

Stap 4 Ga naar whatismyip.com om te controleren of jouw browserverkeer door de tunnel gaat.

Het stoppen van een SSH-tunnel in de achtergrond

ps faux |grep ssh

Met ps bekijken we alle processen, door alleen de SSH processen te pakken kan je zien naar welke server je verbonden bent. met kill kan je dan het proces killen.

Reverse SSH/Reverse Port Forwarding

Met reverse SSH port forwarding kan je computers services laten aanbieden op het internet. Dit is bijvoorbeeld handig als je geen toegang hebt tot de NAT/Firwall en/of het wordt niet toegestaan. Zie het plaatje voor de uitleg. Wij maken eerst een tunnel naar een server buiten het eigen netwerk, vervolgens kan er via die server via een poort een verbinding terug gemaakt worden, zoals bijvoorbeeld SSH. Je maakt dus een nieuwe poort aan bij de server en verbind daar ssh aan. Je kan dan van een andere locatie SSH’en naar de poort op de server om dan de computer op het netwerk te bereiken.

Een bekende truuk van sysadmins is poort 22 naar buiten af te blokken. Je kan SSH op de server draaien op poorten die de sysadmin wel kan blokkeren, maar vaak niet doet. Dit, omdat anders het browsen niet meer mogelijk is. Draai je geen webserver dan kan je SSH op poort 80 draaien. Dat valt natuurlijk op, omdat poort 80 geen versleuteld verkeer normaal aanbied, echter op poort 443 draait er standaard SSL. Slimmer is dus om het op poort 443 te draaien.

Van theorie naar praktijk: Reverse SSH

Stap 1 Bind een lokale poort aan een poort van de server/vps.

ssh -f -N -q -R 2222:localhost:22 user@server.com

Uitleg van de flags

  • -f Zet SSH in de achtergrond
  • -N Voor na connectie geen commando’s uit
  • -q Quiet mode: Alle foutmeldingen onderdrukken
  • -R Bind poort naar een poort

Stap 2 Login in op de server en SSH naar de poort waar wij de computer achter de firewall aan hebben verbonden

ssh -p 2222 user@localhost;

Je kan nu alleen als je ingelogd ben op de server de poort bereiken. We kunnen ook SSH server zo tweaken dat de poort voor de gehele wereld bereikbaar is. Dit, doe je door de volgende regel in /etc/sshd_config te zetten:

GatewayPorts yes

Vergeet daarna niet de SSH-server daemon te reloaden. In Debian/Ubuntu doen wij:

/etc/init.d/ssh reload

Je hebt dus een proxy gemaakt van je server op deze poort. Via deze manier van handelen kan je allerlei poorten van het LAN achter de firewall opengooien naar de wereld, zoals webservers,mail. Op deze manier kan de rest van het LAN bereikt worden via het internet.