Einführung
A virtual private network, or VPN, allows you to securely encrypt traffic as it travels through untrusted networks, such as those at the coffee shop, a conference, or an airport.
Internet Key Exchange Version 2, oder IKEv2, ist ein Protokoll, das direktes IPSec-Tunneling zwischen dem Server und dem Client ermöglicht. In IKEv2-VPN-Implementierungen bietet IPSec die Verschlüsselung für den Netzwerkverkehr. IKEv2 wird nativ auf einigen Plattformen unterstützt (OS X 10.11+, iOS 9.1+ und Windows 10) ohne zusätzliche Anwendungen erforderlich, und es behandelt Client-Aussetzer recht reibungslos.
In diesem Tutorial werden Sie einen IKEv2-VPN-Server mit StrongSwan auf einem Ubuntu 22.04-Server einrichten. Sie erfahren dann, wie Sie sich damit mit Windows-, macOS-, Ubuntu-, iOS- und Android-Clients verbinden können.
Voraussetzungen
Um dieses Tutorial abzuschließen, benötigen Sie:
- Einen Ubuntu 22.04-Server, der gemäß dem Leitfaden für die initiale Servereinrichtung von Ubuntu 22.04 konfiguriert ist, einschließlich eines
sudo
-Benutzers ohne Root-Rechte und einer Firewall.
Schritt 1 — Installation von StrongSwan
Zuerst installieren Sie StrongSwan, einen Open-Source-IPSec-Daemon, den Sie als Ihren VPN-Server konfigurieren werden. Sie werden auch die öffentliche Schlüsselinfrastruktur (PKI) installieren, damit Sie eine Zertifizierungsstelle (CA) erstellen können, um Anmeldeinformationen für Ihre Infrastruktur bereitzustellen.
Beginnen Sie mit dem Aktualisieren des lokalen Paketcaches:
Dann installieren Sie die Software, indem Sie Folgendes eingeben:
Das zusätzliche Paket libcharon-extauth-plugins
wird verwendet, um sicherzustellen, dass verschiedene Clients sich an Ihren Server mit einem gemeinsamen Benutzernamen und Passwort authentifizieren können. Das Paket libstrongswan-extra-plugins
ist enthalten, damit StrongSwan elliptische Kurvenchiffersuiten unterstützt, die das Kryptosystem Curve25519
verwenden.
Jetzt, da alles installiert ist, fahren Sie mit der Erstellung Ihrer Zertifikate fort.
Schritt 2 — Erstellung einer Zertifizierungsstelle
Ein IKEv2-Server benötigt ein Zertifikat, um sich gegenüber den Clients zu identifizieren. Um bei der Erstellung des erforderlichen Zertifikats zu helfen, wird das Paket strongswan-pki
mit einem Dienstprogramm namens pki
geliefert, um eine Zertifizierungsstelle und Serverzertifikate zu generieren.
Um zu beginnen, erstellen Sie ein paar Verzeichnisse, um alle Assets zu speichern, an denen Sie arbeiten werden. Die Verzeichnisstruktur entspricht einigen der Verzeichnisse in /etc/ipsec.d
, in die Sie schließlich alle Elemente verschieben werden, die Sie erstellen:
Dann sperren Sie die Berechtigungen, damit unsere privaten Dateien von anderen Benutzern nicht eingesehen werden können:
Jetzt, da Sie eine Verzeichnisstruktur haben, um alles zu speichern, können Sie einen Root-Schlüssel generieren. Dies wird ein 4096-Bit-RSA-Schlüssel sein, der verwendet wird, um Ihr Root-Zertifizierungsstellenzertifikat zu signieren.
Führen Sie diese Befehle aus, um den Schlüssel zu generieren:
Anschließend können Sie mit der Erstellung Ihrer Root-Zertifizierungsstelle fortfahren, wobei Sie den gerade generierten Schlüssel verwenden, um das Root-Zertifikat zu signieren:
Die --lifetime 3650
Flagge wird verwendet, um sicherzustellen, dass das Stammzertifikat der Zertifizierungsstelle 10 Jahre lang gültig ist. Das Stammzertifikat einer Autorität ändert sich normalerweise nicht, da es an jeden Server und Client verteilt werden müsste, der darauf angewiesen ist, daher ist eine Ablaufzeit von 10 Jahren ein sicherer Standardwert.
Sie können den distinguished name (DN) Wert auf etwas anderes ändern, wenn Sie möchten. Der gemeinsame Name (CN-Feld) hier ist nur ein Indikator, daher muss er nicht mit irgendetwas in Ihrer Infrastruktur übereinstimmen.
Jetzt, da Ihre Root-Zertifizierungsstelle läuft, können Sie ein Zertifikat erstellen, das der VPN-Server verwenden wird.
Schritt 3 — Generieren eines Zertifikats für den VPN-Server
Sie werden nun ein Zertifikat und einen Schlüssel für den VPN-Server erstellen. Dieses Zertifikat ermöglicht es dem Client, die Authentizität des Servers mithilfe des gerade generierten CA-Zertifikats zu überprüfen.
Zuerst erstellen Sie einen privaten Schlüssel für den VPN-Server mit dem folgenden Befehl:
Erstellen Sie nun das Zertifikat für den VPN-Server und signieren Sie es mit dem Schlüssel der Zertifizierungsstelle, den Sie im vorherigen Schritt erstellt haben. Führen Sie den folgenden Befehl aus, ändern Sie jedoch den Common Name (CN) und das Subject Alternate Name (SAN)-Feld auf den DNS-Namen oder die IP-Adresse Ihres VPN-Servers:
Hinweis: Wenn Sie anstelle eines DNS-Namens eine IP-Adresse verwenden, müssen Sie mehrere --san
-Einträge angeben. Die Zeile im vorherigen Befehlsblock, in der Sie den Distinguished Name (--dn ...
) angeben (
--dn "CN=IP-Adresse" --san @IP-Adresse --san IP-Adresse \
Der Grund für diesen zusätzlichen --san @IP-Adresse
-Eintrag ist, dass einige Clients überprüfen, ob das TLS-Zertifikat sowohl einen DNS-Eintrag als auch einen IP-Adresseneintrag für einen Server hat, wenn sie dessen Identität überprüfen.
Die Option --flag serverAuth
wird verwendet, um anzuzeigen, dass das Zertifikat explizit für die Serverauthentifizierung verwendet wird, bevor der verschlüsselte Tunnel aufgebaut wird. Die Option --flag ikeIntermediate
wird verwendet, um ältere macOS-Clients zu unterstützen.
Jetzt, da Sie alle von StrongSwan benötigten TLS/SSL-Dateien generiert haben, können Sie die Dateien an ihren Platz im Verzeichnis /etc/ipsec.d
verschieben, indem Sie Folgendes eingeben:
In diesem Schritt haben Sie ein Zertifikatspaar erstellt, das zur Sicherung der Kommunikation zwischen Client und Server verwendet wird. Sie haben die Zertifikate auch mit dem CA-Schlüssel signiert, sodass der Client die Authentizität des VPN-Servers mithilfe des CA-Zertifikats überprüfen kann. Mit all diesen Zertifikaten bereit können Sie mit der Konfiguration von StrongSwan fortfahren.
Schritt 4 — Konfigurieren von StrongSwan
StrongSwan hat eine Standardkonfigurationsdatei mit einigen Beispielen, aber wir müssen die meiste Konfiguration selbst durchführen. Erstellen Sie zunächst eine Sicherungskopie der Datei für Referenzzwecke, bevor Sie von Grund auf neu beginnen:
Erstellen und öffnen Sie eine neue leere Konfigurationsdatei mit Ihrem bevorzugten Texteditor. Hier verwenden Sie nano
:
Hinweis: Während Sie diesen Abschnitt durchgehen, um den Serverteil Ihres VPN zu konfigurieren, werden Sie auf Einstellungen stoßen, die sich auf die linke und rechte Seite einer Verbindung beziehen. Bei der Arbeit mit IPSec-VPNs bezieht sich die linke Seite konventionell auf das lokale System, das Sie konfigurieren, in diesem Fall der Server. Die Direktiven für die rechte Seite in diesen Einstellungen beziehen sich auf entfernte Clients, wie Telefone und andere Computer.
Wenn Sie später in diesem Tutorial damit beginnen, Clients zu konfigurieren, werden sich die Client-Konfigurationsdateien selbst mit verschiedenen linken Direktiven bezeichnen, und der Server wird mit rechter Seiten-Terminologie bezeichnet.
Zuerst sagen wir StrongSwan, Statusmeldungen des Dienstes für die Fehlerbehebung zu protokollieren und doppelte Verbindungen zuzulassen. Fügen Sie diese Zeilen zur Datei hinzu:
config setup
charondebug="ike 1, knl 1, cfg 0"
uniqueids=no
Dann werden wir einen Konfigurationsabschnitt für unser VPN erstellen. Außerdem sagen wir StrongSwan, IKEv2-VPN-Tunnel zu erstellen und diesen Konfigurationsabschnitt automatisch zu laden, wenn es startet. Hängen Sie die folgenden Zeilen an die Datei an:
. . .
conn ikev2-vpn
auto=add
compress=no
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
Wir werden auch die Dead-Peer-Erkennung konfigurieren, um „hängende“ Verbindungen zu bereinigen, falls der Client unerwartet getrennt wird. Fügen Sie diese Zeilen hinzu:
. . .
conn ikev2-vpn
. . .
dpdaction=clear
dpddelay=300s
rekey=no
Dann werden wir die IPSec-Parameter auf der „linken“ Seite des Servers konfigurieren. Jeder der folgenden Parameter stellt sicher, dass der Server so konfiguriert ist, dass er Verbindungen von Clients akzeptiert und sich korrekt identifiziert. Sie fügen jede dieser Einstellungen zur Datei /etc/ipsec.conf
hinzu, sobald Sie wissen, was sie sind und warum sie verwendet werden:
left=%any
Der Wert%any
stellt sicher, dass der Server das Netzwerkinterface verwendet, über das er eingehende Verbindungen empfängt, für die anschließende Kommunikation mit den Clients. Wenn Sie beispielsweise einen Client über ein privates Netzwerk verbinden, verwendet der Server die private IP-Adresse, über die er den Datenverkehr für den Rest der Verbindung empfängt.leftid=@server_domain_or_IP
Diese Option steuert den Namen, den der Server den Clients präsentiert. In Kombination mit der nächsten Optionleftcert
stellt die Optionleftid
sicher, dass der konfigurierte Name des Servers und der Distinguished Name (DN), der im öffentlichen Zertifikat enthalten ist, übereinstimmen.leftcert=server-cert.pem
Diese Option ist der Pfad zum öffentlichen Zertifikat für den Server, das Sie in Schritt 3 konfiguriert haben. Ohne dies kann sich der Server nicht bei den Clients authentifizieren oder die IKEv2-Einrichtung abschließen.leftsendcert=always
Der Wertalways
stellt sicher, dass jeder Client, der sich mit dem Server verbindet, immer eine Kopie des öffentlichen Zertifikats des Servers als Teil des initialen Verbindungsaufbaus erhält.leftsubnet=0.0.0.0/0
Die letzte „left“-Seitenoption, die Sie hinzufügen, informiert die Clients über die Subnetze, die hinter dem Server erreichbar sind. In diesem Fall wird0.0.0.0/0
verwendet, um die gesamte Menge an IPv4-Adressen darzustellen, was bedeutet, dass der Server den Clients standardmäßig sagt, ihren gesamten Datenverkehr über das VPN zu senden.
Jetzt, da Sie mit allen relevanten „left“-Seitenoptionen vertraut sind, fügen Sie sie alle wie folgt in die Datei ein:
. . .
conn ikev2-vpn
. . .
left=%any
leftid=@server_domain_or_IP
leftcert=server-cert.pem
leftsendcert=always
leftsubnet=0.0.0.0/0
Hinweis: Beim Konfigurieren der Server-ID (leftid
) den @
-Zeichen nur angeben, wenn Ihr VPN-Server durch einen Domainnamen identifiziert wird:
. . . leftid=@vpn.example.com
. . .
Wenn der Server durch seine IP-Adresse identifiziert wird, geben Sie einfach die IP-Adresse ein:
. . .
leftid=your_server_ip
. . .
Als Nächstes können wir die IPSec-Parameter auf der „rechten“ Seite des Clients konfigurieren. Jeder der folgenden Parameter gibt an, wie der Server Verbindungen von Clients akzeptieren soll, wie sich Clients beim Server authentifizieren sollen und welche privaten IP-Adressbereiche und DNS-Server von den Clients verwendet werden. Fügen Sie jede dieser Einstellungen der Datei /etc/ipsec.conf
hinzu, sobald Sie wissen, was sie bedeuten und warum sie verwendet werden:
right=%any
Die Option%any
für dieright
-Seite der Verbindung weist den Server an, eingehende Verbindungen von beliebigen entfernten Clients zu akzeptieren.rightid=%any
Diese Option stellt sicher, dass der Server Verbindungen von Clients nicht ablehnt, die eine Identität angeben, bevor der verschlüsselte Tunnel hergestellt ist.rightauth=eap-mschapv2
Diese Option konfiguriert die Authentifizierungsmethode, die von Clients verwendet wird, um sich beim Server zu authentifizieren.eap-mschapv2
wird hier für eine breite Kompatibilität verwendet, um Clients wie Windows-, macOS- und Android-Geräte zu unterstützen.rightsourceip=10.10.10.0/24
Diese Option weist den Server an, privaten IP-Adressen für Clients aus dem angegebenen IP-Adresspool10.10.10.0/24
zuzuweisen.rightdns=8.8.8.8,8.8.4.4
Diese IP-Adressen sind die öffentlichen DNS-Resolver von Google. Sie können geändert werden, um andere öffentliche Resolver, die Resolver des VPN-Servers oder jeden anderen Resolver zu verwenden, den die Clients erreichen können.rightsendcert=never
Diese Option weist den Server an, dass die Clients keinen Zertifikat senden müssen, um sich zu authentifizieren.
Jetzt, da Sie mit den erforderlichen „right“ -Optionen für das VPN vertraut sind, fügen Sie die folgenden Zeilen zu /etc/ipsec.conf
hinzu:
. . .
conn ikev2-vpn
. . .
right=%any
rightid=%any
rightauth=eap-mschapv2
rightsourceip=10.10.10.0/24
rightdns=8.8.8.8,8.8.4.4
rightsendcert=never
Jetzt werden wir StrongSwan auffordern, den Client bei der Verbindung nach Benutzeranmeldeinformationen zu fragen:
. . .
conn ikev2-vpn
. . .
eap_identity=%identity
Zum Schluss fügen Sie die folgenden Zeilen hinzu, um Linux-, Windows-, macOS-, iOS- und Android-Clients zu unterstützen. Diese Zeilen geben die verschiedenen Schlüsselaustausch-, Hashing-, Authentifizierungs- und Verschlüsselungsalgorithmen (im Volksmund als Verschlüsselungssuites bezeichnet) an, die StrongSwan verschiedenen Clients erlauben wird, zu verwenden:
. . .
conn ikev2-vpn
. . .
ike=chacha20poly1305-sha512-curve25519-prfsha512,aes256gcm16-sha384-prfsha384-ecp384,aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024!
esp=chacha20poly1305-sha512,aes256gcm16-ecp384,aes256-sha256,aes256-sha1,3des-sha1!
Jede unterstützte Verschlüsselungssuite wird von den anderen durch ein Komma abgegrenzt. Zum Beispiel ist chacha20poly1305-sha512-curve25519-prfsha512
eine Suite und aes256gcm16-sha384-prfsha384-ecp384
eine andere. Die hier aufgeführten Verschlüsselungssuites sind ausgewählt, um die größtmögliche Kompatibilität mit Windows-, macOS-, iOS-, Android- und Linux-Clients sicherzustellen.
Die vollständige Konfigurationsdatei sollte so aussehen:
config setup
charondebug="ike 1, knl 1, cfg 0"
uniqueids=no
conn ikev2-vpn
auto=add
compress=no
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
dpdaction=clear
dpddelay=300s
rekey=no
left=%any
leftid=@server_domain_or_IP
leftcert=server-cert.pem
leftsendcert=always
leftsubnet=0.0.0.0/0
right=%any
rightid=%any
rightauth=eap-mschapv2
rightsourceip=10.10.10.0/24
rightdns=8.8.8.8,8.8.4.4
rightsendcert=never
eap_identity=%identity
ike=chacha20poly1305-sha512-curve25519-prfsha512,aes256gcm16-sha384-prfsha384-ecp384,aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024!
esp=chacha20poly1305-sha512,aes256gcm16-ecp384,aes256-sha256,aes256-sha1,3des-sha1!
Speichern und schließen Sie die Datei, sobald Sie überprüft haben, dass Sie jede Zeile korrekt hinzugefügt haben. Wenn Sie nano
verwendet haben, tun Sie dies, indem Sie CTRL + X
, Y
und dann ENTER
drücken.
Jetzt, da Sie die VPN-Parameter konfiguriert haben, können Sie damit fortfahren, ein Konto zu erstellen, damit Benutzer eine Verbindung zum Server herstellen können.
Schritt 5 — Konfiguration der VPN-Authentifizierung
Ihr VPN-Server ist jetzt so konfiguriert, dass er Clientverbindungen akzeptiert, aber es sind noch keine Anmeldeinformationen konfiguriert. Sie müssen ein paar Dinge in einer speziellen Konfigurationsdatei namens ipsec.secrets
konfigurieren:
- Sie müssen StrongSwan mitteilen, wo der private Schlüssel für unser Serverzertifikat zu finden ist, damit der Server sich bei den Clients authentifizieren kann.
- Sie müssen auch eine Liste von Benutzern einrichten, die sich mit dem VPN verbinden dürfen.
Öffnen wir die Geheimnisse-Datei zum Bearbeiten:
Zuerst geben Sie StrongSwan an, wo der private Schlüssel zu finden ist und wie er geparst werden soll.
: RSA "server-key.pem"
Stellen Sie sicher, dass die Zeile mit dem Zeichen :
beginnt und dass ein Leerzeichen danach steht, damit die gesamte Zeile : RSA "server-key.pem"
lautet.
Dann definieren Sie die Benutzeranmeldeinformationen. Sie können eine beliebige Benutzername- oder Passwortkombination verwenden, die Ihnen gefällt:
your_username : EAP "your_password"
Speichern und schließen Sie die Datei. Jetzt, da Sie mit den VPN-Parametern fertig sind, starten Sie den VPN-Dienst neu, damit unsere Konfiguration angewendet wird:
Nun, da der VPN-Server vollständig mit beiden Serveroptionen und Benutzeranmeldeinformationen konfiguriert wurde, ist es an der Zeit, zum wichtigsten Teil überzugehen: der Firewall-Konfiguration.
Schritt 6 — Konfiguration der Firewall & Kernel-IP-Weiterleitung
Mit der StrongSwan-Konfiguration abgeschlossen, müssen Sie die Firewall konfigurieren, um den VPN-Verkehr durchzulassen und weiterzuleiten.
Wenn Sie dem vorherigen Tutorial zur Einrichtung des Servers gefolgt sind, sollte eine UFW-Firewall aktiviert sein. Wenn Sie UFW noch nicht konfiguriert haben, sollten Sie damit beginnen, eine Regel hinzuzufügen, um SSH-Verbindungen durch die Firewall zuzulassen, damit Ihre aktuelle Sitzung nicht geschlossen wird, wenn Sie UFW aktivieren:
Aktivieren Sie dann die Firewall, indem Sie Folgendes eingeben:
Dann fügen Sie eine Regel hinzu, um UDP-Verkehr zu den Standard-IPSec-Ports 500
und 4500
zuzulassen:
Anschließend öffnen Sie eine der Konfigurationsdateien von UFW, um ein paar Richtlinien auf niedriger Ebene für die Weiterleitung und den Routing von IPSec-Paketen hinzuzufügen. Bevor Sie dies jedoch tun, müssen Sie herausfinden, welches Netzwerkinterface auf unserem Server für den Internetzugriff verwendet wird. Ermitteln Sie dieses Interface, indem Sie nach dem Gerät suchen, das mit der Standardroute verknüpft ist:
Ihr öffentliches Interface sollte dem Wort „dev“ folgen. Zum Beispiel zeigt dieses Ergebnis das Interface mit dem Namen eth0
, das im folgenden Beispiel hervorgehoben ist:
Outputdefault via your_server_ip dev eth0 proto static
Wenn Sie Ihre öffentliche Netzwerkschnittstelle haben, öffnen Sie die Datei /etc/ufw/before.rules
in Ihrem Texteditor. Die Regeln in dieser Datei werden der Firewall vor dem Rest der üblichen Ein- und Ausgangsregeln hinzugefügt. Sie werden verwendet, um die Netzwerkadressübersetzung (NAT) zu konfigurieren, damit der Server Verbindungen zu und von Clients und dem Internet richtig weiterleiten kann.
In der Nähe des Anfangs der Datei (vor der Zeile *filter
) fügen Sie den folgenden Konfigurationsblock hinzu. Ändern Sie jede Instanz von eth0
in der obigen Konfiguration so, dass sie mit dem Schnittstellennamen übereinstimmt, den Sie mit ip route
gefunden haben. Die *nat
-Zeilen erstellen Regeln, damit die Firewall den Verkehr zwischen den VPN-Clients und dem Internet richtig weiterleiten und manipulieren kann. Die *mangle
-Zeile passt die maximale Paketsegmentgröße an, um potenzielle Probleme mit bestimmten VPN-Clients zu verhindern:
*nat
-A POSTROUTING -s 10.10.10.0/24 -o eth0 -m policy --pol ipsec --dir out -j ACCEPT
-A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE
COMMIT
*mangle
-A FORWARD --match policy --pol ipsec --dir in -s 10.10.10.0/24 -o eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360
COMMIT
*filter
:ufw-before-input - [0:0]
:ufw-before-output - [0:0]
:ufw-before-forward - [0:0]
:ufw-not-local - [0:0]
. . .
Anschließend fügen Sie nach den Zeilen *filter
und der Kettendefinition einen weiteren Konfigurationsblock hinzu:
. . .
*filter
:ufw-before-input - [0:0]
:ufw-before-output - [0:0]
:ufw-before-forward - [0:0]
:ufw-not-local - [0:0]
-A ufw-before-forward --match policy --pol ipsec --dir in --proto esp -s 10.10.10.0/24 -j ACCEPT
-A ufw-before-forward --match policy --pol ipsec --dir out --proto esp -d 10.10.10.0/24 -j ACCEPT
Diese Zeilen teilen der Firewall mit, ESP (Encapsulating Security Payload)-Verkehr weiterzuleiten, damit die VPN-Clients eine Verbindung herstellen können. ESP bietet zusätzliche Sicherheit für unsere VPN-Pakete, wenn sie unvertrauenswürdige Netzwerke durchqueren.
Wenn Sie fertig sind, speichern und schließen Sie die Datei, nachdem Sie überprüft haben, dass Sie jede Zeile korrekt hinzugefügt haben. Wenn Sie nano
verwendet haben, tun Sie dies, indem Sie CTRL + X
, Y
und dann ENTER
drücken.
Vor dem Neustart der Firewall müssen Sie auch einige Netzwerkkernelparameter ändern, um das Routing von einer Schnittstelle zur anderen zu ermöglichen. Die Datei, die diese Einstellungen steuert, heißt /etc/ufw/sysctl.conf
. Sie müssen ein paar Dinge in der Datei konfigurieren.
Zuerst muss das IPv4-Paketweiterleiten aktiviert werden, damit der Datenverkehr zwischen den VPN- und den öffentlich zugänglichen Netzwerkschnittstellen auf dem Server erfolgen kann. Als nächstes deaktivieren Sie die Path MTU-Erkennung, um Probleme mit der Paketfragmentierung zu verhindern. Schließlich werden wir keine ICMP-Weiterleitungen akzeptieren oder ICMP-Weiterleitungen senden, um Angriffe durch Man-in-the-Middle zu verhindern.
Öffnen Sie die Kernelparameterkonfigurationsdatei von UFW mit nano
oder Ihrem bevorzugten Texteditor:
Fügen Sie nun die folgende Einstellung net/ipv4/ip_forward=1
am Ende der Datei hinzu, um das Weiterleiten von Paketen zwischen den Schnittstellen zu aktivieren:
. . .
net/ipv4/ip_forward=1
Blockieren Sie als nächstes das Senden und Empfangen von ICMP-Weiterleitungsdatenpaketen, indem Sie die folgenden Zeilen am Ende der Datei hinzufügen:
. . .
net/ipv4/conf/all/accept_redirects=0
net/ipv4/conf/all/send_redirects=0
Schließlich deaktivieren Sie die Path MTU-Erkennung, indem Sie diese Zeile am Ende der Datei hinzufügen:
. . .
net/ipv4/ip_no_pmtu_disc=1
Speichern Sie die Datei, wenn Sie fertig sind. Jetzt können Sie alle Ihre Änderungen aktivieren, indem Sie die Firewall deaktivieren und wieder aktivieren, da UFW diese Einstellungen jedes Mal anwendet, wenn sie neu gestartet wird:
Sie werden aufgefordert, den Vorgang zu bestätigen. Geben Sie Y
ein, um UFW wieder mit den neuen Einstellungen zu aktivieren.
Schritt 7 — Testen der VPN-Verbindung unter Windows, macOS, Ubuntu, iOS und Android
Jetzt, da alles eingerichtet ist, ist es an der Zeit, es auszuprobieren. Zuerst müssen Sie das CA-Zertifikat, das Sie erstellt haben, kopieren und auf Ihrem Client-Gerät installieren, das sich mit dem VPN verbinden wird. Der einfachste Weg, dies zu tun, besteht darin, sich auf Ihren Server einzuloggen und die Inhalte der Zertifikatsdatei auszugeben:
Sie werden eine Ausgabe ähnlich dieser sehen:
Output-----BEGIN CERTIFICATE-----
MIIFNDCCAxygAwIBAgIIHCsidG5mXzgwDQYJKoZIhvcNAQEMBQAwODELMAkGA1UE
. . .
H2YUdz8XNHrJHvMQKWFpi0rlEcMs+MSXPFWE3Q7UbaZJ/h8wpSldSUbQRUlphExJ
dJ4PX+MUJO/vjG1/ie6Kh25xbBAc3qNq8siiJZDwrg6vjEK7eiZ1rA==
-----END CERTIFICATE-----
Kopieren Sie diese Ausgabe auf Ihren Computer, einschließlich der -----BEGIN CERTIFICATE-----
und -----END CERTIFICATE-----
Zeilen, und speichern Sie sie in einer Datei mit einem erkennbaren Namen, wie z. B. ca-cert.pem
. Stellen Sie sicher, dass die von Ihnen erstellte Datei die Erweiterung .pem
hat.
Alternativ verwenden Sie SFTP, um die Datei auf Ihren Computer zu übertragen.
Sobald Sie die Datei ca-cert.pem
auf Ihren Computer heruntergeladen haben, können Sie die Verbindung zum VPN einrichten.
Verbinden von Windows
Es gibt mehrere Möglichkeiten, das Stammzertifikat zu importieren und Windows so zu konfigurieren, dass eine VPN-Verbindung hergestellt werden kann. Der erste Ansatz verwendet grafische Werkzeuge für jeden Schritt. Der zweite Ansatz verwendet PowerShell-Befehle, die skriptfähig und angepasst werden können, um Ihre VPN-Konfiguration zu erfüllen.
Hinweis: Diese Anweisungen wurden auf Windows 10-Installationen getestet, die die Versionen 1903 und 1909 ausführen.
Konfigurieren von Windows mit grafischen Werkzeugen
Importieren Sie zunächst das Stammzertifikat, indem Sie diese Schritte befolgen:
-
Drücken Sie
WINDOWS+R
, um das Ausführen Dialogfeld aufzurufen, und geben Siemmc.exe
ein, um die Windows Management Console zu starten. -
Wählen Sie im Datei Menü Snap-in hinzufügen oder entfernen, wählen Sie Zertifikate aus der Liste der verfügbaren Snap-ins und klicken Sie auf Hinzufügen.
-
Wir möchten, dass die VPN mit jedem Benutzer funktioniert, wählen Sie daher Computerkonto und klicken Sie auf Weiter.
-
Wir konfigurieren Dinge auf dem lokalen Computer, wählen Sie daher Lokaler Computer und klicken Sie dann auf Fertig stellen.
-
Unter dem Konsolenstamm Knoten erweitern Sie den Zertifikate (Lokaler Computer) Eintrag, erweitern Vertrauenswürdige Stammzertifizierungsstellen und wählen dann den Zertifikate Eintrag:
-
Wählen Sie aus dem Aktion Menü Alle Aufgaben und klicken Sie auf Importieren, um das Zertifikat-Import-Assistenten anzuzeigen. Klicken Sie auf Weiter, um das Intro hinter sich zu lassen.
-
Auf dem Datei zum Importieren Bildschirm drücken Sie die Durchsuchen Taste, stellen Sie sicher, dass Sie den Dateityp von „X.509-Zertifikat (.cer;.crt)“ in „Alle Dateien (.)“ ändern und die gespeicherte
ca-cert.pem
Datei auswählen. Klicken Sie dann auf Weiter. -
Stellen Sie sicher, dass das Zertifikatspeicher auf Vertrauenswürdige Zertifizierungsstellen eingestellt ist, und klicken Sie auf Weiter.
-
Klicken Sie auf Fertig stellen, um das Zertifikat zu importieren.
Konfigurieren Sie anschließend die VPN mit diesen Schritten:
- Starten Sie die Systemsteuerung und navigieren Sie zum Netzwerk- und Freigabecenter.
- Klicken Sie auf Eine neue Verbindung oder ein neues Netzwerk einrichten und wählen Sie Arbeitsplatz verbinden.
- Wählen Sie Verwenden Sie mein Internet (VPN).
- Geben Sie die VPN-Serverdetails ein. Geben Sie den Domänenamen oder die IP-Adresse des Servers im Feld Internetadresse ein und füllen Sie dann Zielland mit etwas aus, das Ihre VPN-Verbindung beschreibt. Klicken Sie dann auf Fertig.
Konfigurieren von Windows mit PowerShell
Um das Stammzertifikat mit PowerShell zu importieren, öffnen Sie zunächst einen PowerShell-Prompt mit Administratorrechten. Klicken Sie dazu mit der rechten Maustaste auf das Startmenüsymbol und wählen Sie Windows PowerShell (Admin)
. Sie können auch eine Eingabeaufforderung als Administrator öffnen und powershell
eingeben.
Als nächstes importieren wir das Zertifikat mit dem PowerShell-Cmdlet Import-Certificate
. In dem folgenden Befehl stellt das erste Argument -CertStoreLocation
sicher, dass das Zertifikat in den Vertrauenswürdigen Stammzertifizierungsstellen des Computers importiert wird, damit alle Programme und Benutzer das Zertifikat des VPN-Servers überprüfen können. Das Argument -FilePath
sollte auf den Speicherort zeigen, an den Sie das Zertifikat kopiert haben. Im folgenden Beispiel ist der Pfad C:\Users\sammy\Documents\ca-cert.pem
. Stellen Sie sicher, dass Sie den Befehl an die von Ihnen verwendete Speicherort anpassen.
Der Befehl gibt etwas wie folgendes aus:
Output PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\Root
Thumbprint Subject
---------- -------
DB00813B4087E9367861E8463A60CEA0ADC5F002 CN=VPN root CA
Um nun die VPN mit PowerShell zu konfigurieren, führen Sie den folgenden Befehl aus. Ersetzen Sie den DNS-Namen oder die IP-Adresse Ihres Servers in der -ServerAddress
-Zeile. Die verschiedenen Flags stellen sicher, dass Windows mit den richtigen Sicherheitsparametern korrekt konfiguriert ist, die den von Ihnen in /etc/ipsec.conf
festgelegten Optionen entsprechen.
Wenn der Befehl erfolgreich ist, gibt es keine Ausgabe. Um zu bestätigen, dass die VPN-Einstellungen korrekt konfiguriert sind, verwenden Sie den Get-VPNConnection
Cmdlet:
Sie erhalten Ausgabe wie folgt:
OutputName : VPN Connection
ServerAddress : your_server_ip
AllUserConnection : False
Guid : {B055A1AB-175C-4028-B4A8-D34309A2B20E}
TunnelType : Ikev2
AuthenticationMethod : {Eap}
EncryptionLevel : Maximum
L2tpIPsecAuth :
UseWinlogonCredential : False
EapConfigXmlStream : #document
ConnectionStatus : Disconnected
RememberCredential : True
SplitTunneling : False
DnsSuffix :
IdleDisconnectSeconds : 0
Standardmäßig wählt Windows ältere und langsamere Algorithmen aus. Führen Sie den Set-VpnConnectionIPsecConfiguration
Cmdlet aus, um die Verschlüsselungsparameter zu aktualisieren, die Windows für den IKEv2-Schlüsselaustausch und zum Verschlüsseln von Paketen verwendet:
Hinweis: Wenn Sie die VPN-Verbindung löschen und mit anderen Optionen neu konfigurieren möchten, können Sie den Remove-VpnConnection
Cmdlet ausführen.
Der -Force
Flag überspringt das Aufforderung, Sie zur Bestätigung des Entfernens zu bitten. Sie müssen von der VPN getrennt sein, wenn Sie versuchen, es mit diesem Befehl zu entfernen.
Anschließen an die VPN
Sobald Sie das Zertifikat importiert und die VPN-Einstellungen mit einer der Methoden konfiguriert haben, wird Ihre neue VPN-Verbindung in der Liste der Netzwerke sichtbar sein. Wählen Sie die VPN und klicken Sie auf Verbinden. Sie werden aufgefordert, Ihren Benutzernamen und Ihr Passwort einzugeben. Geben Sie sie ein, klicken Sie auf OK, und Sie sind verbunden.
Verbinden von macOS
Führen Sie die folgenden Schritte aus, um das Zertifikat zu importieren:
- Doppelklicken Sie auf die Zertifikatdatei. Schlüsselbundzugriff wird mit einem Dialogfeld angezeigt, das besagt: „Schlüsselbundzugriff versucht, den Systemschlüsselbund zu ändern. Geben Sie Ihr Passwort ein, um dies zu erlauben.“
- Geben Sie Ihr Passwort ein und klicken Sie dann auf Modify Keychain
- Doppelklicken Sie auf das neu importierte VPN-Zertifikat. Dadurch wird ein kleines Eigenschaftenfenster geöffnet, in dem Sie die Vertrauensebenen festlegen können. Setzen Sie IP Security (IPSec) auf Always Trust und Sie werden erneut zur Eingabe Ihres Passworts aufgefordert. Diese Einstellung wird automatisch gespeichert, nachdem das Passwort eingegeben wurde.
Nun, da das Zertifikat importiert und vertrauenswürdig ist, konfigurieren Sie die VPN-Verbindung mit diesen Schritten:
- Gehen Sie zu Systemeinstellungen und wählen Sie Netzwerk.
- Klicken Sie auf die kleine „plus“-Schaltfläche unten links in der Liste der Netzwerke.
- In dem sich öffnenden Popup setzen Sie Schnittstelle auf VPN, setzen das VPN-Typ auf IKEv2 und geben der Verbindung einen Namen.
- Geben Sie im Server– und Remote ID-Feld den Domänennamen oder die IP-Adresse des Servers ein. Lassen Sie das Lokale ID-Feld leer.
- Klicken Sie auf Authentifizierungseinstellungen, wählen Sie Benutzername und geben Sie Ihren Benutzernamen und das Passwort ein, das Sie für Ihren VPN-Benutzer konfiguriert haben. Klicken Sie dann auf OK.
Klicken Sie schließlich auf Verbinden, um sich mit dem VPN zu verbinden. Sie sollten nun mit dem VPN verbunden sein.
Verbinden von Ubuntu
Um eine Verbindung von einem Ubuntu-Rechner herzustellen, können Sie StrongSwan als Dienst einrichten und verwalten oder jedes Mal eine einmalige Befehlszeile verwenden, wenn Sie sich verbinden möchten. Anleitungen werden für beides bereitgestellt.
Verwalten von StrongSwan als Dienst
Um StrongSwan als Dienst zu verwalten, müssen Sie die folgenden Konfigurationsschritte durchführen.
Zuerst aktualisieren Sie Ihren lokalen Paket-Cache mit apt
Dann installieren Sie StrongSwan und die erforderlichen Plugins für die Authentifizierung:
Jetzt benötigen Sie eine Kopie des CA-Zertifikats im Verzeichnis /etc/ipsec.d/cacerts
, damit Ihr Client die Identität des Servers überprüfen kann. Führen Sie den folgenden Befehl aus, um die Datei ca-cert.pem
an die richtige Stelle zu kopieren:
Um sicherzustellen, dass das VPN nur bei Bedarf läuft, verwenden Sie systemctl
, um StrongSwan davon abzuhalten, automatisch zu starten:
Konfigurieren Sie als Nächstes den Benutzernamen und das Passwort, die Sie zur Authentifizierung am VPN-Server verwenden werden. Bearbeiten Sie /etc/ipsec.secrets
mit nano oder Ihrem bevorzugten Editor:
Fügen Sie die folgende Zeile hinzu und bearbeiten Sie die hervorgehobenen Benutzernamen- und Passwortwerte, um mit denen übereinzustimmen, die Sie auf dem Server konfiguriert haben:
your_username : EAP "your_password"
Zuletzt bearbeiten Sie die Datei /etc/ipsec.conf
, um Ihren Client so zu konfigurieren, dass er zur Konfiguration des Servers passt:
config setup
conn ikev2-rw
right=server_domain_or_IP
# Dies sollte mit dem Wert `leftid` in der Konfiguration Ihres Servers übereinstimmen
rightid=server_domain_or_IP
rightsubnet=0.0.0.0/0
rightauth=pubkey
leftsourceip=%config
leftid=username
leftauth=eap-mschapv2
eap_identity=%identity
auto=start
Um sich mit dem VPN zu verbinden, geben Sie ein:
Um sich wieder zu trennen, geben Sie ein:
Verwendung des Clients charon-cmd
für einmalige Verbindungen
Um StrongSwan als Dienst zu verwalten, müssen Sie die folgenden Konfigurationsschritte durchführen.
Zuerst aktualisieren Sie Ihren lokalen Paketcache mit apt
Anschließend installieren Sie StrongSwan und die erforderlichen Plugins für die Authentifizierung:
Jetzt benötigen Sie eine Kopie des CA-Zertifikats im Verzeichnis /etc/ipsec.d/cacerts
, damit Ihr Client die Identität des Servers überprüfen kann. Führen Sie den folgenden Befehl aus, um die Datei ca-cert.pem
zu kopieren:
Zu diesem Zeitpunkt können Sie sich mit charon-cmd
mit dem CA-Zertifikat des Servers, der IP-Adresse des VPN-Servers und dem von Ihnen konfigurierten Benutzernamen verbinden.
Führen Sie den folgenden Befehl aus, wenn Sie sich mit dem VPN verbinden möchten:
Geben Sie bei Aufforderung das Passwort des VPN-Benutzers ein, und Sie werden mit dem VPN verbunden. Um die Verbindung zu trennen, drücken Sie CTRL+C
in der Konsole und warten Sie, bis die Verbindung geschlossen ist.
Verbindung von iOS herstellen
Um die VPN-Verbindung auf einem iOS-Gerät zu konfigurieren, befolgen Sie diese Schritte:
- Senden Sie sich selbst eine E-Mail mit dem angehängten Stammzertifikat.
- Öffnen Sie die E-Mail auf Ihrem iOS-Gerät und tippen Sie auf die angehängte Zertifikatsdatei, dann tippen Sie auf Installieren und geben Sie Ihren Code ein. Sobald es installiert ist, tippen Sie auf Fertig.
- Gehe zu Einstellungen, Allgemein, VPN und tippe auf VPN-Konfiguration hinzufügen. Dadurch wird der Bildschirm für die VPN-Verbindungskonfiguration geöffnet.
- Tippe auf Typ und wähle IKEv2.
- Im Feld Beschreibung gib einen kurzen Namen für die VPN-Verbindung ein. Dies kann alles sein, was du möchtest.
- Im Feld Server und Remote-ID gib den Domänennamen oder die IP-Adresse des Servers ein. Das Feld Local-ID kann leer gelassen werden.
- Gib deinen Benutzernamen und dein Passwort im Abschnitt Authentifizierung ein und tippe dann auf Fertig.
- Wähle die VPN-Verbindung aus, die du gerade erstellt hast, aktiviere den Schalter oben auf der Seite und du wirst verbunden sein.
Verbindung von Android
Befolge diese Schritte, um das Zertifikat zu importieren:
- Sende dir selbst eine E-Mail mit dem CA-Zertifikat im Anhang. Speichere das CA-Zertifikat in deinem Download-Ordner.
- Lade den StrongSwan VPN-Client aus dem Play Store herunter.
- Öffne die App. Tippe auf das „Mehr“-Symbol (. . .) in der oberen rechten Ecke und wähle CA-Zertifikate.
- Tippen Sie erneut auf das „Mehr“ -Symbol (. . .) in der oberen rechten Ecke. Wählen Sie Zertifikat importieren.
- Navigieren Sie zu der CA-Zertifikatsdatei in Ihrem Download-Ordner und wählen Sie sie aus, um sie in die App zu importieren.
Jetzt, da das Zertifikat in der StrongSwan-App importiert ist, können Sie die VPN-Verbindung mit diesen Schritten konfigurieren:
- In der App tippen Sie oben auf VPN-PROFIL HINZUFÜGEN.
- Füllen Sie das Server mit dem Domänennamen oder der öffentlichen IP-Adresse Ihres VPN-Servers aus.
- Stellen Sie sicher, dass IKEv2 EAP (Benutzername/Passwort) als VPN-Typ ausgewählt ist.
- Füllen Sie das Benutzername und Passwort mit den Anmeldedaten aus, die Sie auf dem Server definiert haben.
- Deaktivieren Sie Automatisch auswählen im Abschnitt CA-Zertifikat und klicken Sie auf CA-Zertifikat auswählen.
- Tippen Sie auf den Reiter IMPORTIERT oben auf dem Bildschirm und wählen Sie die importierte CA aus (sie wird „VPN-Stamm-CA“ genannt, wenn Sie den „DN“ nicht geändert haben).
- Falls gewünscht, füllen Sie Profilname (optional) mit einem aussagekräftigeren Namen aus.
Wenn Sie eine Verbindung mit dem VPN herstellen möchten, klicken Sie auf das Profil, das Sie gerade in der StrongSwan-Anwendung erstellt haben.
Problembehebung bei Verbindungen
Wenn Sie das Zertifikat nicht importieren können, stellen Sie sicher, dass die Datei die Erweiterung .pem
hat und nicht .pem.txt
.
Wenn Sie keine Verbindung zum VPN herstellen können, überprüfen Sie den Servernamen oder die IP-Adresse, die Sie verwendet haben. Die Domänenname oder IP-Adresse des Servers muss mit dem übereinstimmen, was Sie als den allgemeinen Namen (CN) bei der Erstellung des Zertifikats konfiguriert haben. Wenn sie nicht übereinstimmen, funktioniert die VPN-Verbindung nicht. Wenn Sie beispielsweise ein Zertifikat mit dem CN vpn.example.com
eingerichtet haben, müssen Sie vpn.example.com
verwenden, wenn Sie die Details des VPN-Servers eingeben. Überprüfen Sie den Befehl, den Sie zum Generieren des Zertifikats verwendet haben, und die Werte, die Sie beim Erstellen Ihrer VPN-Verbindung verwendet haben.
Zum Schluss überprüfen Sie die VPN-Konfiguration, um sicherzustellen, dass der Wert leftid
mit dem Symbol @
konfiguriert ist, wenn Sie einen Domänennamen verwenden:
leftid=@vpn.example.com
Wenn Sie eine IP-Adresse verwenden, stellen Sie sicher, dass das Symbol @
weggelassen wird. Stellen Sie außerdem sicher, dass Sie beim Generieren der Datei server-cert.pem
sowohl die Flags --san @IP_Adresse
als auch --san IP_Adresse
eingeschlossen haben.
Abschluss
In diesem Tutorial haben Sie einen VPN-Server erstellt, der das IKEv2-Protokoll verwendet. Sie haben die Direktiven kennengelernt, die die Verbindung auf der linken und rechten Seite sowohl des Servers als auch der Clients steuern. Außerdem haben Sie einen Windows-, macOS-, iOS-, Android- oder Linux-Client konfiguriert, um eine Verbindung zum VPN herzustellen.
Um Benutzer hinzuzufügen oder zu entfernen, gehen Sie erneut zu Schritt 5. Jede Zeile in /etc/ipsec.secrets
ist für einen Benutzer, daher erfordert das Hinzufügen oder Entfernen von Benutzern oder das Ändern von Passwörtern lediglich eine Bearbeitung der Datei.
Jetzt können Sie sicher sein, dass Ihre Online-Aktivitäten überall und mit jedem Gerät, das Sie zum Zugriff auf das Internet verwenden, sicher bleiben.