Deaktivieren einer Regel wirkt sich nicht auf bestehende Verbindungen aus (!?)

Post Reply
sw-68
Posts: 3
Joined: October 23rd, 2019, 8:59 am

Deaktivieren einer Regel wirkt sich nicht auf bestehende Verbindungen aus (!?)

Post by sw-68 » October 23rd, 2019, 9:37 am

Erstmal ein freundliches Hallo in die Runde ... erster Post ... erstes Problem ;-)

Folgendes habe ich beim "Herumspielen" mit der Version 2.23 Core Update 136 (mein erster Kontakt mit IPFire) festgestellt:

Mein Testaufbau:
Virtuelle Maschine (VMWare 15.5) mit einer Netzwerkkarte Richtung Internet (RED) und einer in ein Host Only Netzwerk (GREEN).
Netzwerkkonfiguration RED-ORANGE-GREEN, wobei ORANGE im Moment nicht genutzt wird.
Firewall-Optionen so konfiguriert, dass alles geblockt wird, was nicht explizit durch eine Regel freigegeben ist.
In dem Host Only Netzwerk (GREEN) habe ich eine zweite virtuelle Maschine mit einer Ubuntu Linux Installation (18.04.3 LTS 64-bit).

Meine ersten Versuche schienen erfolgreich:
1. Keine Regel angelegt -> alles wird geblockt
2. Regel für Freigabe ins Internet (von GREEN nach RED) angelegt ... aktiviert ... getestet ... geht.
3. Regel für Freigabe ins Internet (von GREEN nach RED) deaktiviert ...getestet ... wird geblockt.

Um weiter mit den Regeln zu "spielen" habe ich in der Ubuntu VM ein Konsolenfenster eröffnet und ein durchgehenden Ping-Befehl Richtung Internet gestartet. Da die Regel zur Freigabe deaktiviert war, kamen wie erwartet erstmal keine Pakete durch. Danach in der Web-Oberfläche die Regel aktiviert (und "Apply Changes" angeklickt). Danach begann der laufende Ping Befehl Antwortpakete zu empfangen. Soweit so gut.

ABER: Nachdem ich die Regel in der Weboberfläche wieder deaktiviert hatte und erneut "Apply Changes" angeklickt hatte, war ich SEHR erstaunt, dass der noch laufende Ping-Befehl weiterhin Antwortpakete empfangen konnte. Bendet man den Ping-Befehl mit Strg-C und startet diesen erneut, werden die Pakete wie erwartet geblockt. Das selbe Verhalten ist auch bei komplexeren Programmen zu beobachten. Seiten, die im z.B. Firefox geöffnet werden, bevor die Regel deaktiviert wird, können nach Deaktivierung der Regel weiter aktualisiert werden (auch laufende Youtube-Streams laufen weiter). Eine Kontrolle mit Wireshark bestätigt, dass die Daten nicht aus dem Cache, sondern direkt über die Internetverbindung (über IPFire) kommen. Erst das Beenden und ein Neustart von Firefox blockt jeglichen Zugriff auf Internetseiten.

Ist das ein Bug oder ein Feature? Nach meinem Verständnis sollte die Firewall nach Regeländerung alles blocken, was dem Regelwerk nicht entspricht und bestehende Verbindungen nicht einfach weiterhin durchwinken. Ich spiele mit dem Gedanken IPFire produktiv einzusetzen, allerdings habe ich bei dem beobachteten Verhalten im Moment noch bedenken.

Gruß
Stefan

BeBiMa
Posts: 2842
Joined: July 30th, 2011, 12:55 pm
Location: Mannheim

Re: Deaktivieren einer Regel wirkt sich nicht auf bestehende Verbindungen aus (!?)

Post by BeBiMa » October 23rd, 2019, 9:55 am

Dies liegt an der (sinnvollen!) Regel "Alle bestehenden Verbindungen erlauben", die ziemlich weit am Anfang der FW-Regeln steht.
Image
Unitymedia Cable Internet ( 32MBit )

sw-68
Posts: 3
Joined: October 23rd, 2019, 8:59 am

Re: Deaktivieren einer Regel wirkt sich nicht auf bestehende Verbindungen aus (!?)

