OPNsense Firewall

~ 0 min
2025-06-07 11:33
  • freie Firewall-Distribution unter FreeBSD-Lizenz, Fork von pfSense
  • wird von der niederländischen „Deciso B.V.“ als Sponsor und Co-Entwickler unterstützt
  • kostenfreie Community-Edition und Business-Edition mit Support
  • lauffähig auf PC, VM oder Router-Hardware mit 2 oder mehr Netzwerkkarten
  • WAN: PPoE oder DHCP / stat. IP (kein Modem bzw. Medienkonverter)
  • Multi-WAN (Failover, LoadBalancing oder statische Verteilung)
  • Anmeldung mit lokalen Usern (auch mit integriertem TOTP), LDAP/AD, RADIUS, Voucher
  • DHCP pro Interface (Option: "unbekannte Clients ignorieren")
  • Firewall pro Interface mit Live-Ansicht
    - Redundanz (Master/Slave) möglich
  • NG-Firewall Erweiterung mit PlugIn ZenAmor (zumindest die kostenlose Version immer installieren!)
    (Application Control, Webseiten nach Kategorien blocken, Cloud Reputation und Threat Intelligence, TLS-Inspection, detailliertes Reporting und Grafiken, AD-Anbindung, Secure-User-not-IP, optional zentrales Management)
  • IDS/IPS, Router, SNAT, DNAT, DHCP, VLAN, Proxy, Antivirus, Captive Portal (alle Anmeldearten), Geoblocking...
  • VPN:
    - Open VPN (Pre-shared keys, Certificate-Based Authentication, Username/Password Authentication, TOTP MFA)
    - IPSec IKEv1 / IKEv2
    - Wireguard Server / Client / Peer Assistent
    - PlugIns: Tinc (redundantes, robustes Mesh-Netz), ZeroTier (über zentralen VPN-Anbieter als Mittler), Cisco OpenConnect
  • Zwei-Faktor-Authentisierung (TOTP) voll integriert (für Login, VPN, Captive Portal), Token wird vor / nach dem Kennwort eingegeben
  • komfortable Zertifikatsverwaltung per GUI

Installation:

  • OS: FreeBSD/amd64
  • RAM: 8 GB Minimum, SSD: min. 128 GB, CPU/Durchsatz nach Anforderung
  • BIOS-Mode
  • Initial-PW: installer / opnsense (ruft Installation auf) und root / opnsense (Shell+GUI)
  • Default IP: 192.168.1.1 auf Interface "LAN" (nur dieses Interface hat per Default eine ALLOW-Regel in der Firewall)
  • Backup: System -> Configuration -> Backups (lokal im Gerät und als Download)
  • Snapshots bsp. vor neuen Firmware-Versionen: System -> Configuration -> Snapshots (lokal im Gerät)
  • Firewalls wurden früher nach der Bandbreite der Internetanschlüsse dimensioniert. Heute trennen sie VLAN-Sicherheitszonen und es läuft auch ein großer Teil des internen Datenverkehrs über die Firewall. Die Datenrate muß entsprechend größer sein.

