Leserartikel pfSense & OPNsense (Firewall- und Routing-Appliance)



1200px-PfSense_logo.png

pfSense ist eine auf FreeBSD aufsetzende Firewall- und Routing-Appliance der Firma Netgate, von der zwei Editionen existieren.
  • Zum einen die Community Edition (CE), die open source ist und auf eigener Hardware oder auch virtualisiert kostenlos genutzt werden darf.
  • Zum anderen die Plus Edition (+), die closed source ist und auf Hardware von Netgate vorinstalliert daherkommt, aber auch separat erworben werden kann.


🟢 komplett im Browser konfigurierbar
🟡 nicht für jeden, sondern für fortgeschrittenere Netzwerkenthusiasten
🔴 wer schnelle Ergebnisse erwartet, ohne Zeit und Mühen zu investieren, sollte woanders schauen



Ich habe mit einer virtualisierten pfSense meinen Home-Router ersetzt und betrachte diese hier nur aus diesem Blickwinkel. Wobei "ersetzt" natürlich relativ zu verstehen ist, so bedarf es weiterhin eines Modems oder Kombi-Gerätes für den jeweiligen Internetanschluss, für WiFi zusätzlich eines APs. Dank VLANs aber alles gut managebar.

Der Funktionsumfang von pfSense ist deutlich größer als hier dargestellt, wird entsprechend kommerziell genutzt und von Profis bedient.
pfSense Features

Besonders gefällt mir an pfSense, dass ich meine ganz persönliche Routing-Strategie verfolgen kann. So leite ich port-basiert an meinem PC den Web-Traffic, abgesehen von ein paar Ausnahmen, über eine OpenVPN-Verbindung an einen VPN-Provider aus, alles andere, wie z.B. Games und Echtzeitkommunikation, läuft weiterhin über den normalen Internetanschluss.

Netze können einfach segmentiert werden und Server oder IoT ihre eigene DMZ bekommen.

Port forwarding und NAT können für IPv6 genauso umgesetzt werden, wie schon für IPv4.
port forwarding.PNG

Ob man das möchte, ist dabei eine andere Frage. 😉

pfSense kann mit Packages erweitert werden. Diese Packages haben wiederum eigene Entwickler.

Mittels des Packages pfBlockerNG(-Devel) kann ich Port-Freigaben zusätzlich schützen, in dem ich IPs aus bestimmten Ländern blockiere oder umgekehrt erlaube. So kann ich z.B. meinen eigenen VPN-Server nur für deutsche IPs öffnen oder gar nur für das Netz meines Mobilfunkbetreibers.
wan.PNG
Dafür muss ich aber nicht nur das besagte Package installieren und konfigurieren, auch brauche ich einen (kostenlosen) Account bei der Firma, die die Zuordnung der IPs zu Ländern macht. Und erst zu guter Letzt kann ich die entsprechenden Regeln wirklich absichern. Dies ist also ein Beispiel dafür, wie kleinteilig die Arbeitsschritte sind und warum es soviel Zeit und Know-How beansprucht.

pfBlockerNG kann als DNS-Sinkhole auch im gesamten Heimnetzwerk Werbung blockieren.
pfblocker.PNG

Wirklich effektiv ist ein rein DNS-basierter Ad-Blocker aber heutzutage nicht mehr.

So könnte die Startseite aussehen, das Dashboard ist mittels Widgets anpassbar :
Status Dashboard.png



Die Möglichkeiten sind fast grenzenlos, die nötige Einarbeitung vorausgesetzt. 🤓

Ich empfehle dringendst Backups anzulegen, bei virtualisierten Lösungen kann man dafür die Snapshot-Funktion nutzen. Tägliche Backups sind sehr sinnvoll, gerade wenn man viel probiert oder schon viel Konfigurationsarbeit geleistet hat.

pfSense auf eigener Hardware zu installieren wird vor allem dadurch erschwert, dass es passende FreeBSD-Treiber geben muss. Netzwerkhardware von intel ist wohl kein Problem, Realtek dagegen schwieriger. Generell gibt es eher Treiber für ältere und eher im Enterprise-Segment anzutreffende Hardware.




Opnsense-logo.svg.png
Nicht unerwähnt bleiben kann OPNsense, welches ein Fork von pfSense ist und von der niederländischen Firma Deciso open source weiterentwickelt wird. Der Release-Zyklus ist schneller als von pfSense CE, sowohl die Bedienung als auch der Funktionsumfang unterscheiden sich eher geringfügig.



Für komplexere Fragestellungen bieten sich die jeweils offiziellen Foren an: Netgate Forum, OPNsense Forum





Regel-Grundsätze, die Anfängern oft unbekannt sind. [🐺🐺🐺🦊]
  • Alles, was nicht explizit erlaubt ist, wird geblockt. Bis auf das erste LAN enthält auch kein Interface ootb irgendwelche Regeln. Ausnahmen gibt es z.B. für DHCP, welches unsichtbar abläuft und keinerlei Regeln durch den Nutzer bedarf.
  • Traffic wird grundsätzlich nur einmal, nämlich eingehend (immer aus Sicht der Firewall) gefiltert, der Rest ist dann statefull und wird nicht mehr reguliert. Das bedeutet, dass originärer Traffic aus dem Internet am WAN-Interface erlaubt werden muss. Wenn Traffic von LAN1 auf LAN2 erlaubt sein soll, dann muss dies auf LAN1 geregelt werden usw.
  • WAN net ist nicht das Internet, sondern das Netz, welches sich unmittelbar am WAN-Port befindet. Das kann z.B. das Netz einer vorgeschalteten Fritzbox sein oder eines des ISPs.
    Deshalb gilt es, schleunigst einen "RFC1918"-Alias zu erstellen, der mindestens die privaten Netzwerke enthält:
    10.0.0.0/8
    172.16.0.0/12
    192.168.0.0/16
    Mit diesem Alias kann man nun Regeln erstellen, die z.B. nur für das Internet gelten, in dem das Ziel als invertierter "RFC1918"-Alias definiert wird.



