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 IKEv1- und IKEv2-Schlüsselaustauschprotokolle, Authentifizierung basierend auf X.509-Zertifikaten oder vorinstallierten 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 dem CentOS 8-Server verwenden.
Voraussetzungen
- CentOS 8-Server
- Root-Rechte
Was werden wir tun?
- Installieren Sie Strongswan auf CentOS 8
- SSL Letsencrypt generieren
- Strongswan konfigurieren
- NAT-Firewall aktivieren
- Port-Weiterleitung aktivieren
- Testen
Schritt 1 – Installieren Sie Strongswan auf CentOS 8
In diesem ersten Schritt installieren wir die Strongswan-IPsec-Implementierungssoftware und alle erforderlichen Pakete aus dem EPEL-Repository.
Vor der Installation des Strongswan-Pakets müssen Sie das EPEL-Repository zum CentOS 8-System hinzufügen.
Fügen Sie das EPEL-Repository für den CentOS 8-Server hinzu.
sudo dnf install epel-release
Installieren Sie danach das Strongswan-Paket aus dem EPEL-Repository mit dem folgenden dnf-Befehl.
sudo dnf install strongswan
Warten Sie, bis das Strongswan-Paket installiert ist.
Schritt 2 - SSL-Zertifikat mit Let's encrypt generieren
Für diese Anleitung erstellen wir den IKEv2-VPN-Server mit einem Domänennamen „vpn.hakase-labs.io“ und verwenden Zertifikate, die von letsencrypt generiert wurden.
In diesem Schritt installieren wir das letsencrypt-Tool „certbot“ manuell und generieren Zertifikate für den Serverdomänennamen „vpn.hakase-labs.io“.
Laden Sie die certbot-Binärdatei von GitHub mit dem folgenden wget-Befehl herunter.
wget https://dl.eff.org/certbot-auto -O /usr/local/bin/certbot-auto
Machen Sie es danach zu einer ausführbaren Datei, indem Sie die Berechtigung der Datei ändern.
chmod +x /usr/local/bin/certbot-auto
Und das certbot-Tool zum Generieren von Letsencrypt-Zertifikaten wurde installiert.
Bevor wir die Letsencrypt-Zertifikate generieren, müssen wir die HTTP- und HTTPS-Ports des Servers mit firewall-cmd öffnen.
Fügen Sie die HTTP- und HTTPS-Dienste zur Liste der Firewalld-Dienste hinzu, indem Sie die folgenden Firewall-cmd-Befehle ausführen.
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload
Jetzt können wir mit dem letsencrypt-Tool certbot-auto neue SSL-Zertifikatsdateien generieren.
Ändern Sie die E-Mail-Adresse und den Domänennamen mit Ihren eigenen und führen Sie den Befehl „certbot-auto“ unten aus.
certbot-auto certonly --rsa-key-size 2048 --standalone --agree-tos --no-eff-email --email [email protected] -d vpn.hakase-labs.io
Sobald es fertig ist, erhalten Sie das Ergebnis wie unten.
Alle Zertifikate Ihres Domainnamens werden im Verzeichnis „/etc/letsencrypt/live/domain.com“ generiert.
Als nächstes müssen wir die Zertifikatsdateien „fullchain.pem“, „privkey.pem“ und „chain.pem“ in das Verzeichnis „/etc/strongswan/ipsec.d/“ kopieren.
cp /etc/letsencrypt/live/vpn.hakase-labs.io/fullchain.pem /etc/strongswan/ipsec.d/certs/
cp /etc/letsencrypt/live/vpn.hakase-labs.io/privkey.pem /etc/strongswan/ipsec.d/private/
cp /etc/letsencrypt/live/vpn.hakase-labs.io/chain.pem /etc/strongswan/ipsec.d/cacerts/
Alle letsencrypt-Zertifikate für das Strongswan-VPN mit dem Namen „vpn.hakase-labs.io“ wurden generiert und in das Verzeichnis „/etc/strongswan/ipsec.d“ kopiert.
tree /etc/strongswan/ipsec.d/
Schritt 3 – Strongswan konfigurieren
Gehen Sie in das Verzeichnis „/etc/strongswan“ und sichern Sie die Standardkonfigurationsdatei „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.
config setup
uniqueids=never # allow multiple connections per user
charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2, mgr 2"
conn %default
fragmentation=yes
closeaction=restart
rekey=no
dpdaction=clear
keyexchange=ikev2
compress=yes
dpddelay=35s
lifetime=3h
ikelifetime=12h
ike=aes256gcm16-prfsha512-ecp384!
esp=aes256gcm16-ecp384!
left=%any
[email protected]
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
conn ikev2-pubkey
auto=add
Speichern und beenden.
Als Nächstes müssen wir die Datei „ipsec.secrets“ bearbeiten, um den privaten Schlüssel des RSA-Servers und die Anmeldeinformationen für das EAP-Benutzerpasswort zu definieren.
Bearbeiten Sie die Datei „ipsec.secrets“.
vim ipsec.secrets
Fügen Sie die Konfiguration unten ein.
: RSA "privkey.pem"
hakase : EAP "[email protected]"
tensai : EAP "[email protected]"
Speichern und beenden.
Und die Strongswan-IPSec-Konfiguration ist abgeschlossen. Fügen Sie den Strongswan-Dienst zur Startzeit hinzu und starten Sie dann den Dienst.
systemctl enable strongswan
systemctl start strongswan
Der Strongswan-Dienst läuft auf dem CentOS 8-Server, überprüfen Sie ihn mit dem folgenden Befehl.
systemctl status strongswan
netstat -plntu
Und Ihnen wird das Ergebnis wie folgt angezeigt.
Schritt 4 – NAT in Firewalld 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 „Rich-Rule“-Konfiguration hinzu.
Fügen Sie 'AH' und 'ESP' für Authentifizierungs- und Verschlüsselungsprotokolle zur Firewall 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 -Dienste 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 NAT-Modus-Maskierung und laden Sie die Firewall-Konfigurationsregeln neu.
firewall-cmd --zone=public --permanent --add-masquerade
firewall-cmd --reload
Der NAT-Modus auf Firewalld wurde aktiviert, überprüfen Sie dies mit dem folgenden Befehl.
firewall-cmd --list-all
Nachfolgend das Ergebnis.
Schritt 5 – Portweiterleitung aktivieren
Um die Portweiterleitung 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 mit dem sysctl-Befehl unten neu laden.
sysctl -p
Portweiterleitung wurde aktiviert. Starten Sie nun den Strongswan-Dienst neu.
systemctl restart strongswan
Schritt 6 – Strongswan IPSec VPN testen
In diesem Fall führen wir den Test auf dem MacOS X und dem Android-Telefon durch.
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“
- Dienstname:'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 „[E-Mail-geschützt]“ ein.
- Klicken Sie auf „OK“ und dann auf „Übernehmen“.
Auf dem Client wurde eine neue IKEv2-VPN-Verbindung erstellt. Klicken Sie nun auf die Schaltfläche Verbinden.
Und der Client wurde mit dem Strongswan-VPN-Server verbunden und hat eine interne/private IP-Adresse 10.15.1.1.
Auf Android
- Laden Sie die native Strongswan-Android-Anwendung von Google-Play herunter und installieren Sie sie.
- Fügen Sie ein neues VPN-Profil hinzu
- Geben Sie den Serverdomänennamen „ikev2.hakase-labs.io“ ein und verwenden Sie den IKEv2 EAP-Benutzernamen und das 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 einem CentOS 8-Server erstellt.