OPNsense Layer 2 Firewall: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(Die Seite wurde neu angelegt: „= Transparente Filterbrücke (Layer-2-Firewall) = * Eine transparente Firewall filtert Verkehr, ohne dass unterschiedliche Subnetze angelegt werden * Die Firew…“) |
|||
| (4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 16: | Zeile 16: | ||
* Eine OPNsense-Installation mit '''drei''' Netzwerkkarten | * Eine OPNsense-Installation mit '''drei''' Netzwerkkarten | ||
{| class="wikitable" | {| class="wikitable" | ||
| − | ! Schnittstelle !! Rolle !! Adresse | + | ! Schnittstelle !! Name !! Rolle !! Adresse |
|- | |- | ||
| − | | em0 || MGMT (Verwaltung) || 172.16.99.1/24 | + | | em0 || MGMT || (Verwaltung) || 172.16.99.1/24 |
|- | |- | ||
| − | | em1 || Bridge-Mitglied (außen) || keine | + | | em1 || OUT || Bridge-Mitglied (außen) || keine |
|- | |- | ||
| − | | em2 || Bridge-Mitglied (innen) || keine | + | | em2 || IN || Bridge-Mitglied (innen) || keine |
|} | |} | ||
* Die Verwaltung läuft über eine eigene Karte, weil die Brücke selbst keine Adresse trägt | * Die Verwaltung läuft über eine eigene Karte, weil die Brücke selbst keine Adresse trägt | ||
| Zeile 66: | Zeile 66: | ||
! Parameter !! Wert | ! Parameter !! Wert | ||
|- | |- | ||
| − | | Member Interfaces || | + | | Member Interfaces || IN, OUT |
|- | |- | ||
| Description || Bridge | | Description || Bridge | ||
| Zeile 76: | Zeile 76: | ||
== Schritt 5: Regeln == | == Schritt 5: Regeln == | ||
| − | * Alle Regeln werden auf der '''Bridge''' angelegt | + | * 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: | ||
| + | {| class="wikitable" | ||
| + | ! 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 | ||
| + | {| class="wikitable" | ||
| + | ! # !! 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 = | = 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