Netzwerkverkehr über Proxy leiten

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
thomas235
Beiträge: 71
Registriert: 28.04.2012 14:36:19

Netzwerkverkehr über Proxy leiten

Beitrag von thomas235 » 20.02.2013 14:23:52

Hallo zusammen,

ich hätte mal ne kleine Frage zur Verwendung des lokalen Proxys Privoxy:
Ich weiß, dass man bestimmte Programme so konfigurieren kann, dass sie Privoxy verwenden, aber geht das auch systemweit?
Also dass alle ausgehenden Verbindungen automatisch über localhost:8118 geroutet werden?
Ich habe mir schon überlegt, ob man dafür evtl. iptables mit -nat und PREROUTING verwenden könnte?

gruß thomas235

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Netzwerkverkehr über Proxy leiten

Beitrag von syssi » 20.02.2013 14:48:17

Genau so kann man es machen. Ein Beispiel:

Code: Alles auswählen

iptables -t nat -A PREROUTING -i wlan0 -p tcp --syn  -j REDIRECT --to-ports 9040
iptables -t nat -A PREROUTING -i wlan0 -p udp --dport 53 -j REDIRECT --to-ports 9053
Wirft saemtlichen TCP-Traffic gegen Tor. Damit keine DNS-Requests an Tor vorbei rauschen werden auch saemtliche DNS-Requests auf die Tor-Node umgebogen.

Gruss syssi

uname
Beiträge: 12484
Registriert: 03.06.2008 09:33:02

Re: Netzwerkverkehr über Proxy leiten

Beitrag von uname » 20.02.2013 14:55:09

Privoxy ist aber scheinbar nur ein HTTP-Proxy. HTTP-Proxy wurden früher zum vor allem zu cachen und filtern eingesetzt. Beides halte ich heutzutage für vollkommen unnötig. Es wäre interessanter zu erfahren was du erreichen willst. Dann könnte man auch ernsthafte Vorschläge machen.
Willst du privat Privoxy nutzen würde ich einfach im Browser den Proxy entsprechend manuell konfigurieren und evtl. noch das direkte Routing von HTTP-Traffic (meist Zielports 80, 81, 443, ...) per iptables unterbinden.

wanne
Moderator
Beiträge: 7622
Registriert: 24.05.2010 12:39:42

Re: Netzwerkverkehr über Proxy leiten

Beitrag von wanne » 20.02.2013 15:16:20

Nohmal zusammenfassend: Privoxy ist nur ein HTTP-Proxy => Er kann nur HTTP umleiten. Anders sieht das mit SOCKS-Proxys, wie sie TOR bereit stellt oder VPNs aus. Da kann man alles durchleiten.
Systemweit gibt es die Vriable http_proxy aus der alle Browser holen sollten, welche Proxy sie nehmen sollen. Ob sie das dann auch machen ist eine andere Frage.
Alternativ kannn man auch eine Transparente Proxy erstellen also versuchen allen HTTP-Traffic zu erkennen und den gewaltsam (über iptables) über die Proxy zu leiten. (Das halte ich allerdings wirklich nicht mehr zeitgemäß, zumal die Erkennung mitunter nicht so einfach ist und das dann mit unter gerne mal was zuviel umleitet, da sich mittlerweile fast alle dienste als HTTP tarnen weil die ganzen Firewalls nichts mehr anderes durch lassen.)
rot: Moderator wanne spricht, default: User wanne spricht.

thomas235
Beiträge: 71
Registriert: 28.04.2012 14:36:19

Re: Netzwerkverkehr über Proxy leiten

Beitrag von thomas235 » 20.02.2013 15:25:47

Hallo,

die Antwort von syssi ist genau das was ich wollte.
Ich dachte aber man müsse vor Tor einen HTTP-Proxy schalten, deswegen hab ich meine Frage auf Privoxy bezogen.
@syssi ich hab die 2 Befehle mal ausprobiert: iptables zeigt nun zwar an, dass umgeleitet wird, aber eine Wirkung auf meinen Traffic kann ich bisher nicht feststellen
iptables -t nat --list:

Code: Alles auswählen

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
REDIRECT   tcp  --  anywhere             anywhere            tcp flags:FIN,SYN,RST,ACK/SYN redir ports 9050 
REDIRECT   udp  --  anywhere             anywhere            udp dpt:domain redir ports 9053 

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination   
gruß thomas235

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Netzwerkverkehr über Proxy leiten

Beitrag von syssi » 20.02.2013 16:23:55

