Kategorie:OPNsense: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
 
(97 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
'''OPNsense''' ist eine [[Freie Software|freie]] [[Firewall]]-[[Distribution (Software)|Distribution]] auf Basis von [[FreeBSD]] und der [[Address Space Layout Randomization]] (ASLR) von HardenedBSD. OPNsense erlaubt die Benutzung der freien Kryptobibliothek [[LibreSSL]], alternativ zum Standard [[OpenSSL]] (wählbar in der [[GUI]]). Die OPNsense Software steht unter der [[FreeBSD-Lizenz]] (''„2-clause BSD license“'') und darf frei kopiert, verändert und verbreitet werden, auch für kommerzielle Projekte. Der Name leitet sich vom [[Suffix]] des Namens des Vorläufers [[pfSense]] ab.
[[Kategorie:Firewall]]
 
[[Kategorie:Router]]
== Eigenschaften ==
[[Kategorie:IT-Sicherheit/Tools]]
* OPNsense kann auf [[Festplatte]]n und [[CompactFlash]]-Karten [[Installation (Computer)|installiert]], sowie von [[Live CD]]s gestartet werden.
* OPNsense läuft auf einer Reihe von [[Eingebettetes System|eingebetteten (embedded) Systemen]], gewöhnlichen [[Personal Computer]]n und als [[virtuelle Maschine]].
* OPNsense bietet Eigenschaften, die oftmals nur von teuren kommerziellen Firewalls geboten werden.
* Mit Hilfe einer [[Webschnittstelle]] (Webinterface) kann OPNsense leicht konfiguriert werden und [[Softwareaktualisierung|Updates]] sind komfortabel einzurichten, ohne dass genaue Kenntnisse des unterliegenden FreeBSD Betriebssystems erforderlich werden.
* Im Gegensatz zu vergleichbarer Open Source Firewall Software wie [[IPFire]] und [[pfSense]] bietet OPNsense [[Zwei-Faktor-Authentisierung]].
* Seit OPNsense Version 19.1. kommt als Betriebssystem [[HardenedBSD]] in Version 11.2 zum Einsatz.
* Das OPNsense Project ist auf [[Code]]-Qualität, einfache Code-Entwicklung und freien Zugang zu den Build-Werkzeugen ausgelegt.
* Es wendet das [[Model View Controller]] Paradigma an.
 
== Anwendungen ==
* [[Stateful Packet Inspection|stateful]] [[Perimeter]]-Firewall
* [[Router]]
* [[Wireless Access Point]]
* [[DHCP]]-Server
* [[Domain Name System|DNS]]-Server
* [[Virtual Private Network|VPN]]-Endpunkte
 
== Geschichte ==
Das Projekt wurde am 2. Januar 2015 ins Leben gerufen. Das Projekt führt drei Gründe für seine Abspaltung an:
 
* Technische Gründe – klare, strukturierte Code-Basis, die von Entwicklern benutzt und gepflegt werden kann, soll entstehen
* Community (Gemeinschaft) – eine aktive, tragende Gemeinschaft von Anwendern und Entwicklern wird angestrebt
* Lizenz – OPNsense soll auf der bewährten 2-Klausel BSD Lizenz aufgebaut werden, die flexibel im gewerblichen und freien Umfeld eingesetzt werden kann
* Das OPNsense-Projekt wird von der niederländischen ''"Deciso B.V."'' finanziell und sachkundig unterstützt.
* Im November 2017 stellte ein Schiedsgericht der [[Weltorganisation für geistiges Eigentum]] fest, dass Netgate, der Urheber von pfSense, die Domain opnsense.com in böswilliger Absicht benutzt hatte, um OPNsense zu diskreditieren, und verpflichtete Netgate, die Domain an Deciso zu übertragen.
* Die Netgate-Partei versuchte, sich auf die [[Fair Use|Fair-Use-Klausel]] zu berufen und behauptete, dass der Domainname "für eine Parodie-Website verwendet wurde"; dies wurde mit der Begründung abgelehnt, dass die Meinungsfreiheit die Registrierung von Domainnamen nicht abdeckt.
 
==Installation eines Routers mit OPNsense==
Um einen Router zu erstellen benötigt man einen Computer mit zwei Netzwerkkarten und ein Bootmedium mit OPNsense.
# ein OPNsense VGA-Image von der [https://opnsense.org/download/ Herstellerseite] runterladen
# mit dem Befehl Disc-Dump auf einem Datenträger (Bootmedium) installieren
# den Datenträger in den Computer stecken und von diesem booten
# nachdem der PC hochgefahren ist, mit dem Login "installer" und dem Passwort "opnsense" anmelden
# Start des Installationsvorganges, zuerst zweimal bestätigen und dann auf "Guided installation" gehen
# eine Partition auswählen auf der OPNsense installiert wird und ein Installationsmodus (MBR mode)
# die "swap-Partition" bestätigen
# das Passwort des Benutzers "root" erstellen
# den Router neustarten
# die Installation ist jetzt abgeschlossen
# mit einem Gerät das im Netzwerk des OPNsense-Routers ist, kann man den Router im Webbrowser unter https://192.168.1.1 konfigurieren nach der Anmeldung startet der Einrichtungs-wizard
 
= OPNsense =
 
OPNsense ist eine Firewall-Distribution auf der Basis des Betriebssystems FreeBSD. Im Gegensatz zu den anderen vorgestellten Software-Komponenten ist OPNsense also ein eigenständiges Betriebssystem.
 
Im Schulnetzkonzept kommt OPNsense aber nicht nur die Aufgabe der Firewall zu. Vielmehr ist es die Kommunikationszentrale mit u. a. folgenden Aufgaben:* Firewall und NAT
* DNS-Server
* DHCP-Server
* NTP-Server
* Proxy-Server
* URL-Filter
* Reverse-Proxy
* Zertifikatsmanagement
* VPN-Server
 
= Grundinstallation =
siehe [[Netzwerke:Firewall:OPNsense:Grundinstallation]]
 
= Netzwerkschnittstellen und grundlegende Firewall-Regeln =
siehe [[Netzwerke:Firewall:OPNsense:Netzwerkschnittstellen und grundlegende Firewall-Regeln]]
 
= Internetgeschwindigkeit =
[[Netzwerke:Firewall:OPNsense:Internetgeschwindigkeit]]
 
= Web-Proxy =
siehe [[Netzwerke:Firewall:OPNsense:Web-Proxy]]
 
= Webfilter =
siehe [[Netzwerke:Firewall:OPNsense:Webfilter]]
 
= Domänennamen =
siehe [[Netzwerke:Firewall:OPNsense:Domänennamen]]
 
= Installation und Konfiguration der automatisierten Zertifikatsverwaltung =
 
Mit dem Let's-Encrypt-Plugin können Sie für Ihre Webdienste kostenlos gültige X.509-Zertifikate von der Zertifizierungsstelle Let's Encrypt generieren. Dies ermöglicht eine verschlüsselte Nutzung Ihrer Webdienste über https ohne Zertifikatswarnungen. Auch für verschlüsselte ldap-Anfragen an den Samba-Server können Let's-Encrypt-Zertifikate eingesetzt werden.
 
== Installation und Konfiguration des acme-Plugins ==
 
Das Plugin muss zunächst über die Firmwareverwaltung installiert werden:
 
 
{| style="border-spacing:0;width:9.708cm;"
|- style="border:none;padding:0.049cm;"
|| System / Firmware / Plugins / os-acme-client → Install
 
 
|-
|}
=== Grundkonfiguration ===
 
 
{| style="border-spacing:0;width:12.278cm;"
|- style="border:none;padding:0.049cm;"
|| Services / Let's Encrypt / Settings* Haken bei: Enable Plugin
* Haken bei: Auto Renewal
* Let's Encrypt Environment: Production Environment [default]
* Haken bei HAProxy Integration
 
 
 
 
|-
|}
=== Anlage eines Let's-Encrypt-Kontos ===
 
 
{| style="border-spacing:0;width:17cm;"
|- style="border:none;padding:0.049cm;"
|| Services / Let's Encrypt / Accounts → Add* Haken bei: enabled
* Name: z. B. lets-encrypt-production
* E-Mail-Address: <an diese E-Mail-Adresse gelangen ihre Zertifikate betreffende Informationen wie z. B. Warnungen bei Ablauf der Gültigkeit>
 
 
 
 
|-
|}
=== Anlage einer Validierungsmethode ===
 
 
{| style="border-spacing:0;width:15.408cm;"
|- style="border:none;padding:0.049cm;"
|| Services / Let's Encrypt / Validadtion Methods → Add* Haken bei: enabled
* Name: z. B. http-01
* Challenge Type: HTTP-01
* HTTP-01
** HTTP Service: HAProxy HTTP Frontend Integration (OPNsense plugin)
* HAProxy
** Haken bei: Enable Auto-Configuration
** HAProxy Frontends: http_lan_wan
 
 
 
 
|-
|}
=== Anlage von Zertifikaten ===
 
Richten Sie für jeden Ihrer Webdienste - auch für jene, die nur innerhalb des Schulhauses erreichbar sein sollen - ein Zertifikat ein.
 
Beispiel für den Webdienst Nextcloud:
 
 
{| style="border-spacing:0;width:17cm;"
|- style="border:none;padding:0.049cm;"
|| Services / Let's Encrypt / Certificates → Add* Haken bei: enabled
* Common Name: nextcloud.ihre-schule.de
* Alt Names: z. B. www.nextcloud.ihre-schule.de (damit der Dienst auch mit vorangestelltem www erreichbar ist)
* LE Account: z. B. lets-encrypt-production
* Validation Method: http-01
* Haken bei: Auto Renewal
* Renewal Interval: 60
 
 
 
 
|-
|}
== Den HAProxy für die Verwendung von Let's Encrypt konfigurieren ==
 
Durch die Angaben unter Settings und bei der Validierungsmethode http-01 hat das Let's-Encrypt-Plugin entsprechende Eintragungen im HAProxy vorgenommen. Überprüfen Sie deren Anwesenheit:
 
 
{| style="border-spacing:0;width:15.937cm;"
|- style="border:none;padding:0.049cm;"
|| * HAProxy / Settings / Real Servers → acme_challenge_host
** Server Address: 127.0.0.1
** Server Port: 43580
* HAProxy / Settings / Virtual Services / Backend Pools → acme_challenge_backend
** Server: acme_challenge_host
* HAProxy / Settings / Rules & Checks / Conditions → find_acme_challenge
** Condition Type: Path starts with
** Path Prefix: /.well-known/acme-challenge/
* HAProxy / Settings / Rules & Checks / Rules → redirect_acme_challenges
** Test type: IF
** Select conditions: find_acme_challenge
** Logical Operator: AND
** Execute function: Use specified Backend Pool
** Use backend pool: acme_challenge_backend
 
 
 
 
|-
|}
Stellen Sie sicher, dass im Public Service http_lan_wan die Regel redirect_acme_challenges an erster Stelle auftaucht. Sie können die Reihenfolge per Drag & Drop ändern:
 
 
{| style="border-spacing:0;width:13.093cm;"
|- style="border:none;padding:0.049cm;"
|| HAProxy / Settings / Virtual Services / Public Services → http_lan_wan* Select Rules: redirect_acme_challenges (vor allen anderen Regeln)
 
 
 
 
|-
|}
== Zertifikate generieren ==
 
Nachdem der HAProxy für die ACME-Challenge-Anfragen konfiguriert ist, können nun die Zertifikate generiert werden:
 
 
{| style="border-spacing:0;width:17cm;"
|- style="border:none;padding:0.049cm;"
|| Services / Let's Encrypt / Certificates → Issue/Renew Certificates Now (bzw. Klick auf das Neu-Laden-Symbol neben jedem Zertifikat)
|-
|}
Ob das Generieren der Zertifikate funktioniert hat, kann unter Services / Let's Encrypt / Log File nachverfolgt werden. Suchen Sie bei Problemen nach dem Schlagwort "error".
 
== Zertifikate im HAProxy hinterlegen ==
 
Damit der HAProxy die mit Let's Encrypt generierten Zertifikate nun bei https-Anfragen bereitstellt, müssen diese bei den entsprechenden Public-Services hinterlegt werden:
 
 
{| style="border-spacing:0;width:17cm;"
|- style="border:none;padding:0.049cm;"
|| Services / HAProxy / Settings / Virtual Services / Public Services / https_lan (Dienst für ausschließlich interne https-Anfragen)* SSL Offloading / Certificates: z. B. fog.ihre-schule.de, usermanagement.ihre-schule.de (Entfernen Sie das zuvor hinterlegte Zertifikat: Web GUI SSL certificate)
 
 
 
Services / HAProxy / Settings / Virtual Services / Public Services / https_lan_wan (Dienst für interne und externe https-Anfragen)* SSL Offloading / Certificates: z. B. nextcloud.ihre-schule.de, collabora.ihre-schule.de (Entfernen Sie das zuvor hinterlegte Zertifikat: Web GUI SSL certificate)
 
 
 
 
|-
|}
== Besonderheit: Zertifikat für verschlüsselte ldap-Anfragen an den Samba-Server ==
 
Da der HAProxy die ldap-Anfragen nicht verarbeiten kann, wird der betroffene Port 636 für Anfragen von außen über eine NAT-Regel an den Samba-Server weitergeleitet:
 
 
{| style="border-spacing:0;width:10.888cm;"
|- style="border:none;padding:0.049cm;"
|| Firewall / NAT / Port Forward→ Add* Interface: WAN
* Protocol: TCP/UDP
* Desintation: WAN Adress From Port 636 To Port 636
* Redirect Target IP: 10.1.100.7 (IP Samba-Server)
* Redirect Target Port: 636
* Description: samba-ldap
 
 
 
 
|-
|}
Die Zertifikatsgenerierung für ldap.ihre-schule.de soll aber trotzdem über das Let's-Encrypt-Plugin nach obigen Beispiel erfolgen.
 
Da der HAProxy die ldap-Anfragen aber nicht entgegennimmt, muss der Samba-Server selbst die Zertifikatsinformationen erhalten und ausgeben. Nachdem das Let's-Encrypt-Plugin das Zertifikat für ldap.ihre-schule.de generiert bzw. erneuert hat, soll es die Zertifikatsdateien also auf den Samba-Server kopieren. Hierzu sind die nachfolgenden Schritte erforderlich:
 
=== SSH-Kommunikation zwischen Samba-Server und OPNsense vorbereiten ===
 
Siehe hierzu die [https://schulnetzkonzept.de/samba Beschreibung zum Samba-Server].
 
=== Skript zum Kopieren der Zertifikate ===
 
Damit nach einer Erneuerung des Zertifikats von ldap.ihre-schule.de durch das Let's-Encrypt-Plugin dieses auf dem LDAP-Server landet, ist ein Skript erforderlich, welches die Dateien von OPNsense auf den LDAP-Server kopiert, entsprechende Dateiberechtigungen setzt und den Domänen-Controller neu startet.
 
Dieses Skript wird in OPNsense so hinterlegt, dass es später an entsprechender Stelle in der Webmin-Oberfläche ausgewählt werden kann.
 
Achten Sie bei der Verwendung der nachfolgenden Datei auf die Verwendung der richtigen IP-Adresse und Pfade.
 
vi /usr/local/opnsense/service/conf/actions.d/actions_ldapserver.conf
 
====== Datei vi /usr/local/opnsense/service/conf/actions.d/actions_ldapserver.conf ======
 
[ldap-upload-certs]
command:scp -i /root/.ssh/id_rsa_samba /var/etc/acme-client/home/ldap.ihre-schule.de/* root@10.1.100.7:/etc/samba/tls
parameters:
type:script
message:copy certificates to ldap-server
description:LDAP-Server - Copy Certificates
 
[ldap-restart-dc]
command:ssh -i /root/.ssh/id_rsa_samba root@10.1.100.7 "chmod -R 0600 /etc/samba/tls && service samba-ad-dc restart"
parameters:
type:script
message:restarting ldap-server-dc
description:LDAP-Server - Restart DC
 
Damit das Skript im System zur Verfügung steht muss der Dienst configd neu gestartet werden:
 
service configd restart
 
== Skript beim Let's-Encrypt-Zertifikat hinterlegen ==
 
Zunächst müssen die beiden Aktionen des Skriptes als Automatisierungsaufgaben im Let's-Encrypt-Plugin definiert werden:
 
 
{| style="border-spacing:0;width:11.991cm;"
|- style="border:none;padding:0.049cm;"
|| Services / Let's Encrypt / Automation → Add* 1. Automatisierungsaufgabe
** Haken bei: enabled
** Name: LDAP-Server - Copy Certificates
** Run Command: System or Plugin Command
** System Command: LDAP-Server - Copy Certificates
* 2. Automatisierungsaufgabe
** Haken bei: enabled
** Name: LDAP-Server - Restart DC
** Run Command: System or Plugin Command
** System Command: LDAP-Server - Restart DC
 
 
 
 
|-
|}
Anschließend werden die beiden Automatisierungsaufgaben dem Zertifikat ldap.ihre-schule.de zugeordnet.
 
 
{| style="border-spacing:0;width:11.486cm;"
|- style="border:none;padding:0.049cm;"
|| Services / Let's Encrypt / Certificates / ldap.ihre-schule.de → edit* Automations (Achtung: Reihenfolge einhalten!)
** 1. Aufgabe: LDAP-Server - Copy Certificates
** 2. Aufgabe: LDAP-Server - Restart DC
 
 
 
 
|-
|}
Somit werden nach Erneuerung des Zertifikats für ldap.ihre-schule.de automatisch die Zertifikatsdateien auf den LDAP-Server kopiert und anschließend der DC-Dienst neu gestartet.= Installation und Konfiguration des OpenVPN-Servers =
 
== Grundinstallation ==
 
Mithilfe des OpenVPN-Servers können Sie z. B. als Administrator von außen auf das interne Netzwerk zugreifen.
 
Für die Einrichtung des OpenVPN-Servers steht ein Wizard zur Verfügung, der auch die notwendigen Firewall-Einstellungen hinterlegt:
 
 
{| style="border-spacing:0;width:17cm;"
|- style="border:none;padding:0.049cm;"
|| VPN / OpenVPN / Servers → Use a wizard to to setup a new server* Type of Server: Local User Access
* Certificate Authority → Add new CA
** Descripive Name: z. B. schulnetz.intra-ca
** Country Code: z. B. DE
** entsprechende Einträge für: State or Province, City, Organization, und Email→ Add new CA
* Choose a Server Certificate → Add new Certificate
** Descriptive name: z. B. schulnetz.intra
** Country Code: z. B. DE
** entsprechende Einträge für: State or Province, City, Organization, und Email→ Button: Add Certificate
* General OpenVPN Server Information
** Interface: WAN
** Protocol: UDP
** Local Port: 1194
* Tunnel Settings
** IPv4 Tunnel Network: 10.0.8.0/24 (ein anderes Netz als Ihr Schulnetz)
** IPv4 Local Network: z. B. 10.1.0.0/20,10.1.100.0/24,10.1.254.0/24 (für Administratoren alle drei internen Subnetze - bei Bedarf ggf. anpassen)
* Traffic from clients to server
** Haken bei Firewall Rule
* Traffic from clients through VPN
** Haken bei OpenVPN Rule
 
 
 
 
|-
|}
== Anlegen einer VPN-Gruppe ==
 
Durch Anlage einer Gruppe für den VPN-Zugriff, kann man folgende Festlegungen tätigen:* Berechtigung für die VPN-Einwahl nur für Mitglieder der Gruppe
* Beschränkung der OPNsense-Web-Oberfläche für die Gruppenmitglieder, sodass zugehörige Benutzer lediglich ihr eigenes Passwort ändern können
 
 
 
 
{| style="border-spacing:0;width:16.279cm;"
|- style="border:none;padding:0.049cm;"
|| System / Access / Groups → Add* Group name: openvpnusers → Save
* Gruppe openvpnusers erneut bearbeiten
** Assigned Privileges → Add: Haken bei GUI System: User Password Manager
 
 
 
 
|-
|}
== Anlegen von VPN-Benutzern ==
 
 
{| style="border-spacing:0;width:17cm;"
|- style="border:none;padding:0.049cm;"
|| System / Access / Users → Add* Username: <gewünschter Benutzername>
* Password: <gewünschtes Passwort>
* Full Name: <Vollständiger Name>
* Group membership: openvpnusers
* Certificate: Haken bei: Click to create a user certificate → Save
** Method: Create an internal Certificate
** Descriptive name: <geben Sie hier den gleichen Namen an wie oben bei Username>
** Certificate authority: <geben Sie hier die gleiche Zertifizierungsstelle an wie bei der Einrichtung des OpenVPN-Servers - z. B. schulnetz.intra>
 
 
 
 
|-
|}
== Export der VPN-Zugangsdaten für angelegte User ==
 
 
{| style="border-spacing:0;width:17cm;"
|- style="border:none;padding:0.049cm;"
|| VPN / OpenVPN / Client Export* Hostname: IP oder Dyndns-Adresse
* Haken bei Use random local Port, damit sich mehrere Clients gleichzeitig verbinden können
 
 
 
 
|-
|}
Unterhalb der Einstellungsmöglichkeiten können für angelegte Benutzer deren individuellen Zugangsdaten heruntergeladen werden. Ggf. wählen Sie hierzu bei Export Type eine passende Downloadmöglichkeit.
 
== Client-Installationsdateien und Konfigurationsdateien ausgeben ==
 
Nach Anlage eines VPN-Users können Sie diesem für sein System (z. B. Windows, Mac, ...) personalisierte Dateien für Installation und Konfiguration des OpenVPN-Clients aushändigen:
 
 
{| style="border-spacing:0;width:10.659cm;"
|- style="border:none;padding:0.049cm;"
|| VPN / OpenVPN / Client Export
 
→ OpenVPN Clients→ Wahl der gewünschten Dateien des entsprechenden Users
|-
|}
 
 
= Links =
 
* [https://opnsense.org/download/ OPNsense Downloadseite]  
* [https://wiki.opnsense.org/ OPNsense Dokumentation]  
* [https://www.putty.org/ SSH-Consolen-Client Putty]
* [https://winscp.net/ SCP-Dateitransfer-Client WinSCP]
 
----
 
== Quellen ==
# https://schulnetzkonzept.de/opnsense
 
== Weblinks ==
* [http://opnsense.org/ Offizielle Webpräsenz des Projektes]
 
== Siehe auch ==
* BSD-basiert
** [[pfSense]]
** [[FreeNAS]]
* Linux-basiert
** [[IPfire]]
 
[[Category:Netzwerke:Router]]
[[Category:Netzwerke:Firewall]]

Aktuelle Version vom 15. April 2024, 14:19 Uhr

Unterkategorien

Diese Kategorie enthält die folgenden 11 Unterkategorien (11 insgesamt):

O

Seiten in der Kategorie „OPNsense“

Diese Kategorie enthält nur die folgende Seite.