Website-Suche

So richten Sie ein IPsec-basiertes VPN mit Strongswan unter Debian und Ubuntu ein


strongSwan ist eine Open-Source-, plattformübergreifende, voll funktionsfähige und weit verbreitete IPsec-basierte VPN-Implementierung (Virtual Private Network), die unter Linux, FreeBSD, OS X, Windows, Android und iOS läuft. Es handelt sich in erster Linie um einen Schlüsseldämon, der die Internet Key Exchange-Protokolle (IKEv1 und IKEv2) unterstützt, um Sicherheitszuordnungen (SA) einzurichten.) zwischen zwei Peers.

In diesem Artikel wird beschrieben, wie Sie Site-to-Site-IPSec-VPN-Gateways mit strongSwan auf Ubuntu- und Debian-Servern einrichten . Mit Site-to-Site meinen wir, dass hinter jedem Sicherheits-Gateway ein Subnetz steckt. Außerdem authentifizieren sich die Peers gegenseitig mithilfe eines vorinstallierten Schlüssels (PSK).

Testumgebung

Denken Sie daran, die folgenden IPs durch Ihre realen IPs zu ersetzen, um Ihre Umgebung zu konfigurieren.

Site 1 Gateway (tecmint-devgateway)

OS 1: Debian or Ubuntu
Public IP: 10.20.20.1
Private IP: 192.168.0.101/24
Private Subnet: 192.168.0.0/24

Site 2 Gateway (tecmint-prodgateway)

OS 2: Debian or Ubuntu
Public IP:  10.20.20.3
Private IP: 10.0.2.15/24
Private Subnet: 10.0.2.0/24

Schritt 1: Aktivieren der Kernel-Paketweiterleitung

1. Zuerst müssen Sie den Kernel so konfigurieren, dass die Paketweiterleitung aktiviert wird, indem Sie die entsprechenden Systemvariablen in der Konfigurationsdatei /etc/sysctl.conf auf beiden Sicherheits-Gateways hinzufügen.

sudo vim /etc/sysctl.conf

Suchen Sie nach den folgenden Zeilen, kommentieren Sie sie aus und legen Sie ihre Werte wie gezeigt fest (weitere Informationen finden Sie in den Kommentaren in der Datei).

net.ipv4.ip_forward = 1 
net.ipv6.conf.all.forwarding = 1 
net.ipv4.conf.all.accept_redirects = 0 
net.ipv4.conf.all.send_redirects = 0 

2. Laden Sie als Nächstes die neuen Einstellungen, indem Sie den folgenden Befehl ausführen.

sudo sysctl -p

3. Wenn Sie einen UFW-Firewalldienst aktiviert haben, müssen Sie die folgenden Regeln direkt vor den Filterregeln zur Konfigurationsdatei /etc/ufw/before.rules hinzufügen entweder Sicherheitsgateways.

Site 1 Gateway (tecmint-devgateway)

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.0.2.0/24  -d 192.168.0.0/24 -j MASQUERADE
COMMIT

Site 2 Gateway (tecmint-prodgateway)

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING  -s 192.168.0.0/24 -d 10.0.2.0/24 -j MASQUERADE
COMMIT

4. Sobald Firewall-Regeln hinzugefügt wurden, übernehmen Sie die neuen Änderungen, indem Sie UFW wie gezeigt neu starten.

sudo ufw disable 
sudo ufw enable

Schritt 2: StrongSwan in Debian und Ubuntu installieren

5. Aktualisieren Sie Ihren Paketcache auf beiden Sicherheitsgateways und installieren Sie das strongswan-Paket mit dem APT-Paketmanager.

sudo apt update
sudo apt install strongswan 

6. Sobald die Installation abgeschlossen ist, startet das Installationsskript den strongswan-Dienst und ermöglicht ihm den automatischen Start beim Systemstart. Mit dem folgenden Befehl können Sie den Status überprüfen und prüfen, ob es aktiviert ist.

sudo systemctl status strongswan.service
sudo systemctl is-enabled strongswan.service

Schritt 3: Sicherheits-Gateways konfigurieren

7. Als Nächstes müssen Sie die Sicherheits-Gateways mithilfe der Konfigurationsdatei /etc/ipsec.conf konfigurieren.

Site 1 Gateway (tecmint-devgateway)

sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig
sudo nano /etc/ipsec.conf 

Kopieren Sie die folgende Konfiguration und fügen Sie sie in die Datei ein.

config setup
        charondebug="all"
        uniqueids=yes
conn devgateway-to-prodgateway
        type=tunnel
        auto=start
        keyexchange=ikev2
        authby=secret
        left=10.20.20.1
        leftsubnet=192.168.0.101/24
        right=10.20.20.3
        rightsubnet=10.0.2.15/24
        ike=aes256-sha1-modp1024!
        esp=aes256-sha1!
        aggressive=no
        keyingtries=%forever
        ikelifetime=28800s
        lifetime=3600s
        dpddelay=30s
        dpdtimeout=120s
        dpdaction=restart

Site 2 Gateway (tecmint-prodgateway)

sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig
sudo nano /etc/ipsec.conf 

Kopieren Sie die folgende Konfiguration und fügen Sie sie in die Datei ein.

config setup
        charondebug="all"
        uniqueids=yes