Firewall:

  • separate Firewall pro Interface (Paketfilter pf von FreeBSD)
    (Ausnahme: Floating Regeln gelten für alle Interfaces)
  • Schnittstellen-Gruppen (Firewall -> Groups) erlauben Regeln für mehrere Schnittstellen
  • Regeln immer im eingehenden Interface erstellen
  • wird jeweils von oben nach unten abgearbeitet (speziell oder schnell abzuarbeitende - allgemein - drop)
    Default=First-Match: Regelwerk wird bei erstem Treffer beendet
  • Firewall arbeitet verbindungsorientiert,- Antwortpakete sind automatisch erlaubt
  • BLOCKIEREN = ohne Reaktion, für WAN
  • ABLEHNEN/REJECT = informiert Sender, für friendly Interfaces
  • Regeln möglichst simpel halten und im Kommentarfeld beschreiben
  • Ports, Netzwerke und Geräte gruppieren (Aliase)
  • zeitbasierte Regeln (Schedules) sind möglich (Freigabe WLAN, Freigabe E-Mail...)
  • per Default hat Interface "LAN" eine "allowed all"-Regel, alle anderen Interfaces sind zu
  • Best-Practice: Regeln clonen und auf andere Schnittstelle ändern+speichern
  • Button "Inspect" (rechts oben in den Regeln) zeigt für jede Regel, wie oft sie aktiv war
  • Anti-Spoofing blockt gefälschte IPs
    - OPNsense blockt von Haus aus IP-Adressen an einen Interface, die einem anderen Interface zugeordnet sind
    - eigene Anti-Spoofing-Regel (blockiert alle nicht definierten Netze): Regel LAN - IN - Blocke - Quelle= NICHT(!) "Meine-LAN-Netze"(Alias)
  • GeoIP blocking nach Herkunftsland mit kostenlosem Plugin (Registrierung) für jede einzelne Regel möglich (VPN, WEB, Mail..)
  • letzte Regel in jedem Interface sollte Deny-All-Regel mit temp. Protokollierung zur Fehlersuche sein
  • >1000 Regeln ist "groß" und beeinflusst den Durchsatz (Default: max. 200.000 Regeln)
  • Protokollierung von Regeln nur temporär(!) an, dauerhaft nur sparsam einsetzen (Durchsatz und Schreibzugriffe)
  • wenn PING erlaubt sein soll: Firewall -> Automatisierung -> Filter: Erlaube - IN - ICMP (pauschal oder pro Interface oder Ziel)
  • Liveansicht zum Test nutzen (nur wenn Protokollierung AN)
  • Regeln überprüfen: (Firewall -> Diagnose -> Sitzungen) Alter des letzen Zugriffs, Traffic?
  • Tip: Zugriff auf LAN (any Destination) soll nicht gleichzeitig Zugriff auf alle anderen lokalen Netze erlauben
    Alias: Lokale_Netzwerke anlegen (alle verwendeten lokalen Netzwerke)
    Regel "Webzugang" Destination = (!)Lokale_Netzwerke (Invert)

  • Praktisches Beispiel
    Internetzugang aus "LAN-Buero" (für Gruppe von IPs) erlauben

    *Aliase (Firewall -> Aliase):
    1) Internet-Ports definieren
    - Name: _P_WEB_Zugang, Typ: Ports, Inhalt: 53, 853 (DNS), 80, 443 (HTTP/S)
    (ggf. analog Regel für E-Mail, Filezugriff usw.)
    2) Management-Ports definieren
    - Name: _P_Management, Typ: Ports, Inhalt: 22 (SSH), 80, 123 (NTP), 443 (HTTP/S)
    3) Internet-Hosts (im LAN-Buero) definieren
    - Name: _H_BUERO_Internet, Typ: Hosts, Inhalt: 10.12.0.66, 10.12.0.67 (IP der Internet-Hosts)
    4) alle genutzten lokalen Netze definieren
    - Name: _N_Lokale_Netze, Typ= Network, Inhalt: 10.12.0.0/24, 10.12.5.0/24..

    *Rules (Firewall -> Regeln -> LAN-Buero):
    1) Management erlaubt
    - Name: Management, Allow - IN - LAN-Buero - IPv4 - TCP/UDP / Source: VLANBuero.NET, Destination: This Firewall, Dest.Ports: _P_Management(Alias)
    2) Internet erlaubt (nur WEB-Ziele, nicht(!) Nachbarnetzwerke)
    - Name: Internetzugang, Allow - IN - LAN-Buero - IPv4 - TCP/UDP / Destination: NICHT(!) _N_Lokale_Netze (Alias), Dest.Ports: _P_WEB_Zugang(Alias)
    3) Drop-All + Protokoll (ganz unten!)
    - Name: Drop-All, Blocke - IN - LAN-Buero - IPv4 - any / Ziel: any, Protocol 

IDS / IPS:

  • OPNsense nutzt das quelloffene Suricata
  • Speicherlast der OPNsense steigt deutlich! (8 GB knapp)
  • IDS kann auch transparent per Bridge ohne Routing arbeiten
  • Aktivierung unter Services -> IDS -> Administration -> enabled + Interfaces wählen
  • Download: gewünschte Regeln laden und aktivieren (Link auf Sourcen erklärt Details)
    alle Regeln sind vom Community Project und kostenlos/BSD-Lizenz
  • Regeln: Feinschliff, Regeln einzeln deaktivieren bei Fehlalarm  (mehrere 1000!), Status= Alert
  • Alerts: zeigt Alarme
  • Scheduler aktualisiert das Regelwerk -> einschalten
  • IPS erst einschalten, wenn die Alarme abgearbeitet sind (Konfig siehe OPNsense Praktiker Kapitel 18)

Schnittstellen / LAG:

  • jeder Port bekommt per Default ein eigenes IP-Netzwerk
  • mehrere Ports als "Swich" verbinden (schlechte Performance, kein VLAN möglich):
    - vorher separates Management-Interface mit IP einrichten!
    - "Switch"-Schnittstellen zuweisen und aktivieren (ohne IP)
    - Schnittstellen -> Devices -> Bridge: neue Bridge mit allen gewünschten Interfaces erstellen (alle ohne IP)
    - Schnittstellen zuweisen: bridge0 für "LAN" zuweisen
    - Schnittstelle LAN: IP zuweisen
    Besser einen VLAN-fähigen Switch verwenden.
  • mehrere Ports als LAGG bündeln:
    - LAG Member Interfaces dürfen im Interface Assignment nicht zugeordent sein
    - LAG Member Interfaces dürfen keine IP und/oder DHCP Bindung haben
    - Schnittstelle -> Devices -> LAGG hinzufügen, Schnittstellen auswählen
    - LAGG aktivieren, IP + DHCP konfigurieren
    - ggf. VLANs wie auf normalem Interface zuweisen
  • LAN/VLAN auf verschiedene Ports verteilen (beste Performance)
