Zum Inhalt springen

Proxysetup für Surfen in unsicheren Netzwerken

Hin und wieder bin ich – beispielsweise heute beim Barcamp Ruhr 3 – in offenen WLANs unterwegs. Während ich mir um Mails keine Gedanken machen muss (lese ich per ssh und mutt direkt auf dem Server) werden prinzipiell alle HTTP-Verbindungen auch innerhalb des WLANs unverschlüsselt übertragen. Damit wäre zum Beispiel das Passwort hier für das Weblog, bei dem kein Login per SSL möglich ist, im WLAN mit lesbar.

Daher habe ich mir gerade ein winziges Setups vorbereitet, bei dem die Verbindung zumindest innerhalb des WLANs verschlüsselt erfolgt. Danach ist sie weiter unverschlüsselt, aber der zumindest der leichte Zugang innerhalb des WLANs ist nicht mehr möglich. Dazu benötigt ihr nur irgendwo einen (Linux-)Server und ein paar Zeilen Konfiguration.

1. Schritt: Proxy auf einem Server einrichten

Als erstes setzt ihr auf eurem Server einen Proxydienst auf. Läuft noch keiner, konfiguriert ihr ihn so, dass er nur auf lokale Zugriffe hört. Ihr wollt ja schließlich nicht für das ganze Internet einen offenen Proxy bereitstellen. Läuft bereits ein Proxy, müsst ihr ggf. zusätzlich den lokalen Zugriff erlauben.

Bei de weit verbreiteten Proxy Squid geht das ganz einfach durch Einfügen dieser Zeilen in der Konfiguration:
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
acl our_networks src 127.0.0.0/8
http_access allow our_networks

2. Schritt: ssh-Tunnel

Nun braucht ihr eine sicher Verbindung von eurem Notebook zum Server. Dazu tunnelt ihr den Port 3128 (oder ggf. einen anderen Proxyport) mittels ssh.

In der Kommandozeile direkt per ssh sieht das so aus:
ssh -L3128:127.0.0.1:3128 user@somehost.tld

Sorgt am besten noch für das Senden eines KeepAlive-Pings durch den ssh-Client, damit der Server die Verbindung nicht zwischendurch trennt. Dazu habe ich in meiner /etc/ssh/ssh_config folgende Zeilen eingefügt:
# Send keep alive packet every 15 seconds
ServerAliveInterval 15

Bei Putty unter Windows findet ihr die Einstellungen unter Connection/SSH/Tunnels. Dort klickt ihr „Remote ports do the same“ an und tragt unten „Source port“ 3128 und als „Destination“ den Wert „127.0.0.1:3128“ ein und klickt auf „Add“. Dann die Verbindung am besten speichern.

3. Schritt: Lokalen Proxy konfigurieren

Nun müsst ihr im Webbrowser nur noch die IP 127.0.0.1 mit Port 3128 als Proxy eintragen. Dieser Port wird dann über die verschlüsselte SSH-Verbindung zum Server weitergeleitet und geht erst ab dort unverschlüsselt ins Internet. Für SSL braucht ihr natürlich keinen Proxy eintragen, weil diese Verbindung ohnehin selbst verschlüsselt ist.

Vergleichbare Setups könnt ihr natürlich auch mit anderer Software realisieren.

6 Kommentare

  1. Ich nutze seit langem Proxyfier und Putty, damit kannst du allen Traffic, wirklich allen, über ein ebestehene SSH Verbindung tunneln. Selbst in einem WLAN ohne jegliche Verschlüsselung wie man es oft auf Messen findet ist somit absolut nichts zu befürchten.

  2. Danke für die Ergänzung! Leider läuft die Software nicht auf Linux und kommt damit nicht für mich in Frage.

  3. Markus

    Was spricht aus deiner Sicht gegen Lösungen wie HotspotShield oder OpenVPN’s mit entsprechendem Client?

  4. HotSpotShield: Läuft mal wieder nur mit Windows (was ich nicht habe) und zudem laufen meine Daten über fremde Server. Und für OpenVPN bin ich heute morgen einfach zu faul gewesen. 🙂

  5. SSH bringt doch von Haus aus einen Socks-Proxy mit.
    Nutzbar einfach per Putty mit dynamischen Portforward oder halt unter Linux mit der Option „-D“.
    Oder verwechsele ich da was?

  6. eo

    Ich sehe ein Problem. In fremden WLAN-Netzen habe ich meist kein Proxy zur Verfügung. nd den Proxy zu Hause aufzustellen versucht nur unnützen Traffic. Quo vadis also?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert