Einrichten eines VPN Tunnels unter Linux
Allgemeine Infos
Um eine VPN Verbindung aufbauen zu können
- Müssen Sie die Netzordnung der Hochschule Mittweida bestätigt haben
- Darf Ihr Kennwort nicht abgelaufen sein
Beides können Sie im Bereich Ihrer persönlichen Einstellungen prüfen.
Getestete Linux Versionen
- Debian 9 (jessie)
- Debian 10 (buster)
- Debian 11 (bullseye) (aktuell)
- Linux Mint 20.2 (uma)
- Linux Mint 21.1 (vera) (aktuell)
(Stand 03/2023)
Installation unter Linux
Bitte führen Sie nur eine der folgenden Installationen durch und beachten Sie die Bemerkungen am Ende der Anleitung!
Paketverwaltung
aktuelle Version, ohne Backports
Wird eine aktuelle Linux-Version verwendet, z.B. Debian 11 (bullseye), so führen Sie die Installation ganz einfach mit der Paketverwaltung durch:
sudo apt-get update sudo apt-get install ca-certificates sudo apt-get install strongswan sudo apt-get install libcharon-extra-plugins sudo apt-get install libcharon-standard-plugins sudo apt-get install libstrongswan-extra-plugins sudo apt-get install libstrongswan-standard-plugins
veraltete Version, mit Backports
Wird eine veraltete Linux-Version verwendet, z.B. Debian 9 (jessie), so muss zunächst der Paketverwaltung mitgeteilt werden, dass sie Backports verwenden soll. Dazu muss /etc/apt/sources.list wie folgt angepasst werden:
sudo deb http://http.debian.net/debian jessie-backports main
Danach die folgenden Befehle für die Installation ausführen:
sudo apt-get update sudo apt-get -t jessie-backports install ca-certificates sudo apt-get -t jessie-backports install strongswan sudo apt-get -t jessie-backports install libcharon-extra-plugins sudo apt-get -t jessie-backports install libcharon-standard-plugins sudo apt-get -t jessie-backports install libstrongswan-extra-plugins sudo apt-get -t jessie-backports install libstrongswan-standard-plugins
Außerdem müssen im Init-Script (/etc/init.d/ipsec) die folgenden Zeilen um "$syslog" erweitert werden:
# Required-Start: $network $remote_fs # Required-Stop: $network $remote_fs
Weitere Schritte:
Unabhängig von der Linux-Version sollten Sie anschließend das VPN-Strongswan#Telekom-Zertifikat einrichten und mit der VPN-Strongswan#Konfiguration fortfahren.
Kompilieren
Zur manuellen Kompilierung und Installation benötigen Sie das Terminal-Fenster. Öffnen Sie dafür das (Start-) Menü unten links, tippen daraufhin in dem Suchfeld "Terminal" ein und starten Sie das Programm "Terminal".
Alternativ können Sie auch gleichzeitig die Tasten Alt+Strg+T drücken.
Wechseln Sie nun in ein Verzeichnis Ihrer Wahl (im folgenden erstelle ich im "Downloads" ein neues Verzeichnis mit der Bezeichnung "strongswan" und wechsle in dieses):
mkdir ~/Downloads/strongswan cd ~/Downloads/strongswan/
Im Verzeichnis "strongswan" angekommen, sollten Sie die aktuelle Version von Strongswan (in meinem Fall die Version 5.9.3) herunterladen und das Archiv entpacken. Geben sie dafür im Terminal-Fenster folgende Befehle ein:
wget https://download.strongswan.org/strongswan.tar.gz tar -xzvf strongswan.tar.gz
Das Verzeichnis sollte nun folgenden Inhalt haben:
ls -al ~/Downloads/strongswan strongswan-5.9.3 strongswan.tar.gz
Wechseln Sie nun in das Unterverzeichnis mit der heruntergeladenen Version (in meinem Fall die 5.9.3). Über "sudo su" machen Sie sich daraufhin zum "root"-Nutzer, da für die nächsten Schritte höhere Berechtigungen notwendig sind mit mit "apt-get install ..." müssen sie vor den nächsten Schritten noch zusätzliche Pakete für den Kompilierungsprozess installieren (falls nicht schon vorhanden):
cd strongswan-5.9.3 sudo su apt-get install libc-dev-bin apt-get install libc6-dev apt-get install libgmp-dev apt-get install libcurl4 apt-get install libcurl4-openssl-dev apt-get install libssl-dev apt-get install zlib1g-dev
Über den Befehl ".configure ..." werden nun noch Parameter festgelegt, um den korrekten Installationsumfang des Strongswans zu gewährleisen:
./configure --enable-curl --enable-eap-mschapv2 --enable-eap-identity --enable-openssl
Nach erfolgreicher Konfiguration sollte folg. Zusammenfassung angezeigt werden:
strongSwan will be built with the following plugins ----------------------------------------------------- libstrongswan: aes des rc2 sha2 sha1 md5 mgf1 random nonce x509 revocation constraints pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey pem openssl fips-prf gmp curve25519 xcbc cmac hmac drbg curl libcharon: attr kernel-netlink resolve socket-default stroke vici updown eap-identity eap-mschapv2 xauth-generic counters libtnccs: libtpmtss:
Über die Befehle "make" und "make install" kompilieren und installieren Sie letztendlich das Programm:
make make install
Weitere Schritte:
Unabhängig von der Linux-Version sollten Sie dannach das VPN-Strongswan#Telekom-Zertifikat einrichten und mit der VPN-Strongswan#Konfiguration fortfahren.
Bemerkungen nach der erfolgreichen Installation:
Wenn Sie die zur Kompilierung notwendigen Pakete nicht mehr benötigen, können Sie diese wieder entfernen mit:
apt-get remove libc-dev-bin apt-get remove libc6-dev apt-get remove libgmp-dev apt-get remove libcurl4 apt-get remove libcurl4-openssl-dev apt-get remove libssl-dev apt-get remove zlib1g-dev
Außerdem kann der Strongswan jederzeit wieder deinstalliert werden, solange das Verzeichnis "strongswan/strongswan-5.9.3" (in meinem Fall war es die Strongswan-Version 5.9.3) nicht gelöscht wird. Öffnen Sie dafür wieder das Terminal, wechseln in dieses Verzeichnis und führen Sie den Befehl "make uninstall" aus. Dieser Schritt sollte ebenfalls ausgeführt werden, bevor Sie eine neue Version des Strongswan installieren.
make uninstall
Telekom-Zertifikat
Im Verzeichnis "/usr/local/etc/ipsec.d/cacerts" muss ein Link zum Zertifikat der T-TeleSec GlobalRoot Class2 (seit Sommer 2019) angelegt werden. Sie können wie folgt prüfen, ob dieses auf Ihrem Rechner vorhanden ist mit:
cd /etc/ssl/certs sudo find -iname "*.pem" | grep -i telesec ./T-TeleSec_GlobalRoot_Class_3.pem ./T-TeleSec_GlobalRoot_Class_2.pem
Und anschließend so verlinken:
ln -s /etc/ssl/certs/T-TeleSec_GlobalRoot_Class_2.pem /usr/local/etc/ipsec.d/cacerts/
Prüfen Sie den Link mit:
ls -al /usr/local/etc/ipsec.d/cacerts
Das Ergebnis sollte so aussehen:
T-TeleSec_GlobalRoot_Class_2.pem -> /etc/ssl/certs/T-TeleSec_GlobalRoot_Class_2.pem
Konfiguration
Nach der Installation müssen folgende Dateien bearbeitet bzw. neu angelegt werden:
~/Downloads/strongswan/strongswan.conf ~/Downloads/strongswan/ipsec.conf ~/Downloads/strongswan/ipsec.secrets
strongswan.conf
Öffnen Sie die Datei mit einem Editor ihrer Wahl (ich habe dafür "nano" verwendet).
sudo nano ~/Downloads/strongswan/strongswan.conf
In dieser Datei darf nur noch folgender Text enthalten sein:
charon { load = curl aes des sha1 sha2 md5 pem pkcs1 gmp random nonce x509 revocation hmac xcbc stroke kernel-netlink socket-default fips-prf eap-mschapv2 eap-identity updown openssl resolve }
Alles was sonst in der Datei steht ist unnötig und behindert die Verbindung.
ipsec.conf
Öffnen Sie die Datei mit einem Editor ihrer Wahl (ich habe dafür "nano" verwendet).
sudo nano ~/Downloads/strongswan/ipsec.conf
In dieser Datei muss folgender Text hinzugefügt werden:
conn hsmw-vpn keyexchange=ikev2 left=%defaultroute leftid=%any leftauth=eap eap_identity=username@hs-mittweida.de leftsourceip=%config leftdns=%config4 leftfirewall=no right=141.55.128.84 rightid=@vpn4.hs-mittweida.de rightsubnet=0.0.0.0/0 rightauth=pubkey auto=add
Alles was sonst in der Datei steht wird für die Verbindung benötigt. Ersetzen Sie username@hs-mittweida.de mit ihrem eigenem Nutzernamen, z.B. ameier3@hs-mittweida.de.
ipsec.secrets
Öffnen Sie die Datei mit einem Editor ihrer Wahl (ich habe dafür "nano" verwendet).
sudo nano ~/Downloads/strongswan/ipsec.secrets
In diese Datei sollten Sie Ihre Zugangsdaten hinzufügen:
username@hs-mittweida.de : EAP "K3nnw0rt"
Ersetzen Sie username@hs-mittweida.de mit ihrem eigenem Nutzernamen, z.B. ameier3@hs-mittweida.de. Ersetzen Sie K3nnw0rt mit ihrem eigenem Passwort, z.B. Top@Secret007.
Schützen Sie Ihre Zugangsdaten vor unbefugtem Zugriff mit:
chmod 600 ~/Downloads/strongswan/ipsec.secrets
Die Dateirechte sollten so gesetzt sein:
-rw-rw-r-- 1 user user 370 Okt 8 07:52 ipsec.conf -rw------- 1 user user 47 Okt 8 07:53 ipsec.secrets -rw-rw-r-- 1 user user 195 Okt 8 07:51 strongswan.conf
Verlinkung
Erstellen Sie nun noch Links auf die Konfigurationsdateien:
sudo ln -s ~/Downloads/strongswan/strongswan.conf /usr/local/etc/strongswan.conf sudo ln -s ~/Downloads/strongswan/ipsec.conf /usr/local/etc/ipsec.conf sudo ln -s ~/Downloads/strongswan/ipsec.secrets /usr/local/etc/ipsec.secrets
Prüfen Sie die Links mit:
ls -al /usr/local/etc ipsec.conf -> ~/Downloads/strongswan/ipsec.conf ipsec.secrets -> ~/Downloads/strongswan/ipsec.secrets strongswan.conf -> ~/Downloads/strongswan/strongswan.conf
VPN-Tunnel aufbauen
Bevor ein VPN-Tunnel aufgebaut werden kann, muss der IPSEC-Dienst gestartet werden mit:
sudo ipsec start
Dannach wird der VPN-Tunnel wie folgt aufgebaut:
sudo ipsec up hsmw-vpn
Falls die Konfigurations-Dateien im falschen Verzeichnis liegen, meldet ipsec das beim Starten so:
abort initialization due to invalid configuration Starting strongSwan 5.9.3 IPsec [starter]... failed to open config file '/usr/local/etc/ipsec.conf' unable to start strongSwan -- fatal errors in config
Die Datei (oder der symbolische Link) 'ipsec.conf' wurde im Verzeichnis '/usr/local/etc' erwartet, liegt aber im Verzeichnis '/etc', Abhilfe:
cp /etc/ipsec.conf /usr/local/etc/ipsec.conf
Falls die Konfigurations-Dateien im richtigen Verzeichnis liegen, ipsec beim Starten jedoch immer noch Probleme hat, könnte die Ursache dafür inhaltliche Fehler (z.B. falscher Nutzername, falsches Passwort) und/oder formale Fehler (z.B. falscher Zeichensatz, falsche Zeilenumbrüche, Sonderzeichen, fehlendes '=', fehlendes ':') in den Konfigurations-Dateien sein.
VPN-Tunnel prüfen
Um den Zustand des VPN-Tunnels zu prüfen, ist folg. Befehl hilfreich:
sudo ipsec status
Es sollte ein Bericht angezeigt werden, der so ähnlich aussieht:
Security Associations (1 up, 0 connecting): hsmw-vpn[1]: ESTABLISHED 8 minutes ago, 192.168.178.43[192.168.178.43]...141.55.128.84[vpn4.hs-mittweida.de] hsmw-vpn{1}: INSTALLED, TUNNEL, reqid 1, ESP in UDP SPIs: c70d1c9a_i c918ee5f_o hsmw-vpn{1}: 141.55.149.125/32 === 0.0.0.0/0
Falls der IPSEC-Dienst läuft, aber der VPN-Tunnel noch nicht aufgebaut wurde:
Security Associations (0 up, 0 connecting): none
VPN-Tunnel abbauen
Um den VPN-Tunnel abzubauen, muss folgender Befehl ausgeführt werden:
sudo ipsec down hsmw-vpn
Dannach kann der IPSEC-Dienst wieder gestoppt werden mit:
sudo ipsec stop