Transparente Firewall
siehe (1) Kapitel 7
  • Bridge über zwei Ports ohne IP und Routing-Funktion  ("Switch mit Filterfunktion")
  • Bridge als Schnittstelle (ohne IP) erstellen, Regeln greifen nun auf der Bridge und nicht auch den beteiligten Interfaces
  • arbeitet wie eine "normale" bidirektionale Firewall, aber unsichtbar (IP v4-/v6-Adressen, Ports, Traffic Shaping Bandbreitenregulierung)
  • Richtung mittels Quell-/Zieladressen definieren
  • abgelehnte Pakete erscheinen als vom Ziel abgelehnt
  • kein Proxy
  • leitet Mulicast einfach durch
  • kein PING oder Trace auf die Firewall möglich

Portforwarding (Destiantion NAT oder DNAT):

  • Firewall -> Settings -> Advanced:
    - Reflection for port forwards: Enabled
    - Reflection for 1:1: Disabled
    - Automatic outbound NAT for Reflection: Enabled
  • Firewall > Aliases > Add a new Alias:
    - name: friendly name for the IP address you're aliasing. ("Minecraft-Server")
    - type: Host(s)
    - Aliases: Input 192.168.1.200  (interne Server-IP)
  • Firewall > NAT > Port Forward > Add:
    - Interface: WAN
    - TCP/IP Version: IPv4
    - Protocol: TCP
    Under Source > Advanced:
    - Source / Invert: Unchecked
    - Source: Any
    - Source Port Range: any to any
    - Destination / Invert: Unchecked
    - Destination: WAN address
    - Destination Port range: (other) 19132 to (other) 19132
    - Redirect target IP: Alias "Minecraft-Server"
    - Redirect target Port: (other) 19132
    - Pool Options: Default
    - NAT reflection: Enable
    - Filter rule association: Rule NAT
VPN

VLANs:

  • Schnittstellen -> Devices -> VLAN
  • VLANs werden pro Schnittstelle angelegt (mehrere VLANs pro Schnittstelle möglich, VLAN tagged)
    Schnittstelle selbst kann auch eine IP haben und ist UNTAGGED (Bsp. Management)
  • VLAN-Bezeichner fängt immer mit vlan0 an (Tip: vlan0.20 für VLAN20)
  • VLANs als Schnittstelle(n) zuweisen und IP für VLAN vergeben (Bsp: 10.10.10.1/24 -> 10.10.10.1 ist das Gateway), ggf. mit DHCP
  • Firewallregel auf VLANxx anlegen: (Allow - VLANxx - In - whatever)
  • VLANs werden automatisch ins WAN geroutet, nicht aber ins LAN
    Firewallregel auf LAN anlegen: (Allow - LAN - In - Destination= VLANxx Netzwerk - Dest.Ports= whatever)
  • kein VLAN auf Bridges oder den beteiligten Interfaces möglich! (OPNsense ist kein Switch)
  • siehe https://www.zenarmor.com/docs/

Reporting:

  • Reporting -> Netflow: Listening Interfaces konfigurieren
  • Capture local - anhaken (Auswertungen können auch an externe Destination gesendet werden) 
  • Reports werden in der Firewall angezeigt
  • SNMP: System -> Firmware > Plugins: Net SNMP-Plugin installieren
    dann Services -> NET-SNMP: aktivieren und konfigurieren

Tipps & Tricks:

  • SSH (System-> Settings -> Administration) aktivieren!
  • Ausgesperrt? Firewall per SSH od. Shell deaktivieren: pfctl -d  (pfctl -e)
  • System -> Configuration -> Backup: Backup-Count setzen, diese Backups lassen sich per SSH oder Shell über Punkt 13: Restore wählen
  • Konfigurationsänderung greift nicht gleich? Firewall -> Diagnostics -> States -> Actions: "Reset State Table" + "Reset Source Tracking"
    (Firewall friert kurz ein)
  • ICMP Redirect heisst bei OPNsense: Firewall -> Settings -> Advanced: Static Route Filtering --> Haken sollte i.Allg. gesetzt sein.

Links:

Durchschnittliche Bewertung 0 (0 Abstimmungen)

Es ist möglich, diese FAQ zu kommentieren.