Mehr als 10 Jahre hat pfSense mich nun begleitet. Version 1.2 war es, wenn ich mich recht erinnere. Obwohl mir Version 1.2.3 doch sehr in Erinnerung geblieben ist
Installation OPNsense
Die Installation von OPNsense habe ich bei mir via seriellen Kabel und Konsole auf der PC Engines APU.1D4 vorgenommen. Nach einem kompletten Hochfahren der Liveinstanz der Firewall hatte ich mich via ssh mit dem Benutzernamen installer und Passwort opnsense angemeldet. Von hier aus konnte ich die Firewall OPNSense auf die interne SSD installieren. Etwas anders als bei pfSense.
Eingabe der MAC für WAN, anpassen der DHCP-Pools und festen Leases, sowie ein erstes Einspielen eines Updates. Die vorherige Eingabe der DHCP-Pools und festen Leases war der Hintergrundmusik geschuldet. Ich glaube ich hatte insgesamt 10 Minuten gebraucht. Nun kam der Punkt mich mit Grundkonfiguration zu befassen.
Grundkonfiguration OPNsense
Zugang via SSH
Mein erster Weg brachte mich zu der Aktivierung des SSH-Servers. Hier erlaubte ich den Login für die Gruppe wheel und admins und beschränkte den Zugang auf das LAN-Interface. Hier habe ich einen SSH-Schlüssel generiert und diesen für den Benutzer unter System: Access: Users: Benutzername: Authorized keys eingetragen
ssh-keygen -C firewall -t rsa -b 4096 -f ~/.ssh/opnsense
2FA TOTP für den Zugang
Eine wunderbare Funktion in OPNsense ist die Möglichkeit einen TOTP server für die Authentifizierung an der Firewall und für andere Dienste zu nutzen. Hierzu wird ein Serverdienst lokal auf der Firewall erstellt und der Benutzer generiert einen Token, welcher mit einer geeigneten App auf dem Smartphone genutzt werden kann.
iOS OTP Auth, bzw FreeOTP. Android FreeOTP. Shellscripte mit oathtool.
Da ich keine Androidgeräte mehr aktiv nutze, habe ich mich für OTP Auth entschieden und für verschiedene selbst geschriebene Lösungen unter Linux.
OpenVPN mit OPNsense
OPNsense habe ich die Konfiguration händisch vorgenommen. Dies ist aber kein Hexenwerk.
- CA einrichten
- Server Zertifikat erstellen
- VPN Benutzer erstellen
- OpenVPNServer einrichten
- Firewallreglement anpassen
- Schlussendlich die Konfigurationsdatei *ovpn für den Client exportieren
Werbefilter und Anti-Tracking mit OPNsense
Es besteht nun die Möglichkeit ein Plugin inklusive BIND herunterzuladen, welches die Möglichkeit bietet voreingestellten Listen auszuwählen und diese dann automatisch einzubinden. Hier müssen dann die Anfragen von unbound via
do-not-query-localhost: no
forward-zone:
name: „.“
forward-addr: 127.0.0.1@53530
an Bind weitergeleitet werden. Da ich pfblockerNG von pfSense gewohnt bin empfinde ich die Lösung als noch nicht ausgereift. Mir fehlen die Optionen eigene Listen einzutragen, Updates selbst anzustoßen, ein Überblick über den Updatemechanismus zu haben etc. Ich habe hier schon Kontakt zu dem Entwickler aufgenommen und er trägt fehlende Listen ein und kümmert sich noch um eine richtige Dokumentation.
Da mir somit selbst einige wichtige Listen fehlen, nutze ich ein Script und nutze den Werbe- und Trackingfilter vorerst mit unbound. Ich warte noch ein wenig bis das Plugin weiterentwickelt wurde. Auch sehe ich Bind nicht wirklich als den richtigen Weg an. Meinungen.
Backup zu Nextcloud
Eine gute Option ist die Backupfunktion der Firewall zu Nextcloud. Hier habe ich einen eigenen Benutzer mit einem Speicherplatz von 100MB angelegt und diesen mit meinem Account geteilt. Ein Backup zu GoogleDrive wäre auch möglich, aber wer macht so etwas?
Fazit
Bis jetzt steht OPNsense in vielen Dingen pfSense in nichts nach und auch mein Gefühl ist mit OPNsense besser. Ich traue pfSense nicht mehr wirklich und die Vorfälle, welche ich seit zwei Jahren aus dem Hause Netgate/pfSense gegenüber dem Fork OPNsense beobachtet habe sprechen eine weitere Sprache.
Ich hatte schon länger mit dem Gedanken gespielt pfSense als Firewall in meinem Homeoffice abzulösen. Nachdem nun das letzte Update von pfSense auf die Version 2.4.4 so schief lief wollte ich nicht mehr ein Backup einspielen und habe den Entschluss gefasst OPNsense aufzusetzen.
Bereut habe ich es bis jetzt nicht.
Hi,
danke für deinen ausführlichen Bericht und dein Feedback an die Community. Wie immer lebt oder stirbt ein Projekt am Einsatz und Feedback der Gemeinschaft.
Ich mag kurz auf das Bind Plugin eingehen. Das Plugin entstand aus einer Diskussion bei Reddit wo ich versucht habe einen User das Programmieren von Plugins näher zu bringen. Es war ein Gemeinschaftsprojekt um Bind an sich, also als PNS, zu etablieren.
Mangels Zeit – wir alle haben Familie, Privatleben, Jobs – wurde das Projekt nur von mir weiterverfolgt und da ich jahrelange Erfahrung mit Bind habe und das neue MVC Konzept es her gibt, habe ich kurzerhand DNSBL mit aufgenommen.
Der eigentliche Zweck des Plugins ist eigentlich der Betrieb eines authoritativen Nameservers. Das mache ich auch schon seit fast 20 Jahren hier in der Firma, daher habe ich auch keine Bedenken gegen Bind (seit Version 9).
Ich versuche mal den Updatestatus klarer darzustellen, die Doku aufsetzen und eventuell das einbinden eigener Listen (Bind ist etwas zickig wenn das Format nicht passt).
Michael
Danke für das Feedback Michael,
ich bin ein großer Fan von Bind, in Bezug auf Blacklisting habe ich Ihn noch nie benutzt.
Mein Hänger ist auch hier das dynamische Update der Zonen bei BIND. Wenn ich mich recht erinnere müsste ich hier ein allow-update in der Zone erlauben. Via dedizierter IP, oder auch network range. Ist dies in OPNSense gesetzt?
Dies wäre IMO ein Showstopper gegen BIND und für unbound. Für unbound spricht für mich sonst nur die „simple Konfiguration“. Wenn BIND hier hinter einer GUI versteckt ist, sollte dies auch keine Herausforderung sein. Wobei ich beide nun nicht als schwer, sondern als Gut lesbar bezeichnen würde.
Das Problem das Formats hatte ich auch bei unbound, da eine URL in der Liste mit lauter Hashtags gespickt war und unbound hier nicht starten wollte. Diesen Eintrag habe ich erst einmal händisch gelöscht, da die Zeit in dem Moment mangelte. Fehler auffangen ist nicht wirklich immer schön, wenn man die Quellen selbst nicht beeinflussen kann. Wäre einer der Punkt in welchen ich die Auswahl der vorgefertigten Listen vollkommen verstehe, würde Dich aber auch Zeit kosten.
Ich glaube es war auch eine der Listen, welche ich Dir mitgeteilt hatte. /* Reddit */
Und Mangels Zeit kenne ich nur zu Gut. Einer der Gründe warum ich über das Plugin auch schrieb, dass ich es so empfinde und es noch ein wenig Liebe braucht. Ich verfolge die Releases und werde es auch immer wieder testen. Sobald es die Grundfunktionen meinerseits erfüllt schreibe ich auch gleich einen Blogeintrag darüber. Mir ist dies wichtig.
Zum Testen bin ich hier gerne bereit.
Ich habe erst den alten Weg gewählt und für jeden Eintrag eine Zone erstellen lassen mit dem INCLUDE auf Blacklist. Irgendwann hat BIND so 150k Zonen geladen, das war mir zu viel.
Habe mich dann ganz strikt an RPZ gehalten, eigentlich im DNS der korrekte Weg sowas anzugehen. Ich hab keine Ahnung wie pfBlocker das macht, laut Franco weiss das auch nur der Entwickler selbst :)
https://www.isc.org/rpz/
https://dnsrpz.info/
Diese Erfahrungen kann ich nur teilen, nur ein Hinweis:
Wer OpenVPN nutzt, wird bei der pfSense evtl. TLS-crypt nutzen. opnSense unterstützt bisher nur TLS-auth.
Das liegt an der OpenVPN version, die implementiert ist. Auf der opnSense Roadmap steht es für Release 19.x.
Wer also TLS-crypt nutzt / nutzen will, muss warten …