Wie man IKEv2 VPN mit Strongswan einrichtet und wie man mit CentOS 7 verschlüsselt
Strongswan ist eine Open Source Multiplattform-IPSec-Implementierung. Es handelt sich um eine IPSec-basierte VPN-Lösung, die sich auf starke Authentifizierungsmechanismen konzentriert. Strongswan bietet Unterstützung für die Schlüsselaustauschprotokolle IKEv1 und IKEv2, Authentifizierung auf der Grundlage von X.509-Zertifikaten oder vorab freigegebenen Schlüsseln und sichere IKEv2 EAP-Benutzerauthentifizierung.
In diesem Tutorial zeige ich Ihnen, wie Sie einen IPSec VPN-Server mit Strongswan installieren. Wir werden einen IKEv2-VPN-Server mit der Authentifizierung’EAP-MSCHAPv2′ erstellen und Letsencrypt-Zertifikate auf CentOS 7-Server verwenden.
Voraussetzungen
- CentOS 7 Server
- Root-Rechte
Was werden wir tun?
- Installieren Sie Strongswan auf CentOS 7.
- SSL Letsencrypt generieren
- Konfigurieren Sie Strongswan
- NAT Firewall aktivieren
- Port-Forwarding aktivieren
- Prüfung
Schritt 1 – Installation von Strongswan auf CentOS 7
In diesem ersten Schritt werden wir die bewährte IPsec-Implementierungssoftware und alle benötigten Pakete aus dem EPEL-Repository installieren.
Installieren Sie das EPEL-Repository und installieren Sie das strongswan-Paket mit den folgenden yum-Befehlen.
yum -y install epel-release yum -y install strongswan
Warten Sie, bis das strongswan-Paket installiert ist.
Schritt 2 – SSL-Zertifikat generieren mit Let’s encrypt
Wir werden den IKEv2-VPN-Server unter dem Domainnamen’ikev2.hakase-labs.io‘ erstellen und Zertifikate verwenden, die aus letsencrypt generiert wurden.
In diesem Schritt installieren wir das letsencrypt-Tool’certbot‘ und generieren Zertifikate für den Server-Domänennamen’ikev2.hakase-labs.io‘.
Installiere das ‚certbot‘ letsencrypt tool.
yum -y install certbot
Nach der Installation des Certbot müssen wir den HTTP- und HTTPS-Port des Servers mit Firewall-cmd öffnen.
Fügen Sie die HTTP- und HTTPS-Dienste zur Dienstliste der Firewall hinzu, indem Sie die folgenden Befehle der Firewall-cmd ausführen.
firewall-cmd --add-service=http --permanent firewall-cmd --add-service=https --permanent firewall-cmd --reload
Jetzt können wir neue SSL-Zertifikatsdateien mit dem letsencrypt-Tool certbot generieren.
Führen Sie den folgenden Befehl certbot aus.
certbot certonly --rsa-key-size 4096 --standalone --agree-tos --no-eff-email --email hakase@gmail.com -d ikev2.hakase-labs.io
Letsencrypt-Zertifikate für den vpn-Domänennamen ‚ikev2.hakase-labs.io‘ wurden generiert und befinden sich im Verzeichnis’/etc/letsencrypt/live‘.
Als nächstes müssen wir die Zertifikatsdateien’fullchain.pem‘,’privkey.pem‘ und die’chain.pem‘ in das Verzeichnis’/etc/strongswan/ipsec.d/‘ kopieren.
cp /etc/letsencrypt/live/ikev2.hakase-labs.io/fullchain.pem /etc/strongswan/ipsec.d/certs/ cp /etc/letsencrypt/live/ikev2.hakase-labs.io/privkey.pem /etc/strongswan/ipsec.d/private/ cp /etc/letsencrypt/live/ikev2.hakase-labs.io/chain.pem /etc/strongswan/ipsec.d/cacerts/
Alle letsencrypt-Zertifikate für das Strongswan-VPN namens’ikev2.hakase-labs.io‘ wurden generiert und in das Verzeichnis’/etc/strongswan/ipsec.d‘ kopiert.
tree /etc/strongswan/ipsec.d/
Schritt 3 – Konfiguration von Strongswan
Gehen Sie in das Verzeichnis ‚/etc/strongswan‘ und sichern Sie die standardmäßige Konfigurationsdatei’ipsec.conf‘.
cd /etc/strongswan/ mv ipsec.conf ipsec.conf.asli
Erstellen Sie eine neue ‚ipsec.conf‘ mit dem vim editor.
vim ipsec.conf
Und fügen Sie die folgende Konfiguration ein.
#global configuration IPsec #chron logger config setup charondebug="ike 1, knl 1, cfg 0" uniqueids=no #define new ipsec connection conn hakase-vpn auto=add compress=no type=tunnel keyexchange=ikev2 ike=aes128-sha1-modp1024,aes128-sha1-modp1536,aes128-sha1-modp2048,aes128-sha256-ecp256,aes128-sha256-modp1024,aes128-sha256-modp1536,aes128-sha256-modp2048,aes256-aes128-sha256-sha1-modp2048-modp4096-modp1024,aes256-sha1-modp1024,aes256-sha256-modp1024,aes256-sha256-modp1536,aes256-sha256-modp2048,aes256-sha256-modp4096,aes256-sha384-ecp384,aes256-sha384-modp1024,aes256-sha384-modp1536,aes256-sha384-modp2048,aes256-sha384-modp4096,aes256gcm16-aes256gcm12-aes128gcm16-aes128gcm12-sha256-sha1-modp2048-modp4096-modp1024,3des-sha1-modp1024! esp=aes128-aes256-sha1-sha256-modp2048-modp4096-modp1024,aes128-sha1,aes128-sha1-modp1024,aes128-sha1-modp1536,aes128-sha1-modp2048,aes128-sha256,aes128-sha256-ecp256,aes128-sha256-modp1024,aes128-sha256-modp1536,aes128-sha256-modp2048,aes128gcm12-aes128gcm16-aes256gcm12-aes256gcm16-modp2048-modp4096-modp1024,aes128gcm16,aes128gcm16-ecp256,aes256-sha1,aes256-sha256,aes256-sha256-modp1024,aes256-sha256-modp1536,aes256-sha256-modp2048,aes256-sha256-modp4096,aes256-sha384,aes256-sha384-ecp384,aes256-sha384-modp1024,aes256-sha384-modp1536,aes256-sha384-modp2048,aes256-sha384-modp4096,aes256gcm16,aes256gcm16-ecp384,3des-sha1! fragmentation=yes forceencaps=yes dpdaction=clear dpddelay=300s rekey=no left=%any leftid=@ikev2.hakase-labs.io leftcert=fullchain.pem leftsendcert=always leftsubnet=0.0.0.0/0 right=%any rightid=%any rightauth=eap-mschapv2 rightsourceip=10.15.1.0/24 rightdns=1.1.1.1,8.8.8.8 rightsendcert=never eap_identity=%identity
Speichern und beenden.
Details zur Konfiguration:
- Erstellen Sie eine neue IPSec VPN-Tunnelverbindung mit dem Namen’hakase-vpn‘.
- Geben Sie die IKEv2- und ESP-Cipher-Suiten für die Authentifizierung an.
- Die linke‘ Serverkonfiguration unter Verwendung eines Domänennamens ‚ikev2.hakase-labs.io‘ und unter Verwendung des letsencrypt-Zertifikats ‚fullchain.pem‘ im Verzeichnis ‚/etc/strongswan/ipsec.d/certs‘.
- Die „richtigen“ Clients/Remote-Setup mit der EAP-Authentifizierungsmethode „eap-mschapv2“, weisen allen verbundenen Clients den virtuellen IP-Adressbereich „10.15.1.0/24“ zu und verwenden öffentliche DNS Cloudflare und Google.
Als nächstes müssen wir die Datei’ipsec.secrets‘ bearbeiten, um den privaten Schlüssel des RSA-Servers und die Zugangsdaten für das EAP-Benutzerpasswort zu definieren.
Bearbeiten Sie die Datei’ipsec.secrets‘.
vim ipsec.secrets
Fügen Sie die untenstehende Konfiguration ein.
: RSA "privkey.pem" hakase : EAP "hakase321@" tensai : EAP "tensai321@"
Speichern und beenden.
Details zur Konfiguration:
- Geben Sie den privaten Schlüssel des RSA-Servers mit dem letsencrypt-Zertifikat’privkey.pem‘ im Verzeichnis’/etc/strongswan/ipsec.d/private‘ an.
- Definieren Sie die EAP-Benutzeranmeldeinformationen im Format’user : EAP „password“‚.
Die Strong-Swan IPSec-Konfiguration ist abgeschlossen. Starten Sie den strongswan-Dienst und aktivieren Sie ihn so, dass er jederzeit beim Systemstart gestartet werden kann.
systemctl start strongswan-starter systemctl enable strongswan-starter
Schritt 4 – NAT in der Firewall aktivieren
In diesem Schritt aktivieren wir das NAT-Masquerading und fügen die IPSec-Protokolle Authentication Header (AH) und Encapsulating Security Payload (ESP) auf Firewalld mit der Konfiguration „rich-rule“ hinzu.
Fügen Sie der Firewall ‚AH‘ und ‚ESP‘ für Authentifizierungs- und Verschlüsselungsprotokolle hinzu.
firewall-cmd --zone=public --permanent --add-rich-rule='rule protocol value="esp" accept' firewall-cmd --zone=public --permanent --add-rich-rule='rule protocol value="ah" accept'
Fügen Sie die ipsec UDP-Ports und den Dienst hinzu.
firewall-cmd --zone=public --permanent --add-port=500/udp firewall-cmd --zone=public --permanent --add-port=4500/udp firewall-cmd --zone=public --permanent --add-service="ipsec"
Aktivieren Sie nun die Maskerade des NAT-Modus und laden Sie die Konfigurationsregeln der Firewall neu.
firewall-cmd --zone=public --permanent --add-masquerade firewall-cmd --reload
Der NAT-Modus auf der Firewall wurde aktiviert, überprüfen Sie dies mit dem folgenden Befehl.
firewall-cmd --list-all
Folgendes ist das Ergebnis.
Schritt 5 – Port-Forwarding aktivieren
Um die Port-Weiterleitung zu aktivieren, müssen wir die Datei’sysctl.conf‘ bearbeiten.
Bearbeiten Sie die Datei ‚/etc/sysctl.conf‘ mit dem vim editor.
vim /etc/sysctl.conf
Fügen Sie dort die folgende Konfiguration ein.
net.ipv4.ip_forward = 1 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0
Speichern und beenden, jetzt neu laden mit dem Befehl sysctl unten.
sysctl -p
Die Port-Weiterleitung wurde aktiviert. Starten Sie nun den strongswan-Dienst neu.
systemctl restart strongswan
Schritt 6 – Testen Sie Strongswan IPSec VPN
In diesem Fall werden wir den Test auf dem MacOS X und dem Android-Telefon durchführen.
Unter MacOS
– Öffnen Sie die’Systemeinstellungen‘ und klicken Sie auf das Menü’Netzwerk‘.
Klicken Sie auf die Schaltfläche „+“, um eine neue VPN-Verbindung zu erstellen.
-
- Schnittstelle:’VPN“.
- VPN-Typ: IKEv2′.
- Servicename: IKEv2-vpn ‚IKEv2-vpn
– Geben Sie unter „Serveradresse“ und „Remote-ID“ den VPN-Domänennamen „ikev2.hakase-labs.io“ ein.
– Klicken Sie auf „Authentifizierungseinstellungen“.
– Authentifizierung mit einem’Benutzernamen‘.
– Geben Sie den Benutzernamen’tensai‘ mit dem Passwort’tensai321@‘
ein – Klicken Sie auf’OK‘ und klicken Sie auf’Übernehmen‘.
Auf dem Client wurde eine neue IKEv2 VPN-Verbindung erstellt. Klicken Sie nun auf die Schaltfläche Verbinden.
Und der Client ist mit dem strongswan VPN-Server verbunden und hat eine interne/private IP-Adresse 10.15.1.1.1.
Auf Android
– Laden Sie die native strongswan Android-Anwendung von Google-Play herunter und installieren Sie sie.
– Neues VPN-Profil
hinzufügen – Geben Sie den Server-Domänennamen ‚ikev2.hakase-labs.io‘ ein und verwenden Sie die IKEv2 EAP-Benutzername und Passwort-Authentifizierung.
Folgendes ist das Ergebnis, wenn wir uns mit dem VPN-Server verbinden.
Der IKEv2 IPSec-basierte VPN-Server wurde mit Strongswan und Letsencrypt auf CentOS 7-Server erstellt.