Letzte Anpassung zur Version: 12.7.1
- Neue Option als Peer: Lokaler Benutzer
Letzte Anpassung zur Version: 12.6.2
- Neue Funktion zum Absichern der genutzten Ports: Connection Rate Limit
- 12.2024
- Hinweis zur Systemzeit bei Keepalive ergänzt
notempty
Schlüsselmanagement
Beim Anlegen einer WireGuard-Verbindung existieren mehrere Möglichkeiten um die notwendigen Schlüsselwerte zu erzeugen und diese zu verwalten. Jede dieser Optionen hat ihre Vor- und Nachteile.
Bei zwei Optionen wird der benötigte private, bzw. öffentliche Schlüsselwert direkt im Einrichtungsassistenten der WireGuard-Verbindung angelegt.
Bei der dritten Option werden vorhandene Schlüssel vom Typ x25519 benötigt. Zusätzliche Informationen gibt es im Wiki-Artikel Schlüssel.
WireGuard Verbindung erstellen
- Eine WireGuard Verbindung stellt den Zugang für ggf. mehrere Peers zur Verfügung
- Jede Verbindung wird mit einem eigenen Schlüsselpaar gesichert
- Alle Peers einer Verbindung verwenden dessen öffentlichen Schlüssel
- Jeder Peer benötigt ein eigenes Schlüsselpaar, um sich zu authentifizieren
Zusätzlich sollte jeder Peer mit einem starken PSK abgesichert werden
Gegeben sei folgende Konfiguration:
Standort A | Standort B | Transfernetz | |
---|---|---|---|
FQDN | a.vpn.anyideas.de | b.vpn.anyideas.de | – |
Lokales Netz IPv4 | 10.1.0.0/16 | 10.2.0.0/16 | 10.0.1.0/24 |
Lokale Tunnel IPv4 | 10.0.1.1/24 | 10.0.1.2/24 | – |
Lokales Netz IPv6 | fd00:a:0:0::0/64 | fd00:b:0:0::0/64 | fd00:0:0:0::0/64 |
Lokale Tunnel IPv6 | fd00:0:0:0::1/64 | fd00:0:0:0::2/64 | – |
UTM | Roadwarrior | Transfernetz | |
---|---|---|---|
FQDN | a.vpn.anyideas.de | – | – |
Lokales Netz IPv4 | 10.1.0.0/16 | – | 10.0.1.0/24 |
Lokale Tunnel IPv4 | 10.0.1.1/24 | 10.0.1.201/24 | – |
Lokales Netz IPv6 | fd00:a:0:0::0/64 | – | fd00:0:0:0::0/64 |
Lokale Tunnel IPv6 | fd00:0:0:0::1/64 | fd00:0:0:0::C9/64 | – |
Konfiguration an Standort A
Assistenten starten mit der Schaltfläche Schritt 1 - Konfiguration importierenStandort A Schritt 1 - Konfiguration importieren
| |||
Beschriftung | Wert | Beschreibung | UTMbenutzer@firewall.name.fqdnVPNWireGuard |
---|---|---|---|
Datei: | Falls eine WireGuard-Server-Konfiguration schon existiert, kann die Server-Konfiguration als Datei hochgeladen werden. Die entsprechenden Einstellungen werden in den folgenden Schritten in den jeweiligen Elementen automatisch eingetragen. | ||
Konfiguration: | Falls eine WireGuard-Server-Konfiguration schon existiert, kann die Server-Konfiguration in dieses Konfigurationsfeld kopiert werden. Die entsprechenden Einstellungen werden in den folgenden Schritten in den jeweiligen Elementen automatisch eingetragen. [Interface] Address = 10.0.0.1/24 Address = C0FF::EEEE/64 ListenPort = 51824 PrivateKey = interfacePrivateKeyaaaaaaaaaaaaaaaaaaaaaaaa= [Peer] AllowedIPs = 10.0.0.2/32, 10.0.0.3/32 AllowedIPs = 10.0.0.4/32 Endpoint = 1.2.3.4:51825 PersistentKeepalive = 30 PresharedKey = peerPresharedKeyaaaaaaaaaaaaaaaaaaaaaaaaaaa= PublicKey = peerPublicKeyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa= | ||
Schritt 2 - SchnittstelleStandort A Schritt 2 - Schnittstelle
| |||
Schnittstelle: | wg0 | Name der Schnittstelle, die für die Verbindung angelegt wird (automatische Vorgabe, kann nicht geändert werden) | |
Name: | wg_server | Eindeutiger Name für die Verbindung | |
IPv4 Adresse: | IPv4 Adresse für die Netzwerkschnittstelle des Transfernetzes an Standort A Dadurch wird die Netz-IP des Transfernetzes bestimmt (hier: 10.0.1.1/24) | ||
IPv6 Adresse: | IPv6 Adresse für die Netzwerkschnittstelle des Transfernetzes an Standort A (optional) Dadurch wird die Netz-IP des Transfernetzes bestimmt (hier: fd00:0:0:0::1/64) | ||
Listening Port: | 51820 | Default-Port für WireGuard Verbindungen | |
Privater Schlüssel: | |||
Ein privater Schlüsselwert wird automatisch generiert. | |||
Der Schlüsselwert wird direkt eingegeben. notempty Der Schlüsselwert kann aus Sicherheitsgründen später nicht mehr ausgelesen werden. notempty Wurde in Schritt 1 - Konfiguration importieren eine Datei importiert oder die Konfiguration eingegeben, so wird diese Option automatisch ausgewählt und der private Schlüsselwert aus der Konfigurationsdatei ausgelesen und hier eingetragen.
| |||
Anzeigen Verbergen |
Zeigt / Verbirgt den Schlüsselwert | ||
Generieren | Der Schlüsselwert wird generiert | ||
Privater Schlüssel im Format x25519. Es sind nur solche Schlüssel auswählbar, die auch über einen privaten Schlüsselteil verfügen. | |||
Schlüssel hinzufügen | Liegt noch kein lokaler Schlüssel im x25519-Format vor, kann mit dieser Schaltfläche ein solcher erzeugt werden. | ||
Servernetzwerke global freigeben: | Netzwerke auf (lokaler) Serverseite, auf die die WireGuard-Tunnel der Peers prinzipiell zugreifen können.notempty Für den tatsächlichen Zugriff werden zusätzlich Netzwerkobjekte und Portfilter-Regeln benötigt!
| ||
Schritt 3 - PeerStandort A Schritt 3 - Peer
| |||
Peer-Typ: | Der Typ des Peers S2S-Verbindungen sollten immer mit dem Typ Peer eingerichtet werden Anleitung für Schritt 3 - Peer mit AD Anbindung
Anleitung für Schritt 3 - Peer mit lokalen Benutzern |
||
Name: | peer-b | Bezeichnung der Gegenstelle | |
Peernetzwerke freigeben: | »10.2.0.0/16»fd00:b:0:0::/64 | Lokale Netz-IPs der Gegenstelle, die auf den WireGuard-Tunnel zugreifen können. Für den tatsächlichen Zugriff werden zusätzlich Netzwerkobjekte und Portfilter-Regeln benötigt!
| |
Endpunkt: | b.vpn.anyideas.de | Öffentliche IP oder im öffentlichen DNS auflösbarer FQDN der Gegenstelle (Hier: Standort B) | |
Endpunkt Port: | 51820 | Listening-Port der Gegenstelle (Hier: Standort B) | |
Öffentlicher Schlüssel: | |||
Öffentlicher Schlüsselwert der Gegenstelle. notempty Wurde in Schritt 1 - Konfiguration importieren eine Datei importiert oder die Konfiguration eingegeben, so wird diese Option automatisch ausgewählt und der private Schlüsselwert aus der Konfigurationsdatei ausgelesen und hier eingetragen.
| |||
Berechnet den Schlüsselwert aus dem eingegebenen privaten Schlüsselwert aus Schritt 2 - Schnittstelle notempty Der Schlüsselwert kann aus Sicherheitsgründen später nicht mehr ausgelesen werden.
| |||
Anzeigen Verbergen |
Zeigt / Verbirgt den Schlüsselwert | ||
Generieren | Der Schlüsselwert wird generiert | ||
In die Zwischenablage kopieren | Kopiert den Schlüsselwert in die Zwischenablage | ||
Öffentlicher Schlüssel des Roadwarriors im Format x25519 Es sind nur solche Schlüssel auswählbar, die über keinen privaten Schlüssel verfügen. Es lassen sich nur Schlüssel auswählen, für die auf diesem Interface noch keine Verbindung besteht. Der PublicKey muss innerhalb einer Verbindung eindeutig sein, da das Routing eingehender Pakete darüber durchgeführt wird. Soll für einen Peer der gleiche PublicKey z.B. für ein Fallback verwendet werden, muss dafür eine weitere WireGuard Verbindung angelegt werden. | |||
Schlüssel hinzufügen | Liegt der öffentliche Schlüssel des Roadwarriors noch nicht vor, kann mit dieser Schaltfläche der Import der Schlüsselverwaltung geöffnet werden. Export und Import der Schlüssel ist auch über die Zwischenablage möglich Wir empfehlen, das Schlüsselpaar für den Roadwarrior auf der UTM zu erstellen und anschließend sicher zu verwahren. Vorgehen:
| ||
Pre-Shared Key (optional): | ••••••••••••••••••••••••••• | Pre-Shared Key zur weiteren Absicherung der Verbindung | |
Anzeigen Verbergen |
Zeigt / Verbirgt den Schlüsselwert | ||
Generieren | Erzeugt einen sehr starken Pre-Shared Key notempty Der Pre-Shared Key muss an beiden Enden der VPN-Verbindung identisch sein! Er darf nur auf einer Seite generiert werden und muss dann auf der Gegenstelle eingefügt werden.
| ||
In die Zwischenablage kopieren | Kopiert den PSK in die Zwischenablage | ||
Keepalive: | Aus | Sendet regelmäßig ein Signal. Dadurch werden Verbindungen auf NAT-Routern offen gehalten. Ein Die Aktivierung wird empfohlen. | |
25 Sekunden | Abstand in Sekunden, in dem ein Signal gesendet wird | ||
Standort A Schritt 3 - Peer
Neu ab v12.7.1
|
|||
Beschriftung | Wert | Beschreibung | |
---|---|---|---|
Peer-Typ: | Lokaler Benutzer als Peer | ||
Öffne Benutzerdialog: | Aus | Öffnet die Benutzereinstellungen nach beenden des Assistenten | |
Beendet den Assistenten | |||
Anschließend kann unter bearbeiten des gewünschten Users, WireGuard für diesen konfiguriert werden. Genauere Informationen sind hier zu finden. | Schaltfläche durch|||
Schritt 4 - Erweiterte EinstellungenStandort A Schritt 4 - Erweiterte Einstellungen
| |||
Routen zu den Netzwerken des Peers erstellen: | Ja | Aktivierung wird empfohlen. Es werden Routen zu den Netzwerken / Hosts erstellt, die in Schritt 3 unter Peernetzwerke freigeben eingetragen wurden, mit der Schnittstelle als Gateway, die in Schritt 2 angezeigt wurde. |
|
Ausgangslage Es kann gewünscht sein, die Routen für VPN-Verbindungen Nur für interne Prüfzwecke erst dann zu setzen, wenn die Verbindung wirklich steht.
CLI-Befehl Verbindung per SSH oder über Menü route set id <ID> flags BLACKHOLE_IF_OFFLINE :Z.B.: route set id "2" flags BLACKHOLE_IF_OFFLINE | |||
Zonen erstellen: | Ja | Erzeugt eine neue Zone für die WireGuard Schnittstelle | |
Zonenname: | wireguard-wg0 | Name für die Zone der WireGuard-Verbindung | |
Netzwerkobjekte für den Peer erstellen: | Ja »wg-net-peer_rw»wg-net6-peer_rw |
Erzeugt bei Aktivierung Ja Netzwerkobjekte (IPv4 und ggf. IPv6) für die Gegenstelle. Der automatische Vorschlag kann auch geändert werden. | |
Netzwerkgruppe: | wg0-network | Netzwerkgruppe der Verbindung wird angezeigt | |
Regeln zwischen dem Peer und internal-networks erstellen: | Nein | Erzeugt bei Aktivierung Ja autogenerierte Regeln, die die Inbetriebnahme erleichtern. notempty Diese Regeln müssen unbedingt durch eigene Regeln, die nur notwendige Dienste mit notwendigen Netzwerkobjekten erlauben, ersetzt werden. notemptyDiese eigenen Regeln müssen immer mit dem WireGuard-Interface und dem internen Netzwerk erstellt werden, auch wenn der WireGuard-Tunnel zu einem DMZ-Netzwerk führt.
| |
Beendet den Assistenten
| |||
Konfiguration RoadwarriorClient DownloadDownload des Clients unter https://www.wireguard.com/install Konfiguration des WireGuard ClientsWireGuard Client
| |||
Client öffnen und eine leeren Tunnel hinzufügen |
|||
Name: | wg-vpn-UTM_Netzwerk | Eindeutigen Namen vergeben. notempty Der Schlüsselname darf nicht den Namen einer (zukünftigen) Schnittstelle, wie wg0 oder wg1, besitzen.
| |
Öffentlicher Schlüssel: | sFWO… …LmDM= | ||
Konfigurationsfenster [Interface] | |||
PrivateKey = | uIp… …9E3XA= | Beim Anlegen eines leeren Tunnels wird automatisch ein PrivateKey vergeben Der PrivateKey kann auf der UTM im RAW-Format exportiert und anschließend hier eingetragen werden. | |
Address = | 10.0.1.201/32 | Tunnel-IP für den Roadwarrior | |
DNS = | 10.0.1.1, beispiel.local | Optional Server, über die der Client während einer bestehenden Verbindung Namen auflösen soll. Zusätzlich kann hier eine Search Domain eingetragen werden, damit Rechner anhand ihres Hostnamens ohne Angabe der FQDN gefunden werden können. Einträge werden durch ein Komma und Leerzeichen getrennt. | |
MTU = | 1420 | Optional Definiert die Größe eines Datenpaketes. Muss zwischen 1300 und 1500 sein. 1420 ist Default. | |
ListenPort = | 51820 | Optional Der Port auf dem Daten den Client erreichen. Wird ungesetzt vom Client dynamisch vergeben. Server- und Clientseitig kann derselbe Port verwendet werden (auch bei mehreren Clients). | |
[Peer] | |||
PublicKey = | beN9ikz… …Do= | PublicKey der UTM | |
PresharedKey = | 29… …/Wipaxs= | PresharedKey aus der UTM | |
AllowedIPs = | 10.1.0.0/16 | Lokale Netz-IPs hinter der UTM | |
Endpoint = | a.vpn.anyideas.de:51820 | IP/Hostname der UTM:Port der WG Instanz | |
persistentkeepalive = | 25 | Keepalive | |
Widget
Im Admininterface existiert ein Widget für die Übersicht der WireGuard-Verbindungen. Weitere Informationen sind im Wiki-Artikel UTM Widget zu finden.
Connection Rate Limit
Drosselung von Zugriffen von bestimmten Quell-IPs auf wiederkehrende Ports
notempty
Die Funktion ist zunächst ausschließlich über das CLI zu konfigurieren
SSL-VPN-Zugänge können so z.B. vor aggressiven Scans oder Anmeldeversuchen geschützt werden.
Die UTM kann ab v12.6.2 die Anzahl der TCP- und/oder UDP-Verbindungen von einer externen IP-Adresse auf einen Port limitieren.
Dabei gelten folgende Bedingungen:
- Es werde nur eingehende Verbindungen überwacht, für die eine Default-Route existiert
- Es werden die Verbindungen von einer IP-Adresse auf einen Port der UTM innerhalb einer Minute gezählt
- Bei Aktivierung werden 5 Verbindungen / Verbindungsversuche je Minute zugelassen.
Danach werden die Verbindungen limitiert:- Dabei werden die zusätzlich zugelassenen Verbindungen innerhalb von 60 Sekunden seit der ersten Verbindung gleichmäßig verteilt.
- Bei einem CONNECTION_RATE_LIMIT-Wert von 20 kommt also alle 3 Sekunden eine zusätzliche Verbindung hinzu.
- 10 Sekunden nach der 1 Anmeldung könnten 3 weitere Verbindungen aufgebaut werden (jeweils von der gleichen IP-Adresse aus auf den selben Ziel-Port)
- Die Sperrung einer IP-Adresse wirkt nur für den Zugriff auf den Port, der zu oft genutzt wurde.
Andere Ports können weiterhin erreicht werden. - Die Funktion ist bei Neuinstallationen per Default auf 20 UDP-Verbindungen / Minute auf allen Ports aktiviert
- Bei Updates muss die Funktion manuell aktiviert werden
extc-Variable | Default | Beschreibung |
---|---|---|
CONNECTION_RATE_LIMIT_TCP | 0 | Anzahl der zugelassenen TCP-Verbindungen einer IP-Adresse je Port 0 = Funktion deaktiviert, es werden keine Sperrungen vorgenommen |
CONNECTION_RATE_LIMIT_TCP_PORTS | Ports die überwacht werden sollen. Per Default leer=alle Ports würden (bei Aktivierung) überwacht werden. Einzelne Ports werden durch Leerzeichen getrennt: [ 1194 1195 ] | |
CONNECTION_RATE_LIMIT_UDP | 20 / 0 Default Einstellung bei Neuinstallationen ab v12.6.2: 20 Bei Update Installationen ist der Wert 0, damit ist die Funktion deaktiviert. |
Anzahl der zugelassenen UDP-Verbindungen einer IP-Adresse je Port |
CONNECTION_RATE_LIMIT_UDP_PORTS | Ports die überwacht werden sollen. Per Default leer=alle Ports werden überwacht (nur bei Neuinstallationen!). Einzelne Ports werden durch Leerzeichen getrennt: [ 1194 1195 ] |
Konfiguration mit CLI-Befehlen
CLI-Befehl | Funktion |
---|---|
extc value get application securepoint_firewall Alternativ als root-User: spcli extc value get application securepoint_firewall | grep RATE |
Listet alle Variablen der Anwendung securepoint_firewall auf. Für das Connection Limit sind die Variablen zuständig, die mit CONNECTION_RATE_LIMIT_ beginnen. application |variable |value --------------------+-------------------------------+----- securepoint_firewall |… |… |CONNECTION_RATE_LIMIT_TCP |0 |CONNECTION_RATE_LIMIT_TCP_PORTS| |CONNECTION_RATE_LIMIT_UDP |20 |CONNECTION_RATE_LIMIT_UDP_PORTS| |
extc value set application securepoint_firewall variable CONNECTION_RATE_LIMIT_TCP value 20 system update rule |
Begrenzt die zugelassene Anzahl von TCP-Verbindungen von einer einzelnen IP-Adresse auf jeweils einen bestimmten Port auf 20 pro Minute
Eine Änderung wird durch ein Regelupdate direkt durchgeführt. Der Wert muss nicht zuerst auf 0 gesetzt werden! |
extc value set application securepoint_firewall variable CONNECTION_RATE_LIMIT_TCP value 0 system update rule |
Deaktiviert die Überwachung von TCP-Verbindungen |
extc value set application securepoint_firewall variable CONNECTION_RATE_LIMIT_TCP_PORTS value [ 443 11115 ] system update rule |
Beschränkt die Überwachung von TCP-Verbindungen auf die Ports 443 und 11115 Vor und nach den eckigen Klammern [ ] müssen jeweils Leerzeichen stehen! |
extc value set application securepoint_firewall variable CONNECTION_RATE_LIMIT_TCP_PORTS value [ ] system update rule |
Vor und nach den eckigen Klammern [ ] müssen jeweils Leerzeichen stehen! |
extc value set application securepoint_firewall variable CONNECTION_RATE_LIMIT_UDP value 20 system update rule |
Begrenzt die zugelassene Anzahl von UDP-Verbindungen von einer einzelnen IP-Adresse auf jeweils einen bestimmten Port auf 20 pro Minute Default Einstellung bei Neuinstallationen ab v12.6.2: 20 Bei Update Installationen ist der Wert 0, damit ist die Funktion deaktiviert. Der Wert muss nicht zuerst auf 0 gesetzt werden! |
extc value set application securepoint_firewall variable CONNECTION_RATE_LIMIT_UDP value 0 system update rule |
Deaktiviert die Überwachung von UDP-Verbindungen |
extc value set application securepoint_firewall variable CONNECTION_RATE_LIMIT_UDP_PORTS value [ 1194 1195 ] system update rule |
Beschränkt die Überwachung von UDP-Verbindungen auf die Ports 1194 und 1195. (Beispielhaft für 2 angelegte SSL-VPN Tunnel.) Vor und nach den eckigen Klammern [ ] müssen jeweils Leerzeichen stehen! |
extc value set application securepoint_firewall variable CONNECTION_RATE_LIMIT_UDP_PORTS value [ ] system update rule |
Vor und nach den eckigen Klammern [ ] müssen jeweils Leerzeichen stehen! |
extc value set application securepoint_firewall variable CONNECTION_RATE_LIMIT_TCP value 20 notempty Zum Abschluss muss der CLI-Befehl system update rule eingegeben werden, damit die Werte in den Regeln angewendet werden.
|
Beispiel, um maximal 20 Verbindungen pro Minute je IP-Adresse und Port zuzulassen. Bei TCP wird die Überwachung auf die Ports 443 und 11115 beschränkt. Es werden alle Ports auf UDP-Verbindungen überwacht. |