Du solltest dir in der Tat Gedanken machen, was du eigentlich bezwecken willst. Privoxy waescht deine HTTP-Requests sauber bevor sie an das Ziel weitergereicht werden. Wirfst du deine HTTP-Anfrage einfach in die Tor-Node, dann surfst du noch lange nicht anonym.

Mit welchen Zeilen hast du iptables genau gefuettert? Du solltest ausserdem verhindern, dass du deine Tor-Node nicht lahm legst. In meinem Fall spricht die Node auf einem anderen Interface (eth0) mit der Außenwelt. In deinem Fall versumpfst du gerade allen Traffic auf Port 9050 (vermute ich mal).

thomas235
Beiträge: 71
Registriert: 28.04.2012 14:36:19

Re: Netzwerkverkehr über Proxy leiten

Beitrag von thomas235 » 20.02.2013 16:27:24

ich habe die Befehle

Code: Alles auswählen

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --syn  -j REDIRECT --to-ports 9050
sudo iptables -t nat -A PREROUTING -i eth0 -p udp --dport 53 -j REDIRECT --to-ports 9053
eingegeben.
Also du meinst, ich sollte lieber alle Requests an Privoxy also an Port 8118 leiten, als an Tor (Port 9050 bei mir)?

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Netzwerkverkehr über Proxy leiten

Beitrag von syssi » 20.02.2013 23:03:03

Nein, ich meine du solltest einmal klar stellen, was dein Ziel ist. Deine Zeilen koennen nicht funktionieren, sofern deine Tor-Node ueber eth0 ebenfalls mit der Aussenwelt kommuniziert. Sobald die Tor-Node ein Packet verschickt wirft iptables dieses Packet wieder gegen die Tor-Node. Du siehst das Problem?

In meinem Beispiel kam der Traffic von wlan0. Die iptables-Regel greift also nicht, wenn die Node ueber eth0 mit der Aussenwelt kommuniziert. Du solltest deine Regel so anpassen, dass sie nur fuer deine Zwecke greift und die Tor-Node unbeeinflusst laesst.

thomas235
Beiträge: 71
Registriert: 28.04.2012 14:36:19

Re: Netzwerkverkehr über Proxy leiten

Beitrag von thomas235 » 21.02.2013 10:51:59

Hallo,

ok, ich glaube ich verstehe.
Dann müsste ich in meinem Fall ein zweites Interface erstellen, das ohne Umleitung mit dem Internet kommunizieren darf (eth1).
Die Umleitung wird dann auf alle Verbindungen in eth0 angewandt, aber wie sage ich Tor, dass es sich über eth1 verbindet und den restlichen Programmen, dass sie über eth0 gehen sollen?

gruß thomas235

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Netzwerkverkehr über Proxy leiten

Beitrag von syssi » 21.02.2013 16:40:17

Eine Alternative ist ein weiteres iptables-Feature, welches dafuer sorgt, dass die Regel nur bei bestimmten Usern greift:

Code: Alles auswählen

iptables -t nat -A PREROUTING -p tcp -m owner --uid-owner 1000 -j REDIRECT --to-ports 9040
Hier wird jeglicher Traffic von UID 1000 gegen deine Tor-Node geworfen. Man kann diese Regel auch umdrehen, so dass die UID deiner Tor-Node vom Regelwerk ausgespart wird. Der Fantasie sind keine Grenzen gesetzt! ;-)

wanne
Moderator
Beiträge: 7622
Registriert: 24.05.2010 12:39:42

Re: Netzwerkverkehr über Proxy leiten

Beitrag von wanne » 21.02.2013 16:59:17

@syssi gib's zu den hast du von Cae geklaut. Wenn du geständig bist, überlegen wir uns nochmal ob wir Gnade vor Recht ergehen lassen und dich nicht verbrennen. :wink:
rot: Moderator wanne spricht, default: User wanne spricht.

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Netzwerkverkehr über Proxy leiten

Beitrag von syssi » 21.02.2013 17:06:37

wanne hat geschrieben:@syssi gib's zu den hast du von Cae geklaut. Wenn du geständig bist, überlegen wir uns nochmal ob wir Gnade vor Recht ergehen lassen und dich nicht verbrennen. :wink:
Cae schreibt halt gute Beitraege! ;-) Ich habe die Zeile aus alten Aufzeichnungen gefischt. Ich moechte nicht abstreiten, dass sie initial von ihm stammen. ;-)

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Netzwerkverkehr über Proxy leiten

Beitrag von Cae » 21.02.2013 19:30:30

