Vollständige Version anzeigen : Transparenter SOCKS via Gateway


chrisb
08.09.2009, 14:00

Hallo zusammen.

Dies ist mein erstes Tutorial und dessen Ziel ist es, den kompletten Traffic in das Internet über einen SOCKS-Proxy umzuleiten. Kurz: Es geht um eine andere Methode, einen SOCKS-Proxy transparent zu machen.

Viele von euch kennen gewiss so genannte "Socksifier", welche die Daten der Programme, welche keine native Proxy Unterstützung anbieten, über den Proxy leiten. Beispielsweise erfreuen sich Proxifier / FreeCap unter Windows bzw. tsocks / proxychains unter Linux an Beliebtheit. Ein großes Problem dieser Programme ist jedoch, dass man sich nie vollkommen sicher sein kann, dass auch wirklich der gesamte Traffic über den Proxy läuft. So machen beispielsweise Java Programme des öfterens ihre eigenen Dinge und verbinden sich direkt auf den angeforderten Server.

Aufgrund dieser Problematik haben viele in der Vergangenheit auf das VPN-Konzept zurückgegriffen. Dass dies auch ohne einen VPN-Server funktionieren kann, werde ich euch in diesem Tutorial zeigen. Zunächst muss das Grundprinzip hierzu erläutert werden:

In den häufigsten Konfigurationen von Heimnetzwerken tritt der Router, der die Verbindung zum Internet herstellt, gleichzeitg als die Gateway auf. Die simple Idee ist nun, dem Router diese Aufgabe abzunehmen. Dies können wir erreichen, in dem wir einen zusätzlichen Server zwischen dem PC und dem Router schalten, der als neue Gateway fungiert. Dieser Server wird die Aufgabe haben, sämtliche eingehende IP-Pakete über den SOCKS-Proxy weiterzuleiten. So kann gewährleistet werden, dass alle TCP- bzw. UDP-Pakete erst über den Proxy gehen, bevor sie von dort weiter das weltweite Internet besuchen. Um zusätzlich die Sicherhei zu erhöhen, werde ich in diesem Tutorial die Verbindung zum SOCKS via SSH-Tunnel herstellen.

Das Verbindungsschema sieht demnach wie folgt aus:
Dein PC <=> Gateway <=> (verschlüsselt) Router <=> ISP <=> Proxy <=> (meist unverschlüsselt) Internet (<=> bidirektional)

Nach dieser mehr oder weniger langen Erklärung kann es nun endlich losgehen.

Die Voraussetzungen:

Remote SSH Server; Funktion; SOCKS5
Linux Server; Funktion: Gateway
Interesse am Thema :)


Step-by-Step:


Stelle auf der Gateway eine Verbindung zum SSH Server her und starte gleichzeitig einen SOCKS5-Tunnel auf Port 7777 (localhost):
ssh -D 7777 user;SSH-Server # für weitere Details: man ssh
Installiere libevent auf der Gateway. Meist ist die Library in den Paketmanagern der Distributionen bereits enthalten.
Beispielsweise in Ubuntu: sudo apt-get install libevent-dev libevent1
Kompiliere transocks_ev auf der Gateway:
svn co ;oss;tiggerswelt~net/transocks_ev/
cd transocks_ev
make

Ein kleiner Auszug aus der README des Tools:
tranSOCKS_ev - libevent-based, non-forking and transparent SOCKS5-Proxy

[.;]

tranSOCKS_ev is a transparent socks proxy, inspired by the idea of
transocks ((;transocks;sourceforge~net)).

In some cases you might redirect TCP/IP-Traffic on your network-router
trough a transparent SOCKS-Proxy. tranSOCKS_ev is a user-space daemon for
linus that does this job perfectly based on iptable-filter-rules;

Starte transocks_ev wie folgt :
;/transocks_ev -p 8888 -s 7777 -S 127;0;0;1
Erklärung: -p Port auf dem transocks_ev auf eingehende Verbindungen wartet; -s Port des SOCKS; -S IP des SOCKS
In die Thematik iptables bzw. NAT einlesen, z;B. hier:
NAT mit Linux und iptables - Tutorial (Einführung) (;;;karlrupp~net/de/computer/nat_tutorial)
Führe den folgenden Befehl aus, um das IP Forwarding im Kernel zu aktivieren:
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
Ändere die iptables Konfiguration ab, verwende dabei das folgendes Skript:

