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 (nur für Schülernetz LAN_SCHUELER)
  • URL-Filter (nur für Schülernetz LAN_SCHUELER)
  • Reverse-Proxy
  • Zertifikatsmanagement
  • VPN-Server

Die aktuellen Beschreibungen basieren auf OPNsense in der Version 20.

Grundinstallation

Virtuelle Netzwerke und virtuelle Maschine erzeugen

Laden Sie zunächst das offizielle stabile amd64-DVD-Image von der OPNsense-Downloadseite herunter, entpacken Sie die heruntergeladene bz2-Datei und legen Sie die entpackte ISO-Datei auf auf dem Virtualisierungs-Host ab.

Erzeugen Sie eine neue virtuelle Maschine - Dimensionierungsbeispiel:

  • OS: FreeBSD x64
  • 2 CPU
  • 100 GB Festplattenspeicher
  • 8 GB Arbeitsspeicher
  • 3 Netzwerkkarten mit Zugriff auf das interne LAN-Netzwerk mit folgenden VLANs:
    • VLAN 10 untagged für LAN_MANAGEMENT
    • VLAN 11 für LAN_SERVER
    • VLAN 12 für LAN_SCHUELER
    • VLAN 13 für LAN_LEHRER
  • 1 Netzwerkkarte mit Zugriff auf das externe WAN-Netzwerk

Wählen Sie in den Einstellungen zur virtuellen Maschine als CD-Laufwerk die Datenspeicher-ISO-Datei und geben Sie den Speicherort der oben heruntergeladenen OPNsense-ISO-Datei an. Wählen Sie zudem die Option "beim Einschalten verbinden".

Nach dem Start der virtuellen Maschine öffnen Sie das Konsolenfenster. Nun sollte der textbasierte Installationsassistent von OPNsense zu sehen sein.

Installation des Betriebssystems

Folgende Schritte sind bei der Installation zu durchlaufen:

  • Anmeldung mit Benutzernamen "installer" und Passwort "opnsense"
  • Start der Installation mit "OK, let's go"
  • Keymap mit "Change keymap" umstellen auf "de.kbd"
  • Akzeptieren der Umgebungseinstellungen mit "Accept these settings"
  • Geführte Installation einleiten mit "Guided installation"
  • Auswahl der Festplatte, auf der OPNsense installiert werden soll
  • Installationsmodus festlegen auf "GPT/UEFI mode"
  • Vorgeschlagene Swap-Partitionsgröße mit "Yes" bestätigen
  • root-Passwort festlegen
  • Neustart des Systems

Nach dem Neustart müssen in der Regel noch die virtuellen Netzwerkkarten richtig zugewiesen werden. Die Netzwerkkarten heißen im System je nach verwendeter (virtueller) Hardware z. B. em0, em1, ... oder igb0, igb1, ... oder hn0, hn1, ...

  • Melden Sie sich zunächst an der OPNsense-Konsole als root an und wählen Sie die Option "1) Assign Interfaces".
  • VLANs werden hier nicht benötigt, da diese bereits über den Virtualisierungshost den virtuellen Netzwerkkarten zugewiesen wurden.
  • Suchen Sie im Virtualisierungshost nach den MAC-Adressen der 4 virtuellen OPNsense-Netzwerkkarten und ordnen Sie anschließend die richtigen Netzwerkkarten-Namen zu.

