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
Transparenter Proxy ohne Router
Re: Transparenter Proxy ohne Router
Also ich bin ein bisschen weiter:
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
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
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
Re: Transparenter Proxy ohne Router
Google is your friend:
http://www.google.com/intl/en/#hl=en&q= ... roxy+howto
http://www.linuxhomenetworking.com/wiki ... with_Squid
http://www.google.com/intl/en/#hl=en&q= ... roxy+howto
http://www.linuxhomenetworking.com/wiki ... with_Squid
PayPal.Me/JoeUser ● FreeBSD Remote Installation
Wings for Life ● Wings 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.
Wings for Life ● Wings 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.
Re: Transparenter Proxy ohne Router
Joe User wrote:Google is your friend:
http://www.google.com/intl/en/#hl=en&q= ... roxy+howto
http://www.linuxhomenetworking.com/wiki ... with_Squid
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
Re: Transparenter Proxy ohne Router
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/JoeUser ● FreeBSD Remote Installation
Wings for Life ● Wings 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.
Wings for Life ● Wings 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.
Re: Transparenter Proxy ohne Router
@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
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
Re: Transparenter Proxy ohne Router
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
Code: Select all
http_access allow localnet
acl localnet src 192.168.0.0/16
iptabler