syssi hat geschrieben:
wanne hat geschrieben:@syssi gib's zu den hast du von Cae geklaut. Wenn du geständig bist, überlegen wir uns nochmal ob wir Gnade vor Recht ergehen lassen und dich nicht verbrennen. :wink:
Cae schreibt halt gute Beitraege! ;-) Ich habe die Zeile aus alten Aufzeichnungen gefischt. Ich moechte nicht abstreiten, dass sie initial von ihm stammen. ;-)
Hey, danke. :) Hint: Ich hab' sie auch geklaut, und zwar aus iptables(8). :mrgreen:

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

thomas235
Beiträge: 71
Registriert: 28.04.2012 14:36:19

Re: Netzwerkverkehr über Proxy leiten

Beitrag von thomas235 » 21.02.2013 20:25:55

Hallo,

mit der Zeile bekomm ich aber einen Fehler:

Code: Alles auswählen

ip_tables: owner match: used from hooks PREROUTING, but only valid from OUTPUT/POSTROUTING
Welche iptables-Version braucht man denn dafür (ich verwende hier gerade squeeze und iptables v1.4.8 ).

gruß thomas235

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Netzwerkverkehr über Proxy leiten

Beitrag von Cae » 21.02.2013 20:39:35

thomas235 hat geschrieben:mit der Zeile bekomm ich aber einen Fehler:

Code: Alles auswählen

ip_tables: owner match: used from hooks PREROUTING, but only valid from OUTPUT/POSTROUTING
Das sollte wohl iptables -A OUTPUT -p... sein, vgl. auch die Grafik in [1]. Es soll Pakete betreffen, die direkt von der Maschine kommen, daher nicht POSTROUTING (da waeren auch evtl. forwardete Pakete mit drin). Da hab' ich wohl nur auf's --uid-owner geschaut... ;)

Gruss Cae

[1] http://www.csh.rit.edu/~mattw/proj/nf/
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

thomas235
Beiträge: 71
Registriert: 28.04.2012 14:36:19

Re: Netzwerkverkehr über Proxy leiten

Beitrag von thomas235 » 21.02.2013 20:52:01

Ah danke! jetzt hab ichs :) (glaub ich):

Code: Alles auswählen

*filter

-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT

-A OUTPUT -m owner --uid-owner 110 -j ACCEPT
-A OUTPUT -m owner --uid-owner 117 -j ACCEPT
-A OUTPUT -j DROP

COMMIT
Also mal ohne INPUT Regeln: ich erlaube nur 110 und 117 (ist bei mir beides in /etc/passwd bei debian-tor eingetragen, die 117 könnte man sich vllt sogar sparen) und sonst darf nur über lo kommuniziert werden.
Ist das so richtig? Oder hab ich noch etwas übersehen?

gruß thomas235

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Netzwerkverkehr über Proxy leiten

Beitrag von syssi » 21.02.2013 22:52:22

Die Regeln bewirken, dass niemand mit der Aussenwelt kommunizieren darf ausser UID 110 und 117. Starte doch mal Tor und guck, ob das Bootstrappen noch funktioniert. Als normaler User in der Shell sollte sogar schon ein "ping google.com" scheitern.

wanne
Moderator
Beiträge: 7622
Registriert: 24.05.2010 12:39:42

Re: Netzwerkverkehr über Proxy leiten

Beitrag von wanne » 21.02.2013 23:28:36

Ich glaube das ist besser:

Code: Alles auswählen

-A OUTPUT -m owner ! --uid-owner 110 -j REJECT
-A OUTPUT -m owner ! --uid-owner 117 -j REJECT
-A OUTPUT -j ACCEPT
Manche Verbindungen die root aufmacht haben keine Sockets bzw. welche ohne owner. Insbesondere macht Tor (zumindest als relay) die Verbindung als root auf und wird erst dann zum Toruser.
rot: Moderator wanne spricht, default: User wanne spricht.

thomas235
Beiträge: 71
Registriert: 28.04.2012 14:36:19

Re: Netzwerkverkehr über Proxy leiten

Beitrag von thomas235 » 21.02.2013 23:39:58

@wanne funktioniert beides (hatte aber das Gefühl, deine Lösung war schneller)
Jap, geht nichtsmehr, nur wenn ich Tor als Proxy verwende :)
Die Umleitung werde ich wegen der Komplexität dann lieber das jeweilige Programm übernehmen lassen, und wenn das Programm nicht mitspielt hat es halt Pech :wink:

Danke euch allen für die Hilfe!

gruß thomas235

Antworten