Transparenter Proxy ohne Router

Alles rund um Netzwerktechnik und Protokolle
Anonymous

Transparenter Proxy ohne Router

Post by Anonymous »

Hallo zusammen,

ich möchte für einen Benutzer auf einer Linux Box mittels iptables einen transparenten Proxy betreiben. D.h. auf der Maschine läuft ein Squid Proxy und ich möchte, dass der Benutzer keinen Proxy innerhalb des Browsers angeben muß und die Anfragen anstelle von Port 80 auf 3128 umgeleitet werden. Der Rechner ist über WLAN mit dem Internet verbunden.

Die Konfiguration von Squid dahingehend habe ich schon hinbekommen. Was noch fehlt sind die Firewall Regeln. Port 80 kann ich aber nicht so einfach dicht machen, da der Proxy über den Port nach draussen geht.

Da ich zu genau so einem Anwendungsfall keine spezielle Konfiguration gefunden habe, möchte ich Euch um Hilfe bitten, um eine Firewall Konfiguration zu finden. Jemand eine Idee, wie ich sowas mit iptables konfigurieren kann?

Also nochmal zusammengefasst:
Linux Desktop ohne Lan
Internet über WLan (wlan0)
transparenter Proxy mit Squid
Port 80 für alle ausser dem Proxy geschlossen

Danke für Eure Hilfe!

Gruß
iPtabler
Anonymous

Re: Transparenter Proxy ohne Router

Post by Anonymous »

Also ich bin ein bisschen weiter:

Code: Select all

iptables -F
iptables -F -t nat
iptables -t nat -A output -j LOG

iptables -t nat -A OUTPUT -m owner ! --uid-owner proxy -m state --state NEW -p tcp --dport 80 -j REDIRECT --to-port 3128
Allerdings bekommt anscheinend das Paket nach dem Durchlaufen von Squid keine neue owner id. Das klappt also nicht.

Auch das State funktioniert anders, als ich das annehme. Nach der Weiterleitung zum Proxy hat das Paket anscheinend immer noch den Status NEW. Ich komme also nicht durch die Firewall.

Was mache ich noch falsch?

Gruß
iptabler
User avatar
Joe User
Project Manager
Project Manager
Posts: 11175
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Transparenter Proxy ohne Router

Post by Joe User »

PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Anonymous

Re: Transparenter Proxy ohne Router

Post by Anonymous »


Hallo,

die Anleitungen gehen aber immer davon aus, dass die Clients über ein Netzwerk auf den Proxy zugreifen. Bei meinem Fall ist der Squid auf dem Desktop installiert! Deshalb brauche ich eine andere Behandlung für das normalerweise verwendete PREROUTING über NAT.

Ich muß also ein Redirect über -t nat -A OUTPUT für Port 80 machen. Und dann muß ich unterscheiden, wer die Anfrage stellt: der Proxy oder der Benutzer. Der Proxy soll als einziger den Port 80 benutzen können.

Viele Grüße
User avatar
Joe User
Project Manager
Project Manager
Posts: 11175
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Transparenter Proxy ohne Router

Post by Joe User »

Ich verstehe Dein Problem noch immer nicht: Es ist doch Wurscht ob Squid lokal läuft oder sonstwo, das Setup und die IPtables-Rules sind doch in beiden Fällen gleich. Ob der Client nun von localhost (lo) oder $sonstwo (eth0) kommt, ist doch egal -- oder was verstehe ich gerade flachs?
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
papabaer
Userprojekt
Userprojekt
Posts: 169
Joined: 2009-05-14 17:40
Location: Halle (Saale)

Re: Transparenter Proxy ohne Router

Post by papabaer »

@Joe User: wenn doch aber squid selbst von lo kommt, dann greift die Regel erneut und du hast ne Endlosschleife.

Hast du da nicht einen unlösbaren logischen Widerspruch in deinem Vorhaben? Du willst alle Pakete, die - von welcher Anwendung auch immer - deinen lokalen Rechner zu Port 80 verlassen abfangen und zum lokalen Proxy umleiten, dabei gehört der Proxy doch selbst zu "von welcher Anwendung auch immer". Auf IP-Ebene kannst du aber nicht unterscheiden, welche Pakete vom Proxy selbst kommen. Oder es gibt einen Weg, mit Squid selbst IP-Packete zu markieren und diese besonders markierten Pakete mit einer extra Firewall-Regel zu bedenken. Kein Plan, ob squid sowas kann.

Ne Lösung wäre noch, nen weiteren Proxy im Netz zu nutzen, wo der lokale Squid seine Pakete abgibt. Dann könnte man diese eine IP in der Firewall freigeben.

Stefan
Anonymous

Re: Transparenter Proxy ohne Router

Post by Anonymous »

Code: Select all

iptables -F
iptables -F -t nat
iptables -t nat -A output -j LOG

iptables -t nat -A OUTPUT -m owner ! --uid-owner proxy -p tcp --dport 80 -j REDIRECT --to-port 3128
So. Bin nochmal in mich gegangen. Mein Versuch oben war schon richtig. Damit werden alle Port 80 Anfragen, ausser diejenigen des Proxy, umgeleitet. Ich mußte zusätzlich lediglich noch ACLs für Squid hinzufügen. Localhost alleine reichte nicht mehr.

Code: Select all

http_access allow localnet
acl localnet src 192.168.0.0/16
Danke für die Hilfe
iptabler