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?

  1. Installieren Sie Strongswan auf CentOS 7.
  2. SSL Letsencrypt generieren
  3. Konfigurieren Sie Strongswan
  4. NAT Firewall aktivieren
  5. Port-Forwarding aktivieren
  6. 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.

Installieren Sie Strongswan auf CentOS 7.

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

SSL-Zertifikat generieren mit Let's encrypt

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‘.

SSL-Zertifikat erhalten von Let's encrypt

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/

SSL-Cert-Dateien

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“‚.

Strongswan-Konfiguration

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

Firewalld NAT-Konfiguration

Der NAT-Modus auf der Firewall wurde aktiviert, überprüfen Sie dies mit dem folgenden Befehl.

firewall-cmd --list-all

Folgendes ist das Ergebnis.

Firewall-Konfiguration

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

Portweiterleitung in sysctl.conf konfigurieren

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

VPN auf MacOS konfigurieren

– 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‘.

MacOS VPN-Authentifizierungseinstellungen

Auf dem Client wurde eine neue IKEv2 VPN-Verbindung erstellt. Klicken Sie nun auf die Schaltfläche Verbinden.

Neue IKEv2 VPN-Verbindung wurde erstellt.

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.

VPN auf Android konfigurieren

Der IKEv2 IPSec-basierte VPN-Server wurde mit Strongswan und Letsencrypt auf CentOS 7-Server erstellt.

Referenz

Das könnte dich auch interessieren …