conn prodgateway-to-devgateway
        type=tunnel
        auto=start
        keyexchange=ikev2
        authby=secret
        left=10.20.20.3
        leftsubnet=10.0.2.15/24
        right=10.20.20.1
        rightsubnet=192.168.0.101/24 
        ike=aes256-sha1-modp1024!
        esp=aes256-sha1!
        aggressive=no
        keyingtries=%forever
        ikelifetime=28800s
        lifetime=3600s
        dpddelay=30s
        dpdtimeout=120s
        dpdaction=restart

Hier ist die Bedeutung jedes Konfigurationsparameters:

  • config setup – gibt allgemeine Konfigurationsinformationen für IPSec an, die für alle Verbindungen gelten.
  • charondebug – definiert, wie viel Charon-Debugging-Ausgabe protokolliert werden soll.
  • uniqueids – gibt an, ob eine bestimmte Teilnehmer-ID eindeutig bleiben soll.
  • conn prodgateway-to-devgateway – definiert den Verbindungsnamen.
  • Typ – definiert den Verbindungstyp.
  • auto – wie mit der Verbindung umgegangen wird, wenn IPSec gestartet oder neu gestartet wird.
  • keyexchange – definiert die zu verwendende Version des IKE-Protokolls.
  • authby – definiert, wie Peers sich gegenseitig authentifizieren sollen.
  • links – definiert die IP-Adresse der öffentlichen Netzwerkschnittstelle des linken Teilnehmers.
  • leftsubnet – gibt das private Subnetz hinter dem linken Teilnehmer an.
  • right – gibt die IP-Adresse der öffentlichen Netzwerkschnittstelle des richtigen Teilnehmers an.
  • rightsubnet – gibt das private Subnetz hinter dem linken Teilnehmer an.
  • ike – definiert eine Liste der zu verwendenden IKE/ISAKMP SA-Verschlüsselungs-/Authentifizierungsalgorithmen. Sie können eine durch Kommas getrennte Liste hinzufügen.
  • esp – definiert eine Liste von ESP-Verschlüsselungs-/Authentifizierungsalgorithmen, die für die Verbindung verwendet werden sollen. Sie können eine durch Kommas getrennte Liste hinzufügen.
  • aggressiv – gibt an, ob der aggressive oder der Hauptmodus verwendet werden soll.
  • keyingtries – gibt die Anzahl der Versuche an, die unternommen werden sollten, um eine Verbindung auszuhandeln.
  • ikelifetime – gibt an, wie lange der Schlüsselkanal einer Verbindung dauern soll, bevor er neu ausgehandelt wird.
  • Lebensdauer – definiert, wie lange eine bestimmte Instanz einer Verbindung dauern soll, von der erfolgreichen Aushandlung bis zum Ablauf.
  • dpddelay – gibt das Zeitintervall an, mit dem R_U_THERE-Nachrichten/INFORMATIONAL-Austausche an den Peer gesendet werden.
  • dpdtimeout – gibt das Timeout-Intervall an, nach dem alle Verbindungen zu einem Peer bei Inaktivität gelöscht werden.
  • dpdaction – definiert, wie das Dead Peer Detection (DPD)-Protokoll zur Verwaltung der Verbindung verwendet wird.

Weitere Informationen zu den oben genannten Konfigurationsparametern finden Sie in der Manpage ipsec.conf, indem Sie den Befehl ausführen.

man ipsec.conf

Schritt 4: PSK für die Peer-to-Peer-Authentifizierung konfigurieren

8. Generieren Sie nach der Konfiguration beider Sicherheitsgateways mit dem folgenden Befehl einen sicheren PSK, der von den Peers verwendet werden soll.

head -c 24 /dev/urandom | base64

9. Als nächstes fügen Sie den PSK in der Datei /etc/ipsec.secrets auf beiden Gateways hinzu.

sudo vim /etc/ipsec.secrets

Kopieren Sie die folgende Zeile und fügen Sie sie ein.

------- Site 1 Gateway (tecmint-devgateway) ------- 

10.20.20.1 10.20.20.3 : PSK "qLGLTVQOfqvGLsWP75FEtLGtwN3Hu0ku6C5HItKo6ac="

------- Site 2 Gateway (tecmint-prodgateway) -------

10.20.20.3  10.20.20.1 : PSK "qLGLTVQOfqvGLsWP75FEtLGtwN3Hu0ku6C5HItKo6ac="

10. Starten Sie das IPSec-Programm neu und überprüfen Sie seinen Status, um Verbindungen anzuzeigen.

sudo ipsec restart
sudo ipsec status

11. Überprüfen Sie abschließend, ob Sie von beiden Sicherheits-Gateways aus auf die privaten Subnetze zugreifen können, indem Sie einen Ping-Befehl ausführen.

ping 192.168.0.101
ping 10.0.2.15

12. Außerdem können Sie IPSec wie gezeigt stoppen und starten.

sudo ipsec stop
sudo ipsec start

13. Weitere Informationen zu IPSec-Befehlen zum manuellen Herstellen von Verbindungen und mehr finden Sie auf der IPSec-Hilfeseite.

ipsec --help

Das ist alles! In diesem Artikel haben wir beschrieben, wie Sie ein Site-to-Site-IPSec-VPN mit strongSwan auf Ubuntu- und Debian-Servern einrichten, wobei beides gilt Sicherheitsgateways wurden so konfiguriert, dass sie sich gegenseitig mithilfe eines PSK authentifizieren. Wenn Sie Fragen oder Gedanken zum Teilen haben, erreichen Sie uns über das unten stehende Feedback-Formular.