Selektives Routing einzelner Programme unter Windows Pro. [🦊🦊🦊🦊]

Ich möchte auf einem Windows-Host nur Traffic eines bestimmten Webbrowsers über ein VPN ausleiten, der Rest soll über den ISP gehen. Da diese Unterscheidung nicht rein über die Angabe des Ports möglich ist, hier kurz erklärt, wie man Traffic in Windows mittels Differentiated Services (DiffServ) taggt, damit daraufhin eine ebenfalls getaggte Regel in pfSense greifen kann. Wenn das Programm eigenes DNS macht, wird auch dieses getunnelt.

In Windows Pro lege ich mittels regedit unter Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\ einen neuen Key namens QoS an und erstelle in diesem einen neuen REG_SZ namens Do not use NLA mit dem Wert 1.
qos.PNG
Anschließend muss Windows neu gestartet werden.

Im lokalen Group Policy Editor lege ich eine neue QoS Policy an, in der ich das Programm anhand seines Namens definiere (chrome.exe) und einen DSCP Value vergebe (z.B. 30).
qosedit.PNG
Darüber hinaus könnten hier auch noch weitere Feineinstellungen wie Protokoll (TCP/UDP), Ports und IP Ranges getroffen werden.

In pfSense erstelle ich nun die gewünschte Regel, indem ich dort in den Advanced Options das Gateway definiere und den entsprechenden DiffServ Code Point auswähle (af33).
rule.PNG

Welcher DSCP Value zu welchem DiffServ Code Point passt, lässt sich u.a. hier ablesen.

Vielen Dank an @0 8 15 User für den Hinweis auf die Differentiated Services! 🏆





Guides & Links

Eine FRITZBox als "VDSL-Modem" und zur Telefonie an einer Firewall nutzen
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Rickmer, Sauvignon Blanc, Der Trost und 17 andere
Für pfSense+ ist inzwischen ein Release Candidate erschienen, der auf FreeBSD 14 beruht und mit PHP 8.1 daherkommt. Gibt aber noch kleinere Probleme z.B. mit 100Mbit/s-NICs. Könnte sich also noch was hinziehen.

Wegen andauernder Probleme mit dem Prefix-Wechsel bei dynamischem IPv6 auf der Sense, habe ich damit begonnen, IPv6 Network Prefix Translation (NPt) einzurichten.
In den LANs verteile ich nur ULAs. An den IPv6 WANs, bei mir DSL und ein HE-Tunnel, werden diese dann übersetzt, dafür reicht anscheinend jeweils ein einziges, geroutetes /64. Für DSL habe ich dieses auf ein ansonsten ungenutztes VLAN geschmissen.
Nun habe ich ein Failover eingerichtet, erst DSL und bei Problemen (dynamischer Prefix Wechsel) den Tunnel von HE, funktioniert. 😀

Da ich in meinem einen "LAN" nur einem PC IPv6-Internetzugriff geben wollte, habe ich auch noch die entsprechende Regel und den PC getagt, aber das nur am Rande. 😉
 
  • Gefällt mir
Reaktionen: syhm
pfSense Plus Software Version 23.01 is Now Available for Upgrades
  • Moving to PHP 8.1 and FreeBSD main
  • Adding support for ChaCha20-Poly1305 encryption with IPsec
  • Adding support for ChaCha20-Poly1305 and AES-128-GCM encryption with OpenVPN DCO
  • Resolving previous issues with Unbound
  • Continuing to improve Captive Portal
  • Updating the pfBlockerNG package to match pfBlockerNG-devel
Nach dem Upgrade sollte man noch einmal neustarten, damit sich die RAM-Auslastung für ZFS wieder normalisiert.
Gerade bei VMs kann sich die Hardware-ID zwischenzeitlich geändert haben. Für diesen Fall kann nun erneut ein (ggf. kostenloser) Token eingeben werden.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: syhm
Inzwischen gibt es ein Update für das System_Patches Package mit zahlreichen (25) Patches für die neue Plus Version.
 
Für pfSense Plus 23.05 ist ein Release Candidate veröffentlichen worden.
  • Support for IIMB Cryptographic Acceleration
    This library is a highly-optimized software implementation of the core cryptographic processing for IPsec, WireGuard and OpenVPN.
  • A New Packet Capture GUI
  • Experimental Ethernet (Layer 2) Filtering Support
  • UDP Broadcast Relay Package
Und zahllose Bugfixes.
 

Anhänge

  • Capture.PNG
    Capture.PNG
    120,1 KB · Aufrufe: 141
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: nosti und syhm
Und nun ist die Final raus.
 
  • Gefällt mir
Reaktionen: syhm
Es gibt die ersten System Patches für die Plus 23.05. Die System Patches sollten grundsätzlich immer installiert werden, da sie bereits einige fiese Bugs ausbügeln.
 
  • Gefällt mir
Reaktionen: Mr.Highping
Zurück
Oben