Kategorie:OPNsense: Unterschied zwischen den Versionen

Aus Foxwiki
Zeile 72: Zeile 72:
siehe [[Netzwerke:Firewall:OPNsense:Webfilter]]
siehe [[Netzwerke:Firewall:OPNsense:Webfilter]]


= Vollqualifizierte Domänennamen für Schulnetzdienste =
= Domänennamen =
siehe [[Netzwerke:Firewall:OPNsense:Domänennamen]]


== Subdomains beim Webhoster einrichten ==
Die Zugriffe auf Dienste im Schulnetz sollen aus Gründen der Sicherheit ausschließlich verschlüsselt erfolgen. Um hierfür gültige Zertifikate generieren zu können, ist für jeden Dienst ein vollqualifizierter öffentlicher Domänenname erforderlich. Somit ist es auch möglich, gesichert auf Dienste von außen zuzugreifen (kann auf Wunsch unterbunden werden).
Die meisten Schulen haben sich für ihre Schulhomepage bereits einen entsprechenden Domänennamen (hier im weiteren als Beispiel: ihre-schule.de) gesichert. Sofern Ihr Webhoster dies unterstützt, können Sie für die Dienste im Schulnetz entsprechende Subdomains anlegen, welche dann auf den Internetanschluss der Schule geleitet werden sollen - z. B.:* Webdienste
** nextcloud.ihre-schule.de (Zugriff auf die Nextcloud)
** usermanagement.ihre-schule.de (Zugriff auf den LDAP-Account-Manager zur Benutzerverwaltung)
** selfservice.ihre-schule.de (Zugriff auf den Self-Service-Password-Dienst)
** fog.ihre-schule.de (Zugriff auf den Image-Server FOG)
* Andere Dienste
** ldap.ihre-schule.de (Zugriff für externe ldap-Anfragen)
* WWW-SubdomainsFalls gewünscht legen sich auch die WWW-Subdomains für Ihre Dienste an, z. B. www.nextcloud.ihre-schule.de
OPNsense wird im Abschnitt "Installation und Konfiguration des Reverse-Proxy-Servers" so konfiguriert, dass die angegebenen Domänennamen sowohl von innerhalb des Schulnetzes und wenn gewünscht auch von außerhalb für den Zugriff auf die Dienste verwendet werden können. So nutzt z. B. ein Schüler sowohl von zu Hause als auch vom Schulnetz aus die Nextcloud durch Angabe der URL https://nextcloud.ihre-schule.de (und nicht durch Angabe einer IP-Adresse).
== Subdomains beim Webhoster weiterleiten ==
Damit die angelegten Subdomains auf die IP-Adresse des Internetanschlusses für das Schulnetz zeigen, gibt es zwei Möglichkeiten:
=== Möglichkeit 1: Sie erhalten eine feste IP-Adresse von Ihrem Internet-Provider → A-Record ===
In diesem Fall legen Sie beim Webhoster unter den Nameservereinstellungen für jede angelegte Subdomain einen A-Record mit der festen IP-Adresse des Schulnetz-Internetanschlusses fest.
=== Möglichkeit 2: Die IP-Adresse des Schulnetz-Internetanschlusses ändert sich in regelmäßigen Abständen → CNAME-Record ===
In diesem Fall benötigen Sie einen DynDNS-Anbieter, aus dessen Pool Sie sich einen Domänennamen reservieren, der auf die IP-Adresse des Schulnetz-Internetanschlusses zeigt. Damit die regelmäßig stattfindenden Änderungen der IP-Adresse für den beim DynDNS-Anbieter reservierten Domänennamen aktualisiert werden, können Sie den von OPNsense integrierten Aktualisierungs-Client verwenden:
{| style="border-spacing:0;width:15.011cm;"
|- style="border:none;padding:0.049cm;"
|| Services / Dynamic DNS → Add* Haken bei Enable
* Service Type: hier können Sie aus zahlreichen DynDNS-Anbietern auswählen
* Interface to monitor: WAN
* Hostname: z. B. schule-xyz.dynanbieter.org
* Username / Password: Zugangsdaten für den DynDNS-Anbieter
|-
|}
Nach erfolgreicher Einrichtung des DynDNS-Dienstes legen Sie beim Webhoster unter den Nameservereinstellungen für jede angelegte Subdomain einen CNAME-Record mit dem DynDNS-Domänennamen des Schulnetz-Internetanschlusses fest.= Installation und Konfiguration des Reverse-Proxy-Servers =
== Warum eigentlich ein Reverse-Proxy? ==
Der Reverse-Proxy entscheidet für an ihn gerichtete Anfragen, ob und an wen er diese Weiterleitet.
Sofern man nur einen Dienst von außen zugänglich machen möchte (z. B. die Nextcloud), könnte man auch den einfacheren Weg wählen und im Router mit entsprechend NAT-Regeln (z. B. für die Ports 80 und 443) arbeiten.
Im Schulnetzkonzept gibt es aber gute Gründe dafür, einen Reverse-Proxy einzusetzen:* Es gibt mehrere Dienste, die von außen über die gleichen Ports zugänglich sein sollen (z. B. Nextcloud, Collabora, Passwort-Service), sodass NAT-Regeln hierfür nicht ausreichen.
* Der Reverse-Proxy wird im Schulnetzkonzept auch dafür eingesetzt, für Anfragen die dazu passenden Zertifikate bereitzustellen. Dies entlastet den dahinter liegenden Webserver (z. B. den der Nextcloud) enorm.
* Der Reverse-Proxy wird auch für Anfragen von innerhalb des Schulnetzes verwendet, sodass Dienste wie die Nextcloud auch von dort verschlüsselt über ihren vollqualifizierten Domänennamen erreichbar sind und intern und nicht über das Internet geroutet werden.
== Installation und Konfiguration des HAProxy-Plugins ==
Der Reverse-Proxy mit Namen HAProxy muss zunächst installiert werden:
{| style="border-spacing:0;width:9.121cm;"
|- style="border:none;padding:0.049cm;"
|| System / Firmware / Plugins / os-haproxy → Install
|-
|}
Anschließend muss der HAProxy aktiviert werden:
{| style="border-spacing:0;width:8.497cm;"
|- style="border:none;padding:0.049cm;"
|| Services / HAProxy / Settings / Service Settings* Haken bei: Enable HAProxy
|-
|}
== Einrichtung virtueller IPs und zugehöriger Namen (Aliases) für den HAProxy ==
Um zwischen Anfragen an den HAProxy unterscheiden zu können, die ausschließlich von intern (lan) oder von intern und extern (lan_wan) zulässig sind, werden zwei virtuelle LAN-IP-Adressen benötigt, auf denen der HAProxy lauschen kann:
{| style="border-spacing:0;width:12.278cm;"
|- style="border:none;padding:0.049cm;"
|| Firewall / Virtual IPs / Settings → Add
1. Virtual IP (HAProxy-Interface für interne und externe Anfragen)* Mode: IP Alias
* Interface: LAN_SERVER
* Address: 10.1.100.2/32
* Description: HAProxy_lan_wan
2. Virtual IP (HAProxy-Interface ausschließlich für interne Anfragen)* Mode: IP Alias
* Interface: LAN_SERVER
* Address: 10.1.100.3/32
* Description: HAProxy_lan
|-
|}
Zusätzlich werden für beide IP-Adressen Alias-Namen in OPNsense hinterlegt, auf die später zugegriffen wird:
{| style="border-spacing:0;width:11.485cm;"
|- style="border:none;padding:0.049cm;"
|| Firewall / Aliases → Add
1. Alias (HAProxy-Interface für interne und externe Anfragen)* Name: HAProxy_lan_wan
* Type: Host(s)
* Content: 10.1.100.2
2. Alias (HAProxy-Interface ausschließlich für interne Anfragen)* Name: HAProxy_lan
* Type: Host(s)
* Content: 10.1.100.3
|-
|}
== Interne und externe Anfragen Webserveranfragen (Ports 80/443) auf den HAProxy weiterleiten ==
Sowohl externe als auch interne HTTP- und HTTPS-Anfragen sollen auf die entsprechenden HAProxy-Interfaces weitergeleitet werden.
=== Weiterleitung externer Anfragen ===
{| style="border-spacing:0;width:10.063cm;"
|- style="border:none;padding:0.049cm;"
|| Firewall / NAT / Port Forward → Add
1. Weiterleitung (auf Port 80)* Interface: WAN
* TCP/IP Version: IPv4
* Protocol: TCP
* Destination: any
* Destination port range: from: HTTP to: HTTP
* Redirect target IP: HAProxy_lan_wan
* Redirect target Port: http
* Description: HAProxy_lan_wan
2. Weiterleitung (auf Port 443)* Interface: WAN
* TCP/IP Version: IPv4
* Protocol: TCP
* Destination: any
* Destination port range: from: HTTPS to: HTTPS
* Redirect target IP: HAProxy_lan_wan
* Redirect target Port: https
* Description: HAProxy_lan_wan
|-
|}
=== Weiterleitung interner Anfragen ===
Damit schulhausinterne Aufrufe der Webdienste direkt beim Reverse-Proxy landen und nicht über das Internet geroutet werden, müssen entsprechende Nameserver-Weiterleitungen zur virtuellen IP-Adresse des gewünschten HAProxy-Moduls existieren. Sofern der Webdienst nur innerhalb des Schulhauses erreichbar sein soll, leiten Sie zur virtuellen IP von HAProxy_lan ansonsten zu HAProxy_lan_wan weiter.
Beispiel für den Webdienst Nextcloud, welcher auch von außen erreichbar sein soll:
{| style="border-spacing:0;width:11.486cm;"
|- style="border:none;padding:0.049cm;"
|| Services / Unbound DNS / Overrides / Host Overrides → Add* Host: nextcloud
* Domain: z. B. ihre-schule.de
* Type: A or AAAA (IPv4 or IPv6 address)
* IP: z. B. 10.1.100.2 (virtuelle IP von HAProxy_lan_wan)
|-
|}
== Einrichtung von Real Servers ==
Real Servers sind jene Dienste, welche hinter dem HAProxy erreicht werden sollen.
Richten Sie für jeden Ihrer Webdienste - unabhängig davon, ob dieser von außen erreichbar sein soll oder nicht - einen Real Server ein:* nextcloud.ihre-schule.de
* collabora.ihre-schule.de
* usermanagement.ihre-schule.de
* selfservice.ihre-schule.de
* fog.ihre-schule.de
Beispiel für den Webdienst nextcloud.ihre-schule.de:
{| style="border-spacing:0;width:11.89cm;"
|- style="border:none;padding:0.049cm;"
|| Services / HAProxy / Settings / Real Servers → Add* Name: nextcloud_host
* FQDN or IP: z. B. 10.1.100.8 (IP-Adresse Ihrer Nextcloud)
* Port: 80
* SSL: kein Haken
* Verify SSL CA: kein Haken
|-
|}
== Einrichtung von Backend Pools ==
Mit einem Backend Pool können ein oder mehrere Real Server gebündelt werden. Auch wenn für jeden Webdienst jeweils nur einen Real Server (z. B. gibt es nur einen Nextcloud-Server) bereitgehalten wird, muss an dieser Stelle für jeden Dienst ein Backend Pool eingerichtet werden.
Beispiel für den Webdienst nextcloud.ihre-schule.de:
{| style="border-spacing:0;width:12.704cm;"
|- style="border:none;padding:0.049cm;"
|| Services / HAProxy / Settings / Virtual Services / Backend Pools → Add* Name: nextcloud_backend
* Servers: nextcloud_host
|-
|}
== Einrichtung der Public Services ==
Die Public Services des HAProxys sind die Anlaufstellen, die interne bzw. externe Anfragen entgegennehmen.
Für das Schulnetzkonzept werden 3 Public Services benötigt:* eines für interne und externe Anfragen über http,
* eines für interne und externe Anfragen über https und
* eines für ausschließlich interne Anfragen über https.
=== Einrichtung des Public Service für interne und externe Anfragen über http ===
{| style="border-spacing:0;width:12.795cm;"
|- style="border:none;padding:0.049cm;"
|| Services / HAProxy / Settings / Virtual Services / Public Services → Add* Name: http_lan_wan
* Description: interne und externe http-Anfragen
* Listen Addresses:
** z. B. 10.1.100.2:80 (HAProxy_lan_wan)
** z. B. 10.1.100.3:80 (HAProxy_lan)
* Type: HTTP / HTTPS (SSL offloading)
* Default Backend Pool: none
* Enable SSL offloading: kein Haken
* X-Forwarded-For header: Haken
|-
|}
=== Einrichtung des Public Service für interne und externe Anfragen über https ===
{| style="border-spacing:0;width:17cm;"
|- style="border:none;padding:0.049cm;"
|| Services / HAProxy / Settings / Virtual Services / Public Services → Add* Name: https_lan_wan
* Description: interne und externe https-Anfragen
* Listen Addresses:
** z. B. 10.1.100.2:443 (HAProxy_lan_wan)
** z. B. 10.1.100.3:443 (HAProxy_lan)
* Type: HTTP / HTTPS (SSL offloading)
* Default Backend Pool: none
* Enable SSL offloading: Haken
* Certificates: Web GUI SSL certificate (wird später durch Let's-Encrypt-Zertifikate ersetzt)
* X-Forwarded-For header: Haken
|-
|}
=== Einrichtung des Public Service für ausschließlich interne Anfragen über https ===
{| style="border-spacing:0;width:17cm;"
|- style="border:none;padding:0.049cm;"
|| Services / HAProxy / Settings / Virtual Services / Public Services → Add* Name: https_lan
* Description: ausschließlich interne https-Anfragen
* Listen Addresses:
** z. B. 10.1.100.3:443 (HAProxy_lan)
* Type: HTTP / HTTPS (SSL offloading)
* Default Backend Pool: none
* Enable SSL offloading: Haken
* Certificates: Web GUI SSL certificate (wird später durch Let's-Encrypt-Zertifikate ersetzt)
* X-Forwarded-For header: Haken
|-
|}
=== Einrichtung von Conditions ===
Conditions sind vordefinierte Bedingungen die für die späteren Regeln für die Reaktionen des HAProxy notwendig sind.
Zunächst benötigen Sie für jeden Webdienst eine Bedingung, die greift, falls eine Anfrage mit dem entsprechenden Domänennamen an den HAProxy gerichtet wird.Beispiel für den Webdienst nextcloud.ihre-schule.de:
{| style="border-spacing:0;width:12.054cm;"
|- style="border:none;padding:0.049cm;"
|| Services / HAProxy / Settings / Rules & Checks / Conditions → Add* Name: nextcloud
* Condition type: Host ends with
* Host Suffix: nextcloud.ihre-schule.de
|-
|}
Weiterhin benötigen Sie eine Bedingung, mit der der HAProxy erkennt, dass eine Anfrage an ihn nicht verschlüsselt erfolgt ist:
{| style="border-spacing:0;width:12.054cm;"
|- style="border:none;padding:0.049cm;"
|| Services / HAProxy / Settings / Rules & Checks / Conditions → Add* Name: not-ssl
* Condition type: Traffic is SSL (locally deciphered)
* Negate condition: Haken
|-
|}
=== Einrichtung von Rules ===
Rules sind vordefinierte Regeln, wie der HAProxy bei Eintreten einer oder mehrere Bedingungen reagieren soll.
Zunächst benötigen Sie für jeden Webdienst eine Regel, die den HAProxy dazu verleitet, dass er eine an ihn gerichtete Anfrage an den entsprechenden Backend Pool weiterleitet.Beispiel für den Webdienst nextcloud.ihre-schule.de:
{| style="border-spacing:0;width:11.158cm;"
|- style="border:none;padding:0.049cm;"
|| Services / HAProxy / Settings / Rules & Checks / Rules → Add* Name: nextcloud
* Test type: if
* Select conditions: nextcloud
* Execute function: Use specified Backend Pool
* Use backend pool: nextcloud_backend
|-
|}
Weiterhin benötigen Sie eine Regel, die nicht verschlüsselte htttp-Anfragen auf https umleitet:
{| style="border-spacing:0;width:11.158cm;"
|- style="border:none;padding:0.049cm;"
|| Services / HAProxy / Settings / Rules & Checks / Rules → Add* Name: redirect_ssl
* Test type: if
* Select conditions: not-ssl
* Execute function: http-request-redirect
* HTTP Redirect: scheme https code 301
|-
|}
== Zuweisung von Rules zu Backend-Pools ==
Da jede http-Anfrage an einen der Webdienste auf https umgeleitet werden soll, weisen sie jedem Backend Pool dir Rule redirect_ssl zu.
Beispiel für den Backend Pool nextcloud_backend:
{| style="border-spacing:0;width:14.573cm;"
|- style="border:none;padding:0.049cm;"
|| HAProxy / Settings / Virtual Services / Backend Pools / nextcloud_backend → Edit
Select Rules: redirect_ssl
|-
|}
== Zuweisung von Rules zu Public Services ==
Der Public Service http_lan_wan soll alle an ihn gestellte Anfragen an den entsprechenden Backend-Poll weiterleiten:
{| style="border-spacing:0;width:13.674cm;"
|- style="border:none;padding:0.049cm;"
|| HAProxy / Settings / Virtual Services / Public Services / http_lan_wan → Edit
Select Rules: z. B.: nextcloud  fog usermanagement opnsense collabora
|-
|}
Der Public Service https_lan soll nur auf https-Anfragen reagieren, die ausschließlich intern zugänglich sein sollen:
{| style="border-spacing:0;width:12.917cm;"
|- style="border:none;padding:0.049cm;"
|| HAProxy / Settings / Virtual Services / Public Services / https_lan → Edit
Select Rules: z. B.: fog usermanagement opnsense
|-
|}
Der Public Service https_lan_wan soll auf sowohl interne als auch externe https-Anfragen reagieren:
{| style="border-spacing:0;width:13.831cm;"
|- style="border:none;padding:0.049cm;"
|| HAProxy / Settings / Virtual Services / Public Services / https_lan_wan → Edit
Select Rules: z. B.: nextcloud collabora
|-
|}
= Installation und Konfiguration der automatisierten Zertifikatsverwaltung =
= Installation und Konfiguration der automatisierten Zertifikatsverwaltung =



Version vom 20. Februar 2022, 22:54 Uhr

OPNsense ist eine freie Firewall-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.

Eigenschaften

Anwendungen

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-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.

  1. ein OPNsense VGA-Image von der Herstellerseite runterladen
  2. mit dem Befehl Disc-Dump auf einem Datenträger (Bootmedium) installieren
  3. den Datenträger in den Computer stecken und von diesem booten
  4. nachdem der PC hochgefahren ist, mit dem Login "installer" und dem Passwort "opnsense" anmelden
  5. Start des Installationsvorganges, zuerst zweimal bestätigen und dann auf "Guided installation" gehen
  6. eine Partition auswählen auf der OPNsense installiert wird und ein Installationsmodus (MBR mode)
  7. die "swap-Partition" bestätigen
  8. das Passwort des Benutzers "root" erstellen
  9. den Router neustarten
  10. die Installation ist jetzt abgeschlossen
  11. 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:


System / Firmware / Plugins / os-acme-client → Install


Grundkonfiguration

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

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

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:


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:


* 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:


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:


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:


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:


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 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:


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.


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:


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



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

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

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:


VPN / OpenVPN / Client Export

→ OpenVPN Clients→ Wahl der gewünschten Dateien des entsprechenden Users


Links


Quellen

  1. https://schulnetzkonzept.de/opnsense

Weblinks

Siehe auch

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.