Hallo Matthias, At 02:24 02.03.03 +0100, Thorsten D. Marsen wrote:
$IPTABLES -A FORWARD -s 192.168.10.61 -o ppp0 -p tcp \ --sport 6699 -j ACCEPT
Das (--sport) war ein Typo, aber diese Regel bezieht sich doch auf den Fall, daß ICH den Verkehr initiere. Noch mal von vorn:
Nein. Der Unterschied, ob DU eine initierst, oder ob ein Rückpaket gesendet wird, unterscheitet der Regelsatz in der -m state Eigenschaft: --state ESTABLISHED (Antwort), --state NEW(Neue Verb.)
Ich betreibe der Server, 123 ist der Client (jedenfalls im Moment). Der Client baut zu meiner Firewall eine Verbindung auf Port 3777 -> 6699. Die Firewall läßt die Anfrage zu, da eine PREROUTING-Regel für ppp0:6699 existiert. Das Paket wird umadressiert an 192.168.10.61:6699 und durch den FORWARD-Eintrag an das interne eth0 weitergeleitet. Damit ist die Verbindung zustande gekommen. Frage: Das Antwortpaket gehört aber zu der gleichen Verbindung und sollte doch automatisch auf dem gleichen Weg wieder zurückgehen. 192.168.10.61:6699 -> 123.123.123.123:3777. Wird diese Automatik denn erst durch
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
in Gang gesetzt?
Ja.
durchgeht der ausdrücklich gewünscht ist. Grundsätzlich wird nichts und niemand getraut. ;-)
Die Regeln gelten nur für Folgepakete auf Verbindungen, die bereits zustande gekommen sind - daher kann durch die obigen Regeln keinerlei Gefahr resultieren.
Wenn sie ungefährlich sind, warum müssen sie dann extra gesetzt werden?
Weil Du die Policy "DROP" eingestellt hast und dann einfach alles weggefiltert wird. Mit iptables ist der Paketfilter "stateful" geworden, d.h. er weiß, welche Verbindung aktib ist und in welchem Zustand sie sich gefindet. Bei dem Vorgänger ipchains mußte man die Rückverbindung auch tatsächlich noch explizit freischalten.
Gibt es Ausnahmen von Deiner Aussage? Was mich wundert ist, daß alle Beispiele, die ich im Google gefunden habe keine solche Umkehrregel haben. Es kommt mir auch so vor, als wenn nur mit
$IPTABLES -A FORWARD -s 192.168.10.61 -o ppp0 -p tcp \ --sport 6699 -j ACCEPT die Umadressierung fehlt. Entsprechend müßte doch wohl auch eine POSTROUTING-Regel (wie sieht die aus?) her?!
Nein, Du liegst ja mit Deinem Client hinter der Linux-Firewall, also muß Du ja schon eine POSTROUTING-Regel haben, richtig? (-t nat -o ppp0 -j MASQUERADE) Gruß, Thorsten.