#!/bin/bash

# name: run~sh

# Where to find iptables
IPTABLES="/sbin/iptables"

# Port that is transocks listening on
TRANSOCKS_PORT="8888"

# Location of our SOCKS-server
SOCKS_HOST="127;0;0;1"
SOCKS_PORT="7777"

# Create our own chain
$IPTABLES -t nat -N transocks

# Do not try to redirect local traffic
$IPTABLES -t nat -I transocks -o lo -j RETURN

# Do not redirect traffic for the SOCKS-Server
$IPTABLES -t nat -I transocks -p tcp -d $SOCKS_HOST --dport $SOCKS_PORT -j RETURN
$IPTABLES -t nat -I transocks -p udp -d $SOCKS_HOST --dport $SOCKS_PORT -j RETURN

# Do not redirect local network
$IPTABLES -t nat -I transocks -d 192;168;0;0/24 -j RETURN # dein lokales Netzwerk
$IPTABLES -t nat -I transocks -d [weitere IP] -j RETURN # [weitere IP] kann z;B. dein Rootserver sein, auf dem du dich direkt verbinden möchtest

# Redirect all traffic that gets to the end of our chain
$IPTABLES -t nat -A transocks -p tcp -j REDIRECT --to-port $TRANSOCKS_PORT
$IPTABLES -t nat -A transocks -p udp -j REDIRECT --to-port $TRANSOCKS_PORT

# Filter all traffic that is routed over this host
$IPTABLES -t nat -A PREROUTING -j transocks


chmod 777 run~sh
;/run~sh

Anmekerung: Natürlich muss das Skript auf eigene Bedürfnisse angepasst werden.
Trage bei allen Computern, die ausschließlich via verschlüsseltem SOCKS5-Proxy ins Internet gehen sollen, als Default Gateway die IP des Linux Server anstatt die des Routers ein
Spiele mit tcpdump bzw. Wireshark herum, um zu sehen, ob auch wirklich alles getunnelt wird
Spaß haben und Bier trinken ;)


Ich verwende diese Konfiguration nun seit mehreren Tagen und bin von der Idee begeistert. Als Linux Server musste mein altes, armen Laptop herhalten . ;) Viel Spaß beim vollständigen, anonymen Surfen ohne VPN-Tunnel! :)

Bei Fragen könnt ihr mir gerne eine PN schreiben.

Hardware Preisvergleich | Amazon Blitzangebote!

Videos zum Thema
Video Loading...
Ähnliche Themen zu Transparenter SOCKS via Gateway
  • irfanview - transparenter hintergrund bei png
    hey, wollte mal sagen, war mir grad aufgefallen ist. ich hab ne png-datei mit transparentem hintergrund in irfanview geöffnet, größe geändert und dann wieder als png-datei abgespeichert. allerdings entsprach der hintergrund dieses verkleinerten bildes den hintergrund von irfanview (in meinem [...]

  • Transparenter Hintergrund in Cinema 4D
    Hi, wie der Titel schon sagt, wollte ich einen transparenten Hintergrund in Cinema 4D erstellen. Also d;h. ich will einen Schrifteffekt als Video machen und später, nach dem Rendern, darunter n' Video packen. Hat einer ne Ahnung wie das geht, BW is natürlich drin. Achso, ich kenn mich mit dem P [...]

  • Transparenter Hintergrund in C4D
    Hi, also ich hab ein Problem beim rendern in c4d immer wenn ich mein bild render und speicher, egal in welchem format ,ist der Hintergrund schwarz aber ich will dass er transparent also unsichtbar ist, so nun will ich von euch wissen wie ich das mache. Ich hoffe ihr könntm ir helfen Danke schon mal [...]

  • Transparenter Hintergrund
    Hi Leute. Hab da nen Problem und die SUFU hat nix ausgespuckt. Und zwar hab ich mir ne Signatur gemacht wo der Hintergrund Transparent sein soll. Und da liegt das Problem immer wenn ich speicher ist der Hintergrund trozdem weiß. Ich weis nicht ob da irgendwas einzustellen ist oder was anderes deswe [...]



raid-rush.ws | Imprint & Contact pr