Die weitere Konfiguration erfolgt überwiegend über die Web-Schnittstelle von OPNsense. Diese erreichen Sie nun innerhalb des Schulnetzes (intern) mit der auf der OPNsense-Konsole angezeigten LAN-IP-Adresse (i. d. R.: https://192.168.1.1).

Die Zugangsdaten hierfür sind:

  • Benutzername: root
  • Passwort: <haben Sie während des Installationsprozesses selbst vergeben>

Erste Konfiguration über die Web-Schnittstelle

Rufen Sie die Web-Schnittstelle auf und melden Sie sich an.

Beim ersten Start der Web-Oberfläche führt Sie ein Setup-Wizard durch wichtige Bestandteile der Erstkonfiguration. Hierbei sind folgende Angaben empfehlenswert:

General Information

  • Hostnamen: z. B. opnsense
  • Domain: z. B. schulnetz.intra
  • Haken bei "Allow DNS servers to be overriden by DHCP/PPP on WAN", sofern sie den DNS-Server Ihres Internet-Providers verwenden wollen.

Unbound DNS

  • Haken bei "Enable Resolver"

Time Server Information

  • Timezone: Europe/Berlin

Configure WAN Interface

  • IPv4 Configuration Type: DHCP, sofern sie von Ihrem Internet-Provider eine IP zugewiesen bekommen
  • Haken bei "Block RFC1918 Private Networks"
  • Haken bei "Block bogon networks"

Configure LAN Interface

  • LAN IP Address: z. B. 10.1.0.1
  • Subnet Mask: z. B. 20

Nach Klick auf "Reload" werden die Einstellungen neu geladen. Sofern sie die LAN-IP-Adresse geändert haben, müssen Sie im Browser die neue IP eingeben, um die Web-Oberfläche wieder erreichen zu können.

Sie können diesen Setup-Wizard zu einem späteren Zeitpunkt erneut unter System/Setup Wizard aufrufen.

Hinweis: Sofern Sie für die WAN-Einstellungen nicht DHCP verwenden, sollten Sie unter Interfaces → WAN das IPv4-Upstream-Gateway nicht auf dem Wert "Auto" belassen, sondern explizit ein Gateway angeben. Mit der Einstellung "Auto" kann es an diversen Stellen zu unvorhersehbarem Verhalten kommen.

Installation des VMWare-Plugins

Sofern Sie OPNsense als virtuelle Maschine unter VMWare betreiben, empfiehlt sich, zur Performance-Steigerung das VMWare-Plugin zu installieren:

System/Firmware/Plugins/os-vmware → Install

SSH-Zugriff aktivieren

Sofern Sie mit einem SSH-Client auf die Konsole (z. B. via Putty) oder das Dateisystem (z. B. via WinSCP) von OPNSense zugreifen möchten, müssen Sie den SSH-Server aktivieren:

System / Settings / Administration / Secure Shell

  • Secure Shell Server: Haken bei: Enable Secure Shell
  • Sofern sie kein Zertifikat zur Authentifizierung verwenden:
    • Root Login: Haken bei: Permit root user login
    • Authentication Method: Haken bei: Permit password login

Konfiguration der Netzwerkschnittstellen und grundlegende Firewall-Regeln

Beispielhafte Netzwerk-Planung

Die Anleitungen auf diesen Seiten gehen von nachfolgender beispielhafter Netzwerkkonfiguration aus.
Diese kann selbstverständlich den eigenen Bedürfnissen angepasst werden.

Teilnetz (VLAN)

VLAN Netzwerkteilnehmer IP/IP-Bereich
10.1.254.0/24 (10 - LAN_MANAGEMENT) 10 untagged virtueller Adapter OPNsense-Interface LAN_MANAGEMENT 10.1.254.1
  10 untagged + 11 + 12 + 13 Switch-Port Management-Interface des Virtualisierungshosts 10.1.254.10
  10 untagged Switch-Port NAS zur Datensicherung 10.1.254.20
  10 untagged Switch-Port bzw.
10 untagged virtueller Adapter
WLAN-Controller als Hardware bzw.
WLAN-Controller als virtuelle Maschine
10.1.254.30
  10 untagged + 12 + 13 Switch-Port Access-Points zur Nutzung in LAN_SCHUELER und LAN_LEHRER 10.1.254.50 - 10.1.254.99
  10 untagged Switch-Port bzw.
10 untagged virtueller Adapter
DHCP-Bereich (OPNsense: Hardware-Clients)
DHCP-Bereich (OPNsense: virtuelle Clients)
10.1.1.254.200 - 10.1.1.254.254
10.1.100.0/24 (11 - LAN_SERVER) 11 virtueller Adapter OPNsense-Interface LAN_SERVER 10.1.100.1
    OPNsense virtuelle IPs für HAProxy 10.1.100.2 - 10.1.100.3
  11 virtueller Adapter Samba-Server 10.1.100.7
  11 virtueller Adapter Nextcloud-Server 10.1.100.8
  11 virtueller Adapter Collabora-Server für Nextcloud 10.1.100.9
  11 untagged Switch-Port OPNsense-DHCP-Bereich (OPNsense: Hardware-Clients) 10.1.100.200 - 10.1.100.254
  11 virtueller Adapter OPNsense-DHCP-Bereich (OPNsense: virtuelle Clients) 10.1.100.200 - 10.1.100.254
10.1.0.0/20 (12 - LAN_SCHUELER) 12 virtueller Adapter OPNsense-Interface LAN_SCHUELER 10.1.0.1
  12 virtueller Adapter FOG-Server 10.1.1.1
  12 untagged Switch-Port OPNsense-DHCP-Bereich (kabelgebundene Clients) 10.1.11.1 - 10.1.15.254
  12 virtueller Adapter bzw. OPNsense-DHCP-Bereich (virtuelle Clients) 10.1.11.1 - 10.1.15.254
  s. Access-Points OPNsense-DHCP-Bereich (WLAN-Clients) 10.1.11.1 - 10.1.15.254
10.1.16.0/20 (13 - LAN_LEHERER) 13 virtueller Adapter OPNsense-Interface LAN_LEHRER 10.1.16.1
  s. Access-Points DHCP-DHCP-Bereich (WLAN-Clients) 10.1.27.1 - 10.1.31.254

Hinweise:

  • Subnetzmaske und Standardgateway der Netzwerkteilnehmer ist die IP des jeweils zugehörigen OPNsense-Interfaces.
  • Aus Gründen der leichteren technischen Umsetzbarkeit sollte sich der FOG-Server im gleichen Teilnetz wie damit zu verwaltenden Clients befinden.
  • Auf eine klassische DMZ wurde bewusst verzichtet: besonders schützenswerte Netzwerkteilnehmer sind in eigenen Teilnetzen (LAN_MANAGEMENT und LAN_SERVER) untergebracht und mit entsprechenden Firewallregeln abgeschirmt. Für Schüler und Kollegen zugängliche Dienste sind sowohl von innerhalb als auch von außerhalb des Schulhauses nur über den HAProxy zugänglich.

Interfaces für die Teilnetze anlegen, zuweisen und konfigurieren

Sofern noch nicht geschehen müssen die virtuellen Netzwerkkarten von OPNsense unter Interfaces/Assignments Netzwerk-Interfaces zugewiesen werden. Folgende Interfaces werden benötigt:

  • LAN_MANAGEMENT
  • LAN_SERVER
  • LAN_SCHUELER
  • LAN_LEHRER
  • WAN

Im Detail werden die internen Netzwerkschnittstellen wie folgt konfiguriert:

Interfaces/LAN_MANAGEMENT

  • General Configuration
    • Haken bei "Enable interface"
    • Description: LAN_MANAGEMENT
    • IPv4 Configuration Type: static
  • Static IPv4 configuration
    • IPv4 address: 10.1.254.1/24
    • IPv4 Upstream Gateway: Auto-detect

Interfaces/LAN_SERVER

  • General Configuration
    • Haken bei "Enable interface"
    • Description: LAN_SERVER
    • IPv4 Configuration Type: static
  • Static IPv4 configuration
    • IPv4 address: 10.1.100.1/24
    • IPv4 Upstream Gateway: Auto-detect

Interfaces/LAN_SCHUELER

  • General Configuration
    • Haken bei "Enable interface"
    • Description: LAN_SCHUELER
    • IPv4 Configuration Type: static
  • Static IPv4 configuration
    • IPv4 address: 10.1.0.1/24
    • IPv4 Upstream Gateway: Auto-detect

Interfaces/LAN_LEHRER

  • General Configuration
    • Haken bei "Enable interface"
    • Description: LAN_LEHRER
    • IPv4 Configuration Type: static
  • Static IPv4 configuration
    • IPv4 address: 10.1.16.1/24
    • IPv4 Upstream Gateway: Auto-detect

Firewallregeln für LAN_MANAGEMENT, LAN_SERVER, LAN_SCHUELER, LAN_LEHRER

Auf dieser Seite werden alle notwendigen Firewallregeln erläutert. Löschen sie unbedingt alle standardmäßig erzeugten Regeln der Form "Default allow XXX to any rule", da diese - ohne entsprechende vorherige Blockregeln - zu Sicherheitslücken führen können.

Für das grundsätzliche Verständnis der Firewall-Funktionalität von OPNSense sei gesagt, dass...

  • Regeln je Schnittstelle definiert werden.
  • ohne jegliche Regeln sämtlicher Datenverkehr auf der Schnittstelle geblockt wird.
  • bei auftretendem Datenverkehr auf einer Schnittstelle deren Regeln solange der Reihe nach von oben beginnend solange abgearbeitet werden, bis eine Regel zutrifft.

Zunächst wird ein Alias mit dem Namen RFC1918 angelegt. Dieser steht für alle privaten Netzwerke und wird später an diversen Stellen bei der Definition von Firewall-Regeln benötigt:

Firewall/Aliases → Add

  • Name: RFC1918
  • Type: Network(s)
  • Content:
    • 192.168.0.0/16
    • 172.16.0.0/12
    • 10.0.0.0/8

Anfragen ausgehend vom Netzwerk LAN_MANAGEMENT sollen Grundsätzlich in alle anderen Netzwerke (auch das Internet) erlaubt sein.

Firewall/Rules/LAN_MANAGEMENT → Add

  • Action: Pass
  • Interface: LAN_MANAGEMENT
  • TCP/IP Version: IPv4+IPv6
  • Protocol: any
  • Source: LAN_MANAGEMENT net
  • Destination: any
  • Description: Allow LAN_MANAGEMENT to any

Ausgehend von den Netzwerken LAN_SERVER, LAN_SCHUELER und LAN_LEHRER sollen Anfragen ins Internet sowie an die Firewall selbst (z. B. für DNS- oder NTP-Dienste) erlaubt sein.

Hinweise:

  • Die Erzwingung der Kommunikation über einen Webfilter im Netzwerk LAN_SCHUELER wird weiter unten gezeigt. Trotzdem sollen auch für dieses Netzwerk die nachfolgenden Regeln eingerichtet werden.
  • Für die Erlaubnis der Internet-Kommunikation benötigen wir den oben erzeugten Alias RFC1918 und invertieren ihn (alle privaten Netzwerke → invertiert: Internet).

Firewall/Rules/LAN_SERVER sowie Firewall/Rules/LAN_SCHUELER sowie Firewall/Rules/LAN_LEHRER  → Add

  • Action: Pass
  • Interface: LAN_SERVER (bzw. LAN_SERVER bzw. LAN_SCHUELER)
  • TCP/IP Version: IPv4+IPv6
  • Protocol: any
  • Source: LAN_SERVER net (bzw. LAN_SERVER net bzw. LAN_SCHUELER net)
  • Destination / Invert: Haken
  • Destination: RFC1918
  • Description: Allow not-private networks (internet)

Firewall/Rules/LAN_SERVER sowie Firewall/Rules/LAN_SCHUELER sowie Firewall/Rules/LAN_LEHRER  → Add

  • Action: Pass
  • Interface: LAN_SERVER (bzw. LAN_SERVER bzw. LAN_SCHUELER)
  • TCP/IP Version: IPv4+IPv6
  • Protocol: any
  • Source: LAN_SERVER net (bzw. LAN_SERVER net bzw. LAN_SCHUELER net)
  • Destination: This Firewall
  • Description: Allow firewall

Die Kommunikation von LAN_LEHRER ins Netzwerk LAN_SCHUELER soll grundsätzlich gestattet werden (z. B. zur Benutzung von Druckern, Cast-Sticks etc.).

Firewall/Rules/LAN_LEHRER

  • Action: Pass
  • Interface: LAN_LEHRER
  • TCP/IP Version: IPv4+IPv6
  • Protocol: any
  • Source: LAN_LEHRER
  • Destination: LAN_SCHUELER
  • Description: Allow LAN_SCHUELER

DNS-Anfragen auf den Netzwerken LAN_SCHUELER und LAN_LEHRER sollen grundsätzlich von OPNSense beantwortet werden.

Firewall/NAT/Port Forward → Add

  • Interface: LAN_LEHRER und LAN_SCHUELER (Mehrfachauswahl!)
  • TCP/IP Version: IPv4
  • Protocol: TCP/UDP
  • Destination: any
  • Destination port range: from: DNS to: DNS
  • Redirect target IP: Single host or network: 127.0.0.1
  • Redirect target port: DNS
  • Description: Forward dns-queries to unbound

Multicast DNS Repeater zwischen LAN_SCHUELER und LAN_LEHRER

Beim Schulnetzkonzept ist vorgesehen, dass Geräte wie Drucker oder Cast-Lösungen (z. B. HDMI-Sticks, Airserver, ...) im Netzwerk LAN_SCHUELER beheimatet sind. Damit diese Geräte über den Bonjour-Dienst auch vom Netzwerk LAN_LEHRER aus automatisch entdeckt werden können, ist die Installation und Konfiguration des MDNS-Repeater-Moduls erforderlich.

Installation:

System/Firmware/Plugins/os-mdns-repeater → Install

Konfiguration

  • Haken bei Enabled
  • Listen Interfaces: LAN_SCHUELER, LAN_LEHRER

Konfiguration des DHCP-Servers

DHCP für LAN_SCHUELER

Damit im Schulnetz angeschlossene Clients IP-Adressen und weitere Netzwerkinformationen automatisiert zugewiesen bekommen, muss der DHCP-Server für LAN_SCHUELER aktiviert und konfiguriert werden.

Begeben Sie sich hierzu zu Services/DHCPv4/LAN_SCHUELER und tätigen Sie die folgenden Einstellungen:

General Options

  • Haken bei: Enable DHCP server on the LAN_SCHUELER interface
  • Range: z. B. From 10.1.11.1 To 10.1.11.254

NTP
Sofern Sie OPNsense als Zeitserver für angeschlossene Geräte nutzen wollen, hinterlegen Sie hier dessen IP-Adresse.

  • NTP Servers: z. B. 10.1.0.1

Enable network booting
Folgende Einstellungen sind zu tätigen, damit Clients bei PXE-Boot zum Fog-Server geleitet werden:

  • Haken bei: Enables network booting
  • Next-Server (IP Fog-Server): z. B. 10.1.1.1
  • Default BIOS file name: undionly.kpxe
  • UEFI 32 bit file name: ipxe32.efi
  • UEFI 64 bit file name: ipxe.efi

DHCP Static Mappings for this Interface
Sofern Sie statische IPs für Geräte im Netzwerk (z. B. Drucker) via DHCP vergeben wollen, finden Sie zunächst die entsprechende MAC-Adresse des Geräts heraus und erzeugen einen neuen statischen Eintrag durch Klick auf den das Plus-Symbol, z. B.:

  • MAC Address: XX:XX:XX:XX:XX:XX
  • IP Address: 10.1.3.1
  • Hostname: PRN-EDV-3
  • Description: Drucker im Raum EDV 3

DHCP für LAN_LEHRER, LAN_MANAGEMENT und LAN_SERVER

Auch wenn in den Subnetzen LAN_MANAGEMENT und LAN_SERVER überwiegend manuell festgelegte IP-Adressen anzutreffen sind, empfiehlt sich auch für diese, den DHCP-Server zu aktivieren, sodass mit angeschlossenen Clients schnell und unkompliziert eine erste Kommunikation aufgebaut werden kann.

Beispiel-Konfigurationen für DHCPv4 und LAN_LEHRER, LAN_MANAGEMENT bzw. LAN_SERVER

Services/DHCPv4/LAN_LEHRER

  • Enable: Haken bei Enable DHCP server on the LAN_LEHRER interface
  • Range: From 10.1.27.1 To 10.1.31.254
  • NTP Servers: 10.1.16.1 (IP OPNsense

Services/DHCPv4/LAN_MANAGEMENT

  • Enable: Haken bei Enable DHCP server on the LAN_MANAGEMENTS interface
  • Range: From 10.1.254.200 To 10.1.254.254
  • NTP Servers: 10.1.254.1 (IP OPNsense)

Services/DHCPv4/LAN_SERVER

  • Enable: Haken bei Enable DHCP server on the LAN_SERVER interface
  • Range: From 10.1.100.200 To 10.1.100.254
  • NTP Servers: 10.1.100.1

Konfiguration der zur Verfügung stehenden Internetgeschwindigkeit

Durch den Shaper kann OPNsense im Sinne des Quality of Service (QoS) die zur Verfügung stehende Internetbandbreite bestmöglich ausnutzen. Folgender Ansatz zeigt eine Gleichverteilung der zur Verfügung stehenden Bandbreite unter allen Netzwerkteilnehmern.

Firewall / Shaper / Settings / Pipes (Leitungen)

  1. Pipe (für die Angabe der Upload-Geschwindigkeit)
    Haken bei enabled
    bandwidth: <hier die Uploadgeschwindigkeit Ihrer Internetleitung angeben>
    bandwith Metric: <hier die richtige Einheit für die oben angegebene Geschwindigkeit angeben>
    mask: <leer lassen>
    description: z. B.: Pipe-Upload
  2. Pipe (für die Angabe der Download-Geschwindigkeit)
    Haken bei enabledbandwidth: <hier die Downloadgeschwindigkeit Ihrer Internetleitung angeben>
    bandwith Metric: <hier die richtige Einheit für die oben angegebene Geschwindigkeit angeben>
    mask: <leer lassen>
    description: z. B.: Pipe-Download

Firewall / Shaper / Settings / Queues (Warteschlangen)

  1. Queue (für den Upload)
    Haken bei enabled
    pipe: <Upload-Pipe auswählen>
    weight: 100
    mask: source
    description: z. B.: Queue-Upload
  2. Queue (für den Download)
    Haken bei enabled
    pipe: <Download-Pipe auswählen>
    weight: 100
    mask: destination
    description: z. B.: Queue-Download

Firewall / Shaper / Settings / Rules (Regeln für die Bandbreitenverwendung)

  1. Rule (für den Upload)
    Haken bei enabled
    sequenze: <vergibt das System automatisch>
    interface: WAN
    proto: ip
    source: <hier das Schulnetzwerk mit Subnetzmaske angeben, z. B.: 10.1.0.0/20>
    src-port: any
    destination: any
    dst-port: any
    target: <Upload-Queue auswählen>
    description: z. B.: Rule-Upload
  2. Rule (für den Download)
    Haken bei enabled
    sequenze: <vergibt das System automatisch>
    interface: WAN
    proto: ip
    source: any
    src-port: any
    destination: <hier das Schulnetzwerk mit Subnetzmaske angeben, z. B.: 10.1.0.0/20>
    dst-port: any
    target: <Download-Queue auswählen>
    description: z. B.: Rule-Download

Für den Shaper sind zahlreiche andere Einstellungsmöglichkeiten denkbar - z. B. für die Priorisierung von Voice-Over-IP-Telefonaten o. ä.

Konfiguration des Proxy-Servers

Das Schulnetzkonzept geht davon aus, dass der Aufruf von Webseiten aus dem Netz LAN_SCHUELER nur über den zwischengeschalteten Proxy möglich ist. Nur dann können mithilfe des URL-Filters squidGuard (s. weiter unten) Webseitenaufrufe via Port 80 (http) bzw. Port 443 (https) effektiv gefiltert werden. Um das Handling mit dem Proxy für alle User so einfach wie möglich zu gestalten, wir dieser im transparenten Modus betrieben. Somit sind an den Clients keinerlei Einstellungen zu tätigen bzw. zu verteilen.

Damit auch verschlüsselte https-Anfragen datenschutzkonform - also ohne das Aufbrechen von Zertifikaten - über den transparenten Proxy abgewickelt werden können, verwendet das Schulnetzkonzept die Möglichkeit der Filterung über SNI (Server Name Indication): Bevor ein Browser eine verschlüsselte Verbindung zu einem Webserver aufbaut, sendet er diesem den gewünschten Host (FQDN) unverschlüsselt. Diese Information kann vom transparentem Proxy ausgelesen und für die Filterung genutzt werden.

Folgende Anpassungen an den Default-Einstellungen sind zu tätigen:

Services / Web Proxy / Administration

  • General Proxy Settings
    • Haken bei: Enable Proxy
    • Haken bei: Enable DNS v4 first
    • Enable access logging: Hier können Sie bei Bedarf den Zugriff auf den Proxy-Server mitloggen.
  • Local Cache Settings
    • Haken bei: Enable local cache
    • Cache size in Megabytes: 10240
    • Haken bei: Enable Windows Update Cache (speichert Windows-Updates aus dem Internet zwischen und stellt sie für weitere Windows-Clients im Netzwerk bereit. Dies verringert die Belastung der Internet-Leitung durch Windows-Updates erheblich, sofern Sie keinen eigenen WSUS-Server für Windows-Updates im Einsatz haben.)
  • General Forward Settings
    • Proxy Interfaces: LAN_SCHUELER
    • Proxy Port: 3128
    • Haken bei: Enable Transparent HTTP Proxy
    • Haken bei: Enable SSL inspection (beschränkt sich durch Setzen des nachfolgenden Hakens nur auf die SNI-Informationen)
    • Haken bei: Log SNI information only
    • SSL Proxy Port: 3129
    • CA to use: z. B.: schulnetz.intra-ca
      Sofern Sie noch keine Zertifizierungsstelle für Zertifikate (CA) angelegt haben, holen Sie dies mit folgenden Schritten nach:
      • System / Trust / Authorities → Add
        • Descriptive name: z. B. schulnetz.intra-ca
        • Method: Create an internal Certificate Authority
        • Entsprechende Angaben bei: Country Code, State, City, Organization und Email Address

http- und https-Anfragen an den Proxy weiterleiten

Weiterleitung von Web-Anfragen an den Proxy

Die beiden Haupt-Ports für Aufrufe von externen Internetseiten (RFC1918 invertiert!) werden an den Proxy weitergeleitet:

Firewall / NAT / Port Forward

1. Regel

  • Interface: LAN_SCHUELER
  • TCP/IP Version: IPv4
  • Protocol: TCP
  • Destination / Invert: Haken
  • Destination: RFC1918
  • Destination port range: from: HTTP to: HTTP
  • Redirect target IP: Single host or Network: 127.0.0.1
  • Redirect target Port: 3128
  • Description: Redirect internet-http-traffic to proxy

2. Regel

  • Interface: LAN_SCHUELER
  • TCP/IP Version: IPv4
  • Protocol: TCP
  • Destination / Invert: Haken
  • Destination: RFC1918
  • Destination port range: from: HTTPS to: HTTPS
  • Redirect target IP: Single host or Network: 127.0.0.1
  • Redirect target Port: 3129
  • Description: Redirect internet-https-traffic to proxy

Achten Sie darauf, dass die soeben erstellten Regeln unter Firewall / Rules / LAN_SCHUELER oberhalb der Regeln "Allow firewall" und "Allow not-private networks (internet)" erscheinen. Verschieben sie diese gegebenenfalls.

Konfiguration des Webfilters

Hauptziel des Einsatzes eines Proxys an Schulen ist die Verwendung in Kombination mit einem URL-Filter, welcher Schüler vor ungewünschten Inhalten im Netz schützen soll.

URL-Filter-Liste erzeugen und konfigurieren

Die "UT1-web-categorization-list der Université Toulouse ist eine frei verfügbare, regelmäßig aktualisierte und in Form von Kategorien organisierte Liste, welche zusammen mit dem OPNsense-Webfilter verwendet werden kann, um Webseitenaufrufe themenbasiert (z. B. Pornographie, Gewaltverherrlichung, soziale Netzwerke, ...) zu sperren. An dieser Stelle muss erwähnt werden, dass dies zwar sehr gut funktioniert, es eine 100%ige Absicherung gegenüber Webinhalten aber niemals geben kann.

Services / Web Proxy / Administration / Remote Access Control Lists → Hinzufügen einer Liste durch Klick auf das Plus-Symbol

  • Haken bei enabled
  • Filename: UT1
  • URL: ftp://ftp.ut-capitole.fr/pub/reseau/cache/squidguard_contrib/blacklists.tar.gz
  • Description: UT1

→ Save changes

→ Download ACLs

Das Herunterladen der Liste kann eine Weile dauern. Nach erfolgtem Download können Sie Ihre soeben angelegte Liste (shallalist) nochmals editieren und unter categories jene Themenfelder auswählen, welche vom Schulnetz aus gesperrt sein sollen.

Sperrempfehlungen (Sperrungen sollten in Absprache mit Schulleitung und Kollegium erfolgen):

  • anonvpn (Anonymisierungsdienste)
  • chat (Chatdienste)
  • dating (Datingwebsites)
  • dynamic (Zugriff auf DynDNS-Adressen; z. B. Heimnetz des Schülers)
  • gamble (Glücksspiel)
  • hacking (Hacking)
  • hobby_games-misc (Onlinespiele)
  • hobby_games-online (Onlinespiele)
  • porn (Pornografie)
  • sex_lingerie (Pornografie)
  • socialnet (Soziale Netzwerke)
  • spyware (Spyware)
  • violence (Gewalt)
  • warez (Hacking)

Blacklist automatisch aktualisieren

Beispiel: wöchentliche Aktualisierung der Shallalist am Montag um 00:00 Uhr

Services / Web Proxy / Administration / Remote Access Control List → Schedule with Cron

  • Haken bei enabled
  • Minutes: 0
  • Hours: 0
  • Day of month: *
  • Months: *
  • Days of week: 1
  • Command: Download and reload external proxy ACLs
  • Description: fetch proxy acls

Benutzerdefinierte Whitelists und Blacklists

Services / Web Proxy / Administration / Forward Proxy / Access Control List

  • Whitelist
    • Für Domains/URLs, die Sie nicht sperren möchten, aber durch die Shallalist geblockt sind
    • <mit Komma getrennte Angabe gewünschter Einträge>
  • Blacklist
    • Für Domains/URLs, die Sie sperren möchten, die aber nicht in der Shallalist enthalten sind
    • <mit Komma getrennte Angabe ungewünschter Einträge>

Damit Benutzer den URL-Filter nicht einfach dadurch umgehen können, dass sie statt der URL die korrespondierende IP einer Webseite in die Adresszeile des Browsers eingeben, kann die Eingabe von IP-Adressen als URL mit folgendem regulären Ausdruck gesperrt werden:

Services / Web Proxy / Administration / Forward Proxy / Access Control List

  • Blacklist: [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+

Vollqualifizierte Domänennamen für Schulnetzdienste

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)
    • www.nextcloud.ihre-schule.de (Viele User geben "www" als Subdomain vor dem Dienst ein. Deshalb sollte die Nextcloud auch via "www..." erreichbar sein.
    • collabora.ihre-schule.de (Online-Office für 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)
    • radius.ihre-schule.de (Zertifikat für den Radius-Server)

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:

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:

System / Firmware / Plugins / os-haproxy → Install

Anschließend muss der HAProxy aktiviert werden:

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:

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

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

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:

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)

Firewallregeln für LAN_LEHRER

Vom Netzwerk LAN_SCHUELER  aus werden die Anfragen zum HAProxy über den Webproxy (Squid) geleitet. Da im Netzwerk LAN_LEHRER kein Webproxy aktiv ist, sind zwei zusätzliche Regeln erforderlich:

Firewall/Rules/LAN_LEHRER → Add

  • Action: Pass
  • Interface: LAN_LEHRER
  • TCP/IP Version: IPv4+IPv6
  • Protocol: any
  • Source: LAN_LEHRER net
  • Destination: HAProxy_lan_wan
  • Description: Allow HAProxy_lan_wan

Firewall/Rules/LAN_LEHRER → Add

  • Action: Pass
  • Interface: LAN_LEHRER
  • TCP/IP Version: IPv4+IPv6
  • Protocol: any
  • Source: LAN_LEHRER net
  • Destination: HAProxy_lan
  • Description: HAProxy_lan

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:

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:

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

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

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

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:

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:

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:

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:

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:

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:

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:

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:

HAProxy / Settings / Virtual Services / Public Services / https_lan_wan → Edit

Select Rules: z. B.: nextcloud collabora

Wichtige Einstellungen für die Nextcloud

Sofern Sie den HAProxy zur Weiterleitung von Anfragen an eine Nextcloud verwenden, müssen Anfragen an die Caldav- und die Carddav-Dienste der Nextcloud noch berücksichtigt werden.

Einrichtung weiterer Conditions

Services / HAProxy / Settings / Rules & Checks / Conditions → Add

1. Condition:

  • Name: nextcloud-caldav
  • Condition type: Path starts with
  • Path Prefix: /.well-known/caldav

2. Condition:

  • Name: nextcloud-carddav
  • Condition type: Path starts with
  • Path Prefix: /.well-known/carddav

Einrichtung einer weiteren Rule

Services / HAProxy / Settings / Rules & Checks / Rules → Add

  • Name: nextcloud-caldav-carddav
  • Test type: if
  • Select conditions: nextcloud-caldav, nextcloud-carddav
  • Logical operator for conditions: OR
  • Execute function: http-request set-path
  • Set path: /remote.php/dav

Zuweisung der Rule zu Public Services

1. Public Service

HAProxy / Settings / Virtual Services / Public Services / http_lan_wan → Edit

Hinzufügen bei Select Rules: nextcloud-caldav-carddav

2. Public Service

HAProxy / Settings / Virtual Services / Public Services / https_lan_wan → Edit

Hinzufügen bei Select Rules: nextcloud-caldav-carddav

Wenn Sie Nextcloud Talk/Spreed verwenden wollen, müssen Sie die Server-Timeout-Einstellung des HAProxy etwas hochsetzen, um ein Timeout des Signaling-Servers zu umgehen.

Hochsetzen des Server-Timeouts

Services / HAProxy / Settings / Settings / Default Parameters

Server Timeout: 40s

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 /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 0755 /etc/samba/tls && chmod 0600 /etc/samba/tls/*.key && 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.

Besonderheit: Zertifikat für verschlüsselte Anfragen an den Radius-Server

Nachdem das Let's-Encrypt-Plugin das Zertifikat für radius.ihre-schule.de generiert bzw. erneuert hat, soll es die Zertifikatsdateien also auf den Radius-Server kopieren. Hierzu sind die nachfolgenden Schritte erforderlich:

SSH-Kommunikation zwischen Radius-Server und OPNsense vorbereiten

Siehe hierzu die Beschreibung zum Samba-Server.

Skript zum Kopieren der Zertifikate

Damit nach einer Erneuerung des Zertifikats von radius.ihre-schule.de durch das Let's-Encrypt-Plugin dieses auf dem Radius-Server landet, ist ein Skript erforderlich, welches die Dateien von OPNsense auf den Radius-Server kopiert, entsprechende Dateiberechtigungen setzt und den Radius-Server 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_radiusserver.conf
Datei /usr/local/opnsense/service/conf/actions.d/actions_radiusserver.conf
[radius-upload-certs]
command:scp -i /root/.ssh/id_rsa_samba /var/etc/acme-client/home/radius.ihre-schule.de/* root@10.1.100.7:/etc/freeradius/3.0/certs/radius.ihre-schule.de
parameters:
type:script
message:copy certificates to radius-server
description:RADIUS-Server - Copy Certificates

[radius-restart]
command:ssh -i /root/.ssh/id_rsa_samba root@10.1.100.7 "chmod -R 0755 /etc/freeradius/3.0/certs/radius.ihre-schule.de && chmod 0640 /etc/freeradius/3.0/certs/radius.ihre-schule.de/*.key && chown root:ssl-cert /etc/freeradius/3.0/certs/radius.ihre-schule.de/*.key && service freeradius restart"
parameters:
type:script
message:restarting radius-server
description:RADIUS-Server - Restart

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: Radius-Server - Copy Certificates
    • Run Command: System or Plugin Command
    • System Command: Radius-Server - Copy Certificates
  • 2. Automatisierungsaufgabe
    • Haken bei: enabled
    • Name: Radius-Server - Restart
    • Run Command: System or Plugin Command
    • System Command: Radius-Server - Restart

Anschließend werden die beiden Automatisierungsaufgaben dem Zertifikat radius.ihre-schule.de zugeordnet.

Services / Let's Encrypt / Certificates / radius.ihre-schule.de → edit

  • Automations (Achtung: Reihenfolge einhalten!)
    • 1. Aufgabe: Radius-Server - Copy Certificates
    • 2. Aufgabe: Radius-Server - Restart

Somit werden nach Erneuerung des Zertifikats für radius.ihre-schule.de automatisch die Zertifikatsdateien auf den Radius-Server kopiert und dieser anschließend 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.16.0/20,10.1.100.0/24,10.1.254.0/24 (für Administratoren alle 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

Letzte Aktualisierung der Seite: 2024-02-16 14:17