Kategorie:OPNsense/Zertifikatsverwaltung

Aus Foxwiki
Version vom 7. Dezember 2022, 10:53 Uhr von Dirkwagner (Diskussion | Beiträge) (Dirkwagner verschob die Seite Opnsense:Zertifikatsverwaltung nach OPNsense:Zertifikatsverwaltung, ohne dabei eine Weiterleitung anzulegen: Textersetzung - „Opnsense“ durch „OPNsense“)

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

Diese Kategorie enthält zurzeit keine Seiten oder Medien.