Wie man eine IPsec-basierte VPN mit Strongswan unter Debian und Ubuntu einrichtet

strongSwan ist eine quelloffene, plattformübergreifende, voll funktionsfähige und weit verbreitete IPsec-basierte VPN (Virtuelle Private Netzwerke) Implementierung, die unter Linux, FreeBSD, OS X, Windows, Android und iOS läuft. Es ist hauptsächlich ein Schlüssel-Daemon, der die Internet Key Exchange Protokolle (IKEv1 und IKEv2) unterstützt, um Sicherheitsvereinbarungen (SA) zwischen zwei Peers zu etablieren.

Dieser Artikel beschreibt, wie man Standort-zu-Standort IPSec VPN Gateways mit strongSwan auf Ubuntu und Debian Servern einrichtet. Unter Standort-zu-Standort verstehen wir, dass hinter jedem Sicherheits-Gateway ein Sub-Netz liegt. Darüber hinaus werden die Peers sich gegenseitig mithilfe eines vorab geteilten Schlüssels (PSK) authentifizieren.

Testumgebung

Ersetzen Sie bitte die folgenden IPs durch Ihre echten IPs, um Ihre Umgebung zu konfigurieren.

Standort 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

Standort 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. Zunächst müssen Sie den Kernel so konfigurieren, dass die Paketweiterleitung aktiviert wird, indem Sie die entsprechenden Systemvariablen in der /etc/sysctl.conf Konfigurationsdatei auf beiden Sicherheits-Gateways hinzufügen.

$ sudo vim /etc/sysctl.conf

Suchen Sie nach den folgenden Zeilen und deaktivieren Sie sie und setzen Sie ihre Werte wie gezeigt (lesen Sie die Kommentare in der Datei für weitere Informationen).

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
Load Sysctl Kernel Settings

3. Wenn der UFW-Firewall-Dienst aktiviert ist, müssen Sie die folgenden Regeln zur /etc/ufw/before.rules-Konfigurationsdatei hinzufügen, und zwar direkt vor den Filterregeln in beiden Security Gateways.

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 die Firewall-Regeln hinzugefügt wurden, wenden Sie die neuen Einstellungen an, indem Sie UFW wie gezeigt neu starten.

$ sudo ufw disable 
$ sudo ufw enable

Schritt 2: Installation von strongSwan unter Debian und Ubuntu

5. Aktualisieren Sie den Paket-Cache auf beiden Security Gateways und installieren Sie das strongswan-Paket mithilfe des APT-Paketmanagers.

$ sudo apt update
$ sudo apt install strongswan 

6. Sobald die Installation abgeschlossen ist, wird das Installationsskript den strongswan-Dienst starten und ihn so einrichten, dass er automatisch beim Systemstart ausgeführt wird. Sie können seinen Status und darüber, ob er aktiviert ist, mithilfe des folgenden Befehls überprüfen.

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

Schritt 3: Konfiguration der Security Gateways

7. Konfigurieren Sie als Nächstes die Security Gateways mithilfe der /etc/ipsec.conf-Konfigurationsdatei.

Site 1 Gateway (tecmint-devgateway)

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

Kopieren Sie die folgende Konfiguration in die Datei.

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 in die Datei.

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 – spezifiziert allgemeine Konfigurationsinformationen für IPSec, die auf alle Verbindungen zutreffen.
  • charondebug – definiert, wie viel Charon-Debugging-Ausgabe protokolliert werden soll.
  • uniqueids – spezifiziert, ob eine bestimmte Teilnehmer-ID eindeutig gehalten werden soll.
  • conn prodgateway-to-devgateway – definiert den Verbindungsnamen.
  • type – definiert den Verbindungstyp.
  • auto – wie die Verbindung behandelt werden soll, wenn IPSec gestartet oder neu gestartet wird.
  • keyexchange – definiert die Version des IKE-Protokolls, die verwendet werden soll.
  • authby – definiert, wie sich die Peers gegenseitig authentifizieren sollen.
  • left – 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 rechten Teilnehmers an.
  • rightsubnet – gibt das private Subnetz hinter dem linken Teilnehmer an.
  • ike – definiert eine Liste der IKE/ISAKMP SA-Verschlüsselungs-/Authentifizierungsalgorithmen, die verwendet werden sollen. Sie können eine durch Kommas getrennte Liste hinzufügen.
  • esp – definiert eine Liste der ESP-Verschlüsselungs-/Authentifizierungsalgorithmen, die für die Verbindung verwendet werden sollen. Sie können eine durch Kommas getrennte Liste hinzufügen.
  • aggressive – gibt an, ob Aggressive oder Main Mode verwendet werden soll.
  • keyingtries – gibt die Anzahl der Versuche an, die unternommen werden sollen, um eine Verbindung auszuhandeln.
  • ikelifetime – gibt an, wie lange der Schlüsselkanal einer Verbindung bestehen sollte, bevor er neu verhandelt wird.
  • lifetime – definiert, wie lange eine bestimmte Instanz einer Verbindung dauern soll, von erfolgreicher Verhandlung bis zum Ablauf.
  • dpddelay – gibt das Zeitintervall an, in 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 gelöscht werden, falls keine Aktivität vorliegt.
  • dpdaction – definiert, wie das Dead Peer Detection(DPD)-Protokoll verwendet werden soll, um die Verbindung zu verwalten.

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

$ man ipsec.conf

Schritt 4: Konfigurieren von PSK für Peer-to-Peer-Authentifizierung

8. Nachdem beide Sicherheitsgateways konfiguriert wurden, generieren Sie einen sicheren PSK, der von den Peers mit folgendem Befehl verwendet werden soll.

$ head -c 24 /dev/urandom | base64
Generate PSK Key

9. Fügen Sie als Nächstes den PSK in die Datei /etc/ipsec.secrets auf beiden Gateways ein.

$ sudo vim /etc/ipsec.secrets

Kopieren und fügen Sie die folgende Zeile 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
View IPSec Connection Status

11. Überprüfen Sie abschließend, ob Sie von beiden Sicherheitsgateways 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
Verify Site-to-Site VPN Setup

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

$ sudo ipsec stop
$ sudo ipsec start

13. Um mehr über IPSec-Befehle zu erfahren, um Verbindungen manuell herzustellen und mehr, sehen Sie sich die IPSec-Hilfeseite an.

$ ipsec --help

Das war’s! In diesem Artikel haben wir beschrieben, wie Sie ein Site-to-Site-IPSec-VPN mit strongSwan auf Ubuntu und Debian-Servern einrichten, wobei beide Sicherheitsgateways so konfiguriert wurden, dass sie sich gegenseitig mit einem PSK authentifizieren. Wenn Sie Fragen oder Gedanken teilen möchten, erreichen Sie uns über das unten stehende Feedback-Formular.

Source:
https://www.tecmint.com/setup-ipsec-vpn-with-strongswan-on-debian-ubuntu/