OPNsense Layer 2 Firewall: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
Zeile 132: Zeile 132:
 
* Im Labor mit einer einzelnen Brücke tritt das nicht auf; in der Praxis mit mehreren Wegen durch das Segment schon
 
* Im Labor mit einer einzelnen Brücke tritt das nicht auf; in der Praxis mit mehreren Wegen durch das Segment schon
  
=== Aussperren
+
=== Aussperren verhindern ===
 +
* Die Anti-Lockout-Regel gilt für das Interface, auf dem die Weboberfläche erreichbar ist – also MGMT, nicht die Brücke
 +
* Vor dem Aktivieren der Blockregeln prüfen, dass die Verwaltung über em0 unabhängig von der Brücke erreichbar ist
  
 
= Funktionstest =
 
= Funktionstest =

Aktuelle Version vom 4. September 2026, 04:14 Uhr

Transparente Filterbrücke (Layer-2-Firewall)

  • Eine transparente Firewall filtert Verkehr, ohne dass unterschiedliche Subnetze angelegt werden
  • Die Firewall überbrückt dieselbe Broadcast-Domäne über zwei Schnittstellen und filtert auf der Brücke
  • Für die Clients ist sie unsichtbar: kein Gateway, keine neue Adresse, keine Routen
  • Typische Einsatzfälle:
    • Ein einzelnes System oder ein Segment absichern, ohne die vorhandene Adressierung anzufassen
    • Altsysteme schützen, die selbst keine Firewall mitbringen
    • Verkehr beobachten und per IDS/IPS untersuchen

Abgrenzung

  • Nicht kompatibel mit Traffic Shaping
  • Nicht kompatibel mit CARP – eine Filterbrücke ist keine Option für den HA-Cluster, sondern eine eigene Maschine
  • Gefiltert wird weiterhin auf Layer 3 und 4. "Layer 2" beschreibt die Einbindung ins Netz, nicht die Filterkriterien – MAC-Adressen sind mit pf keine Regelkriterien

Vorbereitung

  • Eine OPNsense-Installation mit drei Netzwerkkarten
Schnittstelle Name Rolle Adresse
em0 MGMT (Verwaltung) 172.16.99.1/24
em1 OUT Bridge-Mitglied (außen) keine
em2 IN Bridge-Mitglied (innen) keine
  • Die Verwaltung läuft über eine eigene Karte, weil die Brücke selbst keine Adresse trägt
  • Ohne diese dritte Karte sperrst du dich aus, sobald die Mitglieds-Interfaces auf None stehen

Hypervisor

  • Beide Bridge-Mitglieder müssen in den Promiscuous-Modus geschaltet werden
    • VirtualBox: Maschine => Ändern => Netzwerk => Adapter => Erweitert => Promiscuous-Modus: Alle erlauben
  • Eine Brücke leitet Frames fremder MAC-Adressen weiter – ohne Promiscuous verwirft der Hypervisor sie

Konfiguration

Schritt 1: Mitglieds-Interfaces vorbereiten

  • Interfaces => em1 und Interfaces => em2:
Parameter Wert
IPv4 Configuration Type None
IPv6 Configuration Type None
Block private networks deaktiviert
Block bogon networks deaktiviert
  • Ein DHCP-Server, der an eines dieser Interfaces gebunden ist, muss abgeschaltet werden

Schritt 2: Tunables setzen

  • System => Settings => Tunables
Tunable Wert Bedeutung
net.link.bridge.pfil_bridge 1 Es wird auf der Brücke gefiltert
net.link.bridge.pfil_member 0 Auf den Mitglieds-Interfaces wird nicht gefiltert
Achtung
  • Nach dieser Einstellung werden Regeln auf den Mitglieds-Interfaces ignoriert
  • Das ist die häufigste Fehlerquelle: Die Regeln stehen unter WAN oder LAN und bleiben wirkungslos

Schritt 3: Bridge anlegen

  • Interfaces => Devices => Bridge => +
Parameter Wert
Member Interfaces IN, OUT
Description Bridge

Schritt 4: Bridge zuweisen

  • Interfaces => Assignments: die neue bridge0 als Schnittstelle zuweisen und aktivieren
  • Configuration Type bleibt None

Schritt 5: Regeln

  • Alle Regeln werden auf der Bridge angelegt, nicht auf em1 oder em2

