Main contents

ssh Socks proxy

Sunday, June 19th, 2011

In einem offenen Wlan kann jeder Computer den Netzverkehr jedes anderen Computers mithören. Deshalb sollte man in einem solchen Wlan vorsichtig mit Passwörtern sein, wie die Firefox Erweiterung Firesheep gezeigt hat. In einem offenen Wlan ist es deshalb sinnvoll seine Daten über einen verschlüsselten Proxy umzuleiten. Zum Glück ist es einfach mit ssh einen Socks Proxy zu erstellen.

ssh -f -ND8080 user@server.tld

Die Option -D öffnet den Socks Proxy auf dem Port 8080, -N und -f sorgen dafür dass ssh keine Konsole öffnet. Dann noch kurz sein Passwort eingeben und schon hat man eine verschlüsselte Verbindung, die man als Proxy unter Einstellungen in Firefox oder Thunderbird als Socks Proxy mit der Adresse 127.0.0.1:8080 eintragen kann.

Damit ssh die Verbindung automatisch aufbaut ist ein wenig mehr Aufwand erforderlich. Zuerst muss man sich ohne Passwort auf dem Server einloggen können, das geht mit public key authentification, eine gute Anleitung dafür gibt es hier.
Der letzte Schritt ist ein Script zu schreiben, damit der Proxie auch bei jedem Systemstart gestartet wird.

#!/bin/sh
# Script based on article at
# http://sysadminsjourney.com/content/2008/12/18/use-networkmanager-launch...
# and on
#http://linuxnet.ch/groups/linuxnet/wiki/5a9b8/Bash_script_that_open_and_close_an_sshtunnel_automagically.html
IF=$1
STATUS=$2
LOGFILE=/path/to/log
#echo $STATUS >> $LOGFILE
# If we're coming online
if [ "$STATUS" = "up" ]; then
su - yoshi -c "ssh -f -ND8080 user@server.tld"
# echo "Tunnel started" >> $LOGFILE
fi
# If we're going offline, disable the proxy.
if [ "$STATUS" = "down" ]; then
CMD="ps -eo pid,args | grep 'ssh -f -ND8080 user@server.tld' | grep -v 'grep' | cut -c1-6"
# echo $CMD /home/yoshi/scripts/test.log
PID=`eval $CMD`
# echo "Killing $PID" >> $LOGFILE
kill -9 $PID
fi

NetworkManager führt bei jeder Änderung eines Interfaces alle ausführbaren Scripte in

/etc/NetworkManager/dispatcher.d/

aus. Dabei werden zwei Parameter übergeben, welches Interface und ob das Interface aktiv wurde oder abgeschaltet wurde. Das Script überprüft, ob ein Interface eingeschaltet oder abgeschaltet wurde und startet dann entweder den Proxie (erstes if … fi) oder beendet ihn. Das script muss mit root Rechten in den Ordner und es sollte mit chown +x ausführbar gemacht werden.

This entry is filed under Uncategorized. You can follow any responses to this entry through the RSS 2.0 feed.You can leave a response, or trackback from your own site.