Brainfact.de All about IT

27Okt/110

Tinyproxy–Klein aber fein

Wer einen vServer oder einen Root-Server hat, kann diesen über einen SSH-Tunnel als Proxy benutzen um nicht auf direktem Weg mit dem Internet verbunden sein. Dies kann mehrere Vorteile haben, wie zum Beispiel wenn man seiner aktuellen WLan-Verbindung nicht vertraut (zB in einem Cafe), oder wenn man bewusst Logging in einem Netzwerk umgehen möchte (Schule, Uni, …).

Ich habe eine Weile nach einem kleinen und einfachem Proxy gesucht, da mir OpenVPN einfach zu groß für meine Zwecke schien. Ich habe mich nach ein bisschen suchen dann für tinyproxy entschieden, und kann mich bis heute nicht über diese Entscheidung beklagen. Ich werde euch nun die Installation, sowie die Verwendung unter Windows erklären. Die nachfolgende Anleitung ist für Ubuntu geschrieben, sollte jedoch auch auf Debian Servern funktionieren.

Zuerst muss man sich per ssh (als root) mit seinem Server verbinden. Hierzu empfehle ich Putty. (Dies wird zum Verbinden zum Proxy ebenfalls gebraucht.) Sobald man verbunden ist, muss tinyproxy erstmal installiert werden:

apt-get install tinyproxy

Sollte die Installation fehlschlagen, ist ggf ein apt-get update nötig. Dann sollte es aber klappen! Nun muss der Proxy erstmal konfiguriert werden. Ich verwende zum Bearbeiten vim, es funktioniert aber auch mit jedem anderen Editor (vi, nano, gedit, …).

vim /etc/tinyproxy/tinyproxy.conf

Ganz oben kann man erstmal festlegen, unter welchem Benutzer der Proxy laufen soll. Die Standartwerte User nobody und Group nogroup können einfach so gelassen werden. Wichtig ist aber nun, den Listen-Port für den Proxy einzustellen:

Port 5050

Ich habe meinen Port auf 5050 gestellt, ihr könnt aber einen beliebigen Port wählen. Dabei muss man jedoch unbedingt darauf achten, keinen Standartport zu blockieren!

Jetzt sollte man die Listen Einstellung auf Localhost stellen, um Verbindungen von außerhalb erstmal zu unterbinden (tinyproxy bietet kein auth-modul):

Listen 127.0.0.1

Die Bind Einstellung kann man auskommentieren. Das Timeout für Connections sollte man zwischen 400 und 800 Sekunden setzen, ist aber wenn man den Proxy als einziger verwendet keine Wichtige Einstellung.

Timeout 800

Nun kann man Error-Files einstellen, das braucht man meiner Meinung nach aber nicht. Die Stat-File und die Logfile Settings kann man konfigurieren (an/aus stellen, …) – sie sollten aber schon sinnvoll eingestellt sein.

Nun kommt wieder eine wichtige Einstellung XTinyproxy. Diese unbedingt auskommentieren! Ansonsten leitet der Proxy eure eigentliche IP weiter.

Die Einstellungen MaxClients, MinSpareServers und MaxSpareServers, StartServers und MaxRequestsPerChild würde ich für einen einzigen Benutzer wie folgt einstellen:

MaxClients 20

MinSpareServers 5

MaxSpareServers 10

StartServers 2

MaxRequestsPerChild 0

Jetzt kommt ein wichtiger Teil – die Zugangskontrolle. Da wir die Verbindung zum Proxy per SSH-Tunnel aufbauen wollen, erlauben wir nur Lokale Verbindungen:

Allow 127.0.0.1

Nun kommen Einstellungen zum Filtern und Anonyme Verbindungen, diese kann man aber so lassen.

Zuletzt kann man noch Einstellen, welche Outgoing-Ports der Proxy unterstützen soll. Port 80 ist immer erlaubt (HTTP), Port 443 & 563 (HTTPS) sind bereits in der Config Datei eingetragen. Wer zB FTP noch hinzufügen mag, könnte noch Port 21 eintragen:

ConnectPort 443

ConnectPort 563

ConnectPort 21

Das war’s auch schon mit dem Konfigurieren. Datei speichern und tinyproxy neustarten:

/etc/init.d/tinyproxy stop

/etc/init.d/tinyproxy start

Jetzt läuft der Proxy auf dem Server. Nun brauchen wir nur noch unseren SSH Tunnel einrichten, und dann können wir schon über den Proxy surfen! Dazu starten wir Putty (siehe oben) erneut. Unter Host-Name wieder den Server, unter Port 22 (SSH). Nun klicken wir links unter “Connection” auf “SSH” und dann auf “Tunnels”. Hier tragen wir unter “Add new forwarded port:” folgendes Einstellungen ein:

Source-Port: 5050

Destination: localhost:5050

[X] Local

[X] Auto

Dann auf “Add” klicken. Jetzt wieder Links zurück auf “Session” drücken, dann auf “Open” klicken. Dann wie gewohnt die SSH-Logindaten eingeben. Jetzt steht auch der SSH-Tunnel! Nun muss dieser noch bei Firefox unter Proxy-Einstellungen eingetragen werden. Dazu klicken wir auf “Einstellungen” > “Erweitert” > “Netzwerk” > “Festlegen wie sich Firefox mit dem Internet verbindet”. Dann “Manuelle Proxy-Konfiguration” wählen, einen Hacken bei “Für alle Protokolle diesen Proxy Server verwenden” und bei HTTP-Proxy localhost und Port 5050 einstellen. Mit OK bestätigen. Das wars!

Unter Wie Ist Meine Ip.de kann man jetzt nachprüfen, ob man wirklich die IP von seinem Server hat – und per Wireshark kann man sich selbst Packet-Sniffen und nur noch Verschlüsselte SSH-Verbindungen sehen, keine HTTP Requests mehr! Smiley