Hallo, ich habe hier ein Netzwerk, dessen Mitglieder über Squid im Internet surfen können. Nun habe ich per iptables alle default policies auf DROP gesetzt und wollte dann dem Squid erlauben Packete ins Internet zu schicken bzw. Packete vom Internet zu empfangen. Der Squid läuft auf dem Port 3128. 1. Überlegung: 1.) Alle Packete, die vom Port 3128 kommen und über das ppp0 raus wollen dürfen passieren: iptables -A OUTPUT -p tcp --sport 3128 -o ppp0 -j ACCEPT 2.) Alle Packete, die vom ppp0 kommen und zum Port 3128 wollen dürfen rein: iptables -A INPUT -p tcp --dport 3128 -i ppp0 -j ACCEPT 2. Überlegung: 1.) Alle Packete, die über ppp0 zum Port 80 wollen dürfen raus: iptables -A OUTPUT -p tcp --dport 80 -o ppp0 -j ACCEPT 2.) Alle Packete, die vom Port 80 über den ppp0 wollen dürfen rein: iptables -A INPUT -p tcp --sport 80 -i ppp0 -j ACCEPT Ergebnis: In beiden Fällen kommt der Squid nicht raus. Es gibt keine Einträge in den Logfiles. Wer kann mir sagen, warum das nicht funktioniert und wie ich diesen Teil zum funktionieren bekomme. Die HowTo's habem mir hier nicht weiter geholfen. Vielen Dank... MfG, Markus mailto:maillist@itamarkroth.de
Hallo Markus, was ist mit den dns-Anfragen vom Squid ?? darf squid direkt raus oder ist ein parent dazwischen ?
Ergebnis: In beiden Fällen kommt der Squid nicht raus. Es gibt keine Einträge in den Logfiles.
kann ich mir nicht vorstellen ? nimm die debug_option in der squid.conf hoch - da muss was kommen installier ethereal (ist bei suse dabei)und mach nen trace auf ppp0 (eth1) oder nimm tcpdump auf ppp0 (eth1) damit solltest du das problem finden rene
On Mon, 17 Sep 2001, Markus Rothenbusch wrote:
ich habe hier ein Netzwerk, dessen Mitglieder über Squid im Internet surfen können.
Nun habe ich per iptables alle default policies auf DROP gesetzt und wollte dann dem Squid erlauben Packete ins Internet zu schicken bzw. Packete vom Internet zu empfangen.
Der Squid läuft auf dem Port 3128.
Und Du hast ganz sicher festgestellt, dass er dazu nicht auch den Port 3130 benoetigt?
1. Überlegung: 1.) Alle Packete, die vom Port 3128 kommen und über das ppp0 raus wollen dürfen passieren: iptables -A OUTPUT -p tcp --sport 3128 -o ppp0 -j ACCEPT
2.) Alle Packete, die vom ppp0 kommen und zum Port 3128 wollen dürfen rein: iptables -A INPUT -p tcp --dport 3128 -i ppp0 -j ACCEPT
Die erste Ueberlegung geht davon aus, dass der Squid "nach draussen" ins Internet mit dem Port 3128 erscheint. Das ist aber keinesfalls so. Der Squid stellt seine Dienste "nach drinnen" ins lokale Netz unter dem Port 3128 zur Verfuegung. Das heisst, Dein lokales Netzwerk braucht diesen nur zu erreichen. Nach "draussen" ins Internet geht der Squid mit einem beliebigen unpriviligierten Port (oberhalb 1024) ins Netz und benutzt als Zielport fast immer den Port 80 (httpd) eines Zielrechners. Da muss der Ansatz Deiner Firewallregeln liegen. Daher greift Deine erste Ueberlegung falsch zu.
2. Überlegung: 1.) Alle Packete, die über ppp0 zum Port 80 wollen dürfen raus: iptables -A OUTPUT -p tcp --dport 80 -o ppp0 -j ACCEPT
2.) Alle Packete, die vom Port 80 über den ppp0 wollen dürfen rein: iptables -A INPUT -p tcp --sport 80 -i ppp0 -j ACCEPT
Die zweite Ueberlegung ist bei weitem besser, setzt aber voraus, dass Du - trotz richtiger Regeln - auch den Verkehr innerhalb Deines Netzwerks korrekt zugelassen hast. Deine Clients muessen mit unpriviligierten Ports auf den Port Deines Squid (3128) zugreifen duerfen. Wenn das nicht klappt, kannst Du es vergessen. Das kannst Du aber wie folgt testen: Rufe den Befehl telnet ip-meines-servers 3128 auf und Du siehst, ob das geht. Ausserdem musst Du beruecksichtigen, dass der Squid die Namen der aufgerufenen Seiten aufloesen moechte. Du musst Dich also auch um DNS "nach draussen" kuemmern.
Ergebnis: In beiden Fällen kommt der Squid nicht raus. Es gibt keine Einträge in den Logfiles.
Du hast auch nicht gesagt, ob Du ein Logfile beschreiben lassen moechtest. Dafuer gibt es Regeln, die gerne ans Ende der Chains gesetzt werden und die ein "-j LOG" beinhalten.
Die HowTo's habem mir hier nicht weiter geholfen.
Ja, die sind vielleicht ein bisschen knapp. Aber es gibt jede Menge Beispiele im Netz zu der Thematik zu finden. Vielleicht weiss jemand so eine iptables-Anleitung "in ganz, ganz, ganz kleinen Schritten", die hier helfen koennte. Gruss Peter Blancke -- Nachtwaechter ist der Wahnsinn, weil er wacht...
Hallo Peter, Am Tuesday, September 18, 2001 schrieb Peter Blancke:
On Mon, 17 Sep 2001, Markus Rothenbusch wrote:
[...]
Der Squid läuft auf dem Port 3128.
Und Du hast ganz sicher festgestellt, dass er dazu nicht auch den Port 3130 benoetigt? Habe 100%ig festgestellt, dass der Squid den 3130 nicht benötigt.
1. Überlegung: [...]
[...] Daher greift Deine erste Ueberlegung falsch zu. Leuchtet mir ein...
2. Überlegung: [...]
Die zweite Ueberlegung ist bei weitem besser, setzt aber voraus, dass Du - trotz richtiger Regeln - auch den Verkehr innerhalb Deines Netzwerks korrekt zugelassen hast. Deine Clients muessen mit unpriviligierten Ports auf den Port Deines Squid (3128) zugreifen duerfen. Wenn das nicht klappt, kannst Du es vergessen.
Das kannst Du aber wie folgt testen: Rufe den Befehl
telnet ip-meines-servers 3128
auf und Du siehst, ob das geht. Das geht, alles, innerhalb des Netzwerkes kann auf alle Dienste zugegriffen werden(httpd, samba, squid gibt eine rückmeldung, dns, ...)
Ausserdem musst Du beruecksichtigen, dass der Squid die Namen der aufgerufenen Seiten aufloesen moechte. Du musst Dich also auch um DNS "nach draussen" kuemmern. Vestehe ich es richtig, wenn ich jetzt davon ausgehe, dass ich eingehende Packete vom bzw. ausgehende Packete an den T-Online DNS erlauben muss?
Ergebnis: In beiden Fällen kommt der Squid nicht raus. Es gibt keine Einträge in den Logfiles.
Du hast auch nicht gesagt, ob Du ein Logfile beschreiben lassen moechtest. Dafuer gibt es Regeln, die gerne ans Ende der Chains gesetzt werden und die ein "-j LOG" beinhalten. Klar, mein Fehler...
MfG, Markus mailto:maillist@itamarkroth.de
On Tue, 18 Sep 2001, Markus Rothenbusch wrote:
Am Tuesday, September 18, 2001 schrieb Peter Blancke:
On Mon, 17 Sep 2001, Markus Rothenbusch wrote:
2. Überlegung: [...]
Die zweite Ueberlegung ist bei weitem besser, setzt aber voraus, dass Du - trotz richtiger Regeln - auch den Verkehr innerhalb Deines Netzwerks korrekt zugelassen hast. Deine Clients muessen mit unpriviligierten Ports auf den Port Deines Squid (3128) zugreifen duerfen. Wenn das nicht klappt, kannst Du es vergessen.
Das kannst Du aber wie folgt testen: Rufe den Befehl
telnet ip-meines-servers 3128
auf und Du siehst, ob das geht.
Das geht, alles, innerhalb des Netzwerkes kann auf alle Dienste zugegriffen werden(httpd, samba, squid gibt eine rückmeldung, dns, ...)
Ok, dann ist das Netzwerk im "Inneren" richtig konfiguriert.
Ausserdem musst Du beruecksichtigen, dass der Squid die Namen der aufgerufenen Seiten aufloesen moechte. Du musst Dich also auch um DNS "nach draussen" kuemmern.
Vestehe ich es richtig, wenn ich jetzt davon ausgehe, dass ich eingehende Packete vom bzw. ausgehende Packete an den T-Online DNS erlauben muss?
Ja, denn Dein Squid moechte bei der Eingabe eines URL als Name ja gerne wissen, welche IP sich dahinter verbirgt. Falls T-Online Deine DNS-Anfragen erlaubt, muss also auch der DNS-Port nach draussen duerfen. In die Output-Regel gehoert daher auch ein freier Abgang des Ports 53. Im Uebrigen ist die Bezeichnung "DNS-Port" nicht besonders gluecklich gewaehlt. In /etc/services findet sich dafuer der Portname "domain". Beruecksichtige das, falls Du Deine Regeln mit Namen aufbaust. Gruss Peter Blancke -- Nachtwaechter ist der Wahnsinn, weil er wacht...
participants (3)
-
Markus Rothenbusch
-
Peter Blancke
-
renevojtech@t-online.de