Besonderheit gegenüber einer routenden Firewall

  • Bei einer routenden Firewall trennen die Schnittstellen die Richtungen: Was auf LAN reinkommt, geht nach außen, was auf WAN reinkommt, kommt von außen
  • Bei der Brücke laufen beide Richtungen über dieselbe Schnittstelle – bridge0 sieht Hin- und Rückweg
  • Die Richtung lässt sich deshalb nicht mehr über das Interface unterscheiden, sondern nur noch über Quell- und Zieladresse
  • Das ist der gedankliche Unterschied, der im Betrieb die meisten Fehler verursacht: Regeln, die man von einer routenden Firewall übernimmt, greifen an der falschen Stelle

Erste Stufe: transparent schalten

  • Zunächst eine einzige Regel auf bridge0:
Parameter Wert
Action Pass
Interface Bridge
Direction in
Protocol any
Source any
Destination any
Log aktiviert
  • Damit ist die Brücke vollständig durchlässig und verhält sich wie ein Kabel
  • Erst prüfen, ob der Verkehr durchläuft. Läuft er hier nicht, liegt es an der Brücke selbst und nicht am Regelwerk
  • Das Logging bleibt an: Im Live-Log sieht man jetzt sämtlichen Verkehr, der die Brücke passiert, und kann daraus die späteren Regeln ableiten

Zweite Stufe: filtern

  • Beispiel: Hinter der Brücke steht ein Altsystem 192.168.1.60, das nur noch per HTTPS erreichbar sein soll
# Action Source Destination Port Zweck
1 Pass any 192.168.1.60 443 Zugriff auf den Dienst
2 Pass 192.168.1.60 any 53, 123 DNS und Zeit für das Altsystem
3 Block any 192.168.1.60 any Alles andere zum System
4 Block 192.168.1.60 any any Alles andere vom System
5 Pass any any any Übriger Verkehr im Segment bleibt unberührt
  • Die Reihenfolge ist entscheidend: pf wertet von oben nach unten aus, die erste passende Regel gewinnt
  • Regel 5 ist der Punkt, der eine Brücke von einer routenden Firewall unterscheidet: Der restliche Verkehr im Segment läuft weiter über die Brücke und darf nicht versehentlich mit blockiert werden
  • Regel 3 und 4 mit Logging versehen – nur so wird im Kurs sichtbar, was die Brücke tatsächlich abfängt

Antwortverkehr

  • Die Regeln arbeiten mit States, der Rückweg ist damit automatisch erlaubt
  • Nimmt ein Teil des Verkehrs einen anderen Weg als der Hinweg, sieht die Brücke nur eine Richtung und verwirft die Antwortpakete
  • In diesem Fall hilft im Regel-Dialog unter Advanced der State Type sloppy – er verzichtet auf die strenge Sequenznummernprüfung
  • Im Labor mit einer einzelnen Brücke tritt das nicht auf; in der Praxis mit mehreren Wegen durch das Segment schon

Aussperren verhindern

  • Die Anti-Lockout-Regel gilt für das Interface, auf dem die Weboberfläche erreichbar ist – also MGMT, nicht die Brücke
  • Vor dem Aktivieren der Blockregeln prüfen, dass die Verwaltung über em0 unabhängig von der Brücke erreichbar ist

Funktionstest

  • Client hinter der Brücke behält seine bisherige Adresse, sein bisheriges Gateway und seinen bisherigen DNS-Server
  • Erreichbarkeit prüfen:
ping 192.168.HS.254
  • Auf der Firewall mitlesen:
tcpdump -n -i bridge0
  • Die MAC-Tabelle der Brücke anzeigen:
ifconfig bridge0 addr
  • Danach eine Blockregel setzen, etwa auf ICMP, und prüfen, dass der Ping stoppt – der Client merkt dabei nicht, wodurch er blockiert wird

Debugging

Beobachtung Ursache
Regeln greifen nicht Regeln liegen auf den Mitglieds-Interfaces statt auf der Bridge
Kein Verkehr über die Brücke Promiscuous-Modus im Hypervisor fehlt
Verwaltung nicht mehr erreichbar Kein eigenes MGMT-Interface vorhanden
Einzelne Protokolle kommen nicht durch Mitglieds-Interface steht noch auf "Block private networks"
  • Zustand der Brücke prüfen:
ifconfig bridge0
  • Zählen, ob Regeln überhaupt matchen:
pfctl -s rules -v

IDS/IPS auf der Brücke

  • Der Aufbau ist ausdrücklich dafür gedacht, den gesamten Verkehr zusätzlich per Netmap-Treiber durch IDS/IPS zu schicken
  • Suricata wird dabei auf die Mitglieds-Interfaces gelegt, nicht auf die Brücke
  • Siehe OPNsense Suricata Einrichtung