Sie sind nicht angemeldet.

1

03.05.2009, 00:20

nochmal iptables/squid frage

Hallo,
ich bin hier immer noch an meiner iptables/squid konfiguration am rumfummeln... Hab da eigentlich nur mal sone kleines Frage damit ich jetzt hier kein quatsch mach.
Versteh ich folgendes richtig?Ich habe Squid und iptables auf einem Rechner (Server) laufen. Und nun kommt vom Client-Rechner eine Anfrage ans Internet, nimmt das Paket dann folgenden Verlauf?

--PREROUTING----INPUT----SQUID----OUTPUT----POSTROUTING--


Also mit anderen Worten die Forward Kette wird komplett übersprungen? Wär ja logisch weils zum lokalen Prozess wird ??!!
Aber dann meine nächste Frage behält das Paket dann Port 3128 vom Proxy die ganze Zeit bei? Bin gerad nur son bissel verwirrt wie man vielleicht merkt. :)
Wär echt super wenn mir das mal eben jemand so bestätigen könnte oder eben halt nicht. Weil mit googlen komm ich irgendwie nicht recht weiter. Ich find skizzen in der art irgendwie immer NUR für iptables, aber halt nicht mit squid.

Und da wär noch was. Ich hab von irgendeinem tutorial ne eine Zeile übernommen:
$IPTABLES -A FORWARD -o lo -j ACCEPT

Bringt das was? Bzw. bringts nicht eher das das Gegenteil von Sicherheit?

thnx
maik

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »JumpinJackFlash« (03.05.2009, 01:12)


2

04.05.2009, 09:41

Hi,
Zu 1. Ja alle Pakete deren Ziel der lokale Rechner ist folgen dieser Kette (Pre,Input,Output,Post).
Siehe dazu auch http://de.wikibooks.org/wiki/Linux-Kompe…ise_unter_Linux

Zu 2. Entscheidend für die Beantwortung dieser Frage ist wa in der Postrouting Chain steht. Dort können Anfragen natürlich umgeleitet werden . z.B.
IPTABLES -t nat -A PREROUTING -p tcp --dport 8080 -i eth1 -j DNAT --to 192.168.0.1:3128
um alle Pakete die an eth0 ankommen und deren Zielport 8080 ist werden an die Adresse 192.168.0.1 mit dem Squid Port 3128 weitergeleitet. Diese Adresse kann also z.B. lokal (INPUT Chain) oder Remote (Forwarding Chain) ausgewertet werden, je nach dem ob der Rechner selber die IP besitzt.

Zu 3. Diese Regel sollte folgendes bewirken.
In der FORWARDING Chain (also alle eingehenden Pakete , die nicht für diesen Rechner bestimmt sind und somit weitergeleitet werden ) sollen alle diese Pakete erlaubt werden, die als Ziel das lokale Loopback Interface haben. Dies ist natürlich ein wiederspruch, da alle Pakete die das Loopback interface ansprechen natürlich über die INPUT Chain verarbeitet werden.

gruß Legorider

3

04.05.2009, 16:27

Hi !
Erstmal thnx für deine Antwort... also

Zitat

Zu 1. Ja alle Pakete deren Ziel der lokale Rechner ist folgen dieser Kette (Pre,Input,Output,Post).

Siehe dazu auch http://de.wikibooks.org/wiki/Linux-Kompe…ise_unter_Linux
Genau das war mir halt nicht ganz klar, obs denn wirklich ein lokaler Prozess wird (squid ist auf dem gleichen rechner transparent). Oder ob es halt in die FORWARD Kette kommt (natürlich nur wenn das Paket von nem client-rechner kommt). Bin irgendwie anfangs davon ausgegangen, dass es in die forward kette kommt weil es ja halt "durchgeht". Aber, dass es zum lokalen Prozess wird, da ja Squid nun mal lokal läuft erscheint mir ja auch irgendwie logisch :D

Zitat

Zu 2. Entscheidend für die Beantwortung dieser Frage ist wa in der
Postrouting Chain steht. Dort können Anfragen natürlich umgeleitet
werden . z.B.

IPTABLES -t nat -A PREROUTING -p tcp --dport 8080 -i eth1 -j DNAT --to 192.168.0.1:3128

um alle Pakete die an eth0 ankommen und deren Zielport 8080 ist werden
an die Adresse 192.168.0.1 mit dem Squid Port 3128 weitergeleitet.
Diese Adresse kann also z.B. lokal (INPUT Chain) oder Remote
(Forwarding Chain) ausgewertet werden, je nach dem ob der Rechner
selber die IP besitzt.
in der PREROUTING hab ich momentan nur eine umleitung an den (lokalen) Proxy für Port 80. SSL und andere Verbindungen wollen irgendwie noch net so recht... Irgendwas hab ich da wohl noch nicht so ganz mit dem Accelerator-modus da verstanden.
Naja auf jeden Fall könnte ich das Paket was "aus dem" Proxy kommt in der Output Kette per --sport 3128 "identifizieren" ?!

Zitat

Zu 3. Diese Regel sollte folgendes bewirken.

In der FORWARDING Chain (also alle eingehenden Pakete , die nicht für
diesen Rechner bestimmt sind und somit weitergeleitet werden ) sollen
alle diese Pakete erlaubt werden, die als Ziel das lokale Loopback
Interface haben. Dies ist natürlich ein wiederspruch, da alle Pakete
die das Loopback interface ansprechen natürlich über die INPUT Chain
verarbeitet werden.
Hehe genau das meine ich ja. Ich meine es macht doch auch überhaupt kein Sinn irgendwas an das loopback von aussen zu schicken es sei denn es hat "feindliche" Absichten?!

cu
Maik

4

05.05.2009, 10:45

Zitat

in der PREROUTING hab ich momentan nur eine umleitung an den (lokalen) Proxy für Port 80. SSL und andere Verbindungen wollen irgendwie noch net so recht... Irgendwas hab ich da wohl noch nicht so ganz mit dem Accelerator-modus da verstanden.
Naja auf jeden Fall könnte ich das Paket was "aus dem" Proxy kommt in der Output Kette per --sport 3128 "identifizieren" ?!
Der Proxy verschickt seine Pakete natürlich nur an den Client über seinen TCP-Port 3128 ... alle Verbindungen die der Proxy nach außen ins www werden über beliebige Source Ports getätigt. Die Zielports dieser www Anfragen von Squid sollte in aller Regel immer 80 sein. Also ...
Client 192.168.0.40
Server 192.168.0.1
www.wikipedia.de 80.67.25.148

[SourceIP]:[SourcePort]:[DestinationIP]:[DestinationPort]

1. Client schickt Anfrage an wikipedia über den Squid Server
192.168.0.40:AnyX:192.168.0.1:3128
2. Squid nimmt Paket engegen , ermittelt Zieladresse und öffnet einen (zufälligen,freien) TCP-Port zur Verbindung mit der Website
192.168.0.1:AnyY:80.67.25.148:80
3. NAT wandelt per MASQUERADE den SourcePort in einen Freien SourcePort um und die Lokale IP Adresse in die Öffentliche
external.ip:AnyZ:80.67.25.148:80
4. Wikipedia erhält die Anfrager und beantwortet diese
80.67.25.148:80:external.ip:AnyZ
4. NAT wandelt die ZielAdresse in die des lokalen Servers um und den ZielPort in den richtigen lokalen ZielPort des Servers
80.67.25.148:80:192.168.0.1:AnyY
5. Squid erhält das Paket und schickt es weiter an den Client
192.168.0.1:3128:192.168.0.40:AnyX

Mit anderen Worten deine --sport 3128 Regel könnte nur im Letzten Schritt Server-->Client das Paket identifizieren.

Zitat

Hehe genau das meine ich ja. Ich meine es macht doch auch überhaupt kein Sinn irgendwas an das loopback von aussen zu schicken es sei denn es hat "feindliche" Absichten?!
Die gesammte Regel macht keinen Sinn, da die Pakete die über die FORWARD Chain geschickt werden NIEMALS im lokalen Loopback ankommen, und somit auch als Ziel NIEMALS lo in der FORWARDING Chain stehen kann. Also auch kein Angriffsversuch sondern der Author der Regel kannte sich anscheiend nicht mit iptables aus. :)

gruß Legorider

5

05.05.2009, 19:24

Nabend,

Zitat

Der Proxy verschickt seine Pakete natürlich nur an den Client über
seinen TCP-Port 3128 ... alle Verbindungen die der Proxy nach außen ins
www werden über beliebige Source Ports getätigt. Die Zielports dieser
www Anfragen von Squid sollte in aller Regel immer 80 sein. Also ...

[...]


Mit anderen Worten deine --sport 3128 Regel könnte nur im Letzten Schritt Server-->Client das Paket identifizieren.
Jo wo du es so sagst :) thnx!!!

Zitat

Die gesammte Regel macht keinen Sinn, da die Pakete die über die
FORWARD Chain geschickt werden NIEMALS im lokalen Loopback ankommen,
und somit auch als Ziel NIEMALS lo in der FORWARDING Chain stehen kann.
Also auch kein Angriffsversuch sondern der Author der Regel kannte sich
anscheiend nicht mit iptables aus. :)
Dann sollte das wohl mal auf http://www.gentoo.de/doc/de/security/sec…?part=1&chap=12 korrigiert werden :)

cu Maik