Post by sw-68 » October 23rd, 2019, 11:58 am

BeBiMa wrote:
October 23rd, 2019, 9:55 am
Dies liegt an der (sinnvollen!) Regel "Alle bestehenden Verbindungen erlauben", die ziemlich weit am Anfang der FW-Regeln steht.
??? Wo soll diese Regel stehen, wenn die Grundkonfiguration der Firewall "auf alles sperren" eingestellt ist?

Das ist eine schöne knappe Antwort ... passt aber meiner Meinung nach nicht wirklich zu dem beschriebenen Problem:

1. Firewall-Optionen wurden so konfiguriert, dass die Firewall OHNE konfigurierte Regel alles blockt.
2. Beendet man die aktuelle Verbindung eines Programms (z.B. den Ping Befehl) und startet diesen neu, werden die Pakete ja danach geblockt.

Mich verwundert, warum der Traffic von laufenden Verbindungen nach Deaktivierung der Regel nicht direkt gekappt wird, sondern unbegrenzt weiterläuft, bis die verbindung eineml beendet wird. im produktiven Einsatz können in einem solchen Fall Datenströme weiter fließen, obwohl man im Glauben ist, die Verbindung durch Deaktivierung der Regel in der Firewall gekappt zu haben (dran denken ... Firewall ist so konfiguriert, dass diese ohne aktivierte Regeln alles blockt!).

OK ... habe gerade nochmal die Antwort gelesen ... hmmm ... "Alle bestehenden Verbindungen erlauben" ... wenn es das gibt ... kann man das auch ausschalten?

Gruß
Stefan

User avatar
Arne.F
Core Developer
Core Developer
Posts: 8519
Joined: May 7th, 2006, 8:57 am
Location: BS <-> NDH
Contact:

Re: Deaktivieren einer Regel wirkt sich nicht auf bestehende Verbindungen aus (!?)

Post by Arne.F » October 23rd, 2019, 12:54 pm

Es ist richtig und so gewollt. Es gibt da eine Regel die komplett aufgebaute Verbindungen durchläst auch wenn man neue Regeln einfügt die diese Sperren würde. Ohne diese Regel bräuchte man einen sehr viel stärkeren Rechner da dann jedes einzelne Packet durch das gesamte Regelset müsste...
iptables -A CONNTRACK -m conntrack --ctstate ESTABLISHED -j ACCEPT
Wenn du die aus der CONNTRACK Tabelle rausnimmst dann sollte er alle Packete prüfen...
Arne

Support the project on the donation!

Image

Image

Image
PS: I will not answer support questions via email and ignore IPFire related messages on my non IPFire.org mail addresses.

sw-68
Posts: 3
Joined: October 23rd, 2019, 8:59 am

Re: Deaktivieren einer Regel wirkt sich nicht auf bestehende Verbindungen aus (!?)

Post by sw-68 » October 23rd, 2019, 2:03 pm

Arne.F wrote:
October 23rd, 2019, 12:54 pm
Es ist richtig und so gewollt. Es gibt da eine Regel die komplett aufgebaute Verbindungen durchläst auch wenn man neue Regeln einfügt die diese Sperren würde. Ohne diese Regel bräuchte man einen sehr viel stärkeren Rechner da dann jedes einzelne Packet durch das gesamte Regelset müsste...
iptables -A CONNTRACK -m conntrack --ctstate ESTABLISHED -j ACCEPT
Wenn du die aus der CONNTRACK Tabelle rausnimmst dann sollte er alle Packete prüfen...
OK ... das, und einige weitere Recherchen im Internet, nachdem ich mir der Problematik bei der Verarbeitung bewusst wurde, machen das Verhalten für mich nachvollziehbar. Somit ist es kein Bug (wie ich zuerst vermutete), sondern normal für Systeme, bei denen man nicht in jedem Anwendungsfall ausreichende Rechenpower vorraussetzen kann.

Das mit dem iptables Befehl schaue ich mir nochmal genauer an. Ggf. passt das zu meinem Anwendungsfall (kein großer Traffic und auch eine geringe Anzahl von Regeln).

Danke für die aufklärenden Worte ... für mich ist die Frage damit beantwortet.

Gruß
Stefan

Post Reply