In diesem Tutorial wird LibreSwan auf der Ubuntu-Plattform installiert. LibreSwan ist eine Open-Source-Implementierung des IPsec-Protokolls, es basiert auf dem FreeSwan-Projekt und ist als gebrauchsfertiges Paket auf RedHat-basierten Linux-Distributionen verfügbar. Im Quellcode des Projekts finden Sie jedoch detaillierte Anweisungen, um es auf anderen Linux-Plattformen zu kompilieren. Nach dem Installationsvorgang wird ein Gateway-zu-Gateway-basiertes IPsec-VPN konfiguriert, um Daten von Sender- zu Empfänger-Peers zu sichern.
Details zum IPsec-Protokoll finden Sie in unserem vorherigen Artikel. Nachfolgend wird jedoch eine kurze Information über die beiden Teile des IPsec-Protokolls in Bezug auf LibreSwan erläutert.
Ein IPsec-basiertes VPN besteht aus dem Internet Keying Exchange Protokoll und die Encapsulating Security Payload (ESP)-Protokoll.
--> IKE
Wie der Name schon sagt, besteht der Zweck des IKE-Protokolls darin, Peers eines VPNs zu authentifizieren (unter Verwendung eines vorinstallierten Schlüssels, Public-Key-Kryptografie, Freeradius), Schlüssel dynamisch zu generieren und die Schlüssel mit den VPN-Peers zu teilen. Die Verschlüsselungsschlüssel für die zweite Phase des IPsec sind ebenfalls von IKE abhängig. Libreswan implementiert das IKE-Protokoll unter Verwendung des Pluto-Programms des Projekts.
--> ESP
Das ESP-Protokoll ist die eigentliche Spezifikation der zwischen den Peers vereinbarten Richtlinie, die im IPsec-Stack des Linux-Kernels (NETEY/XFRM) implementiert ist.
Libreswan-Funktionen
- Unterstützung für Pre-Shared-Key-basierte Authentifizierung.
- Unterstützung für Authentifizierung auf Basis öffentlicher Schlüssel.
- Unterstützt beide IKE v1/v2-Versionen des Schlüsselaustauschs.
- NSS-Kryptobibliothek wird unterstützt.
- Xauth und DNSSec werden ebenfalls unterstützt.
Erforderliche Pakete für Ubuntu 16.04
Für eine erfolgreiche Kompilierung von LibreSwan müssen die folgenden Pakete unter Ubuntu installiert werden. Im Quellcode wird auch eine kurze Information gegeben, wie man Plugins/Features und Befehle aktiviert oder deaktiviert, wenn man LibreSwan installiert.
apt-get -y update
apt-get install libunbound-dev libevent-dev libsystemd-dev libnss3-dev libnspr4-dev pkg-config \ libpam0g-dev libcap-ng-dev libcap-ng-utils libselinux1-dev libcurl4-nss-dev flex bison gcc make libnss3-tools
Die Installation der erforderlichen Pakete wird unten gezeigt.
Der neueste Quellcode des IPsec-Tools wird mit dem wget-Befehl heruntergeladen und mit dem folgenden tar-Befehl extrahiert.
wget https://download.libreswan.org/libreswan-3.20.tar.gz
tar -xzf libreswan-3.20.tar.gz
cd libreswan-3.20
Es ist nicht erforderlich, den Befehl configure auszuführen, führen Sie einfach das make aus Befehl die zwei Möglichkeiten zeigt, LibreSwan wie unten gezeigt zu erstellen.
Führen Sie abschließend make all aus Befehl zum Erstellen von LibreSwan auf der Plattform.
make all
Führen Sie nun make install aus Befehl zum Installieren des IPsec-Programms.
IPsec-Dienst starten
Wie im obigen Screenshot gezeigt, ist es erforderlich, den IPSec-Dienst auf der Ubuntu-Plattform mit dem folgenden Befehl zu aktivieren.
systemctl enable ipsec.service
Es ist erforderlich, die NSS-Kryptobibliothek zu initialisieren, bevor der IPsec-Dienst gestartet wird. Es wird von LibreSwan für die Verwendung des kryptografischen Algorithmus in IPsec VPN verwendet.
IPsec initnss
Starten Sie schließlich den IPSec-Dienst mit dem folgenden Befehl.
ipsec setup start
Führen Sie ipsec status aus Befehl, um die Einstellungen von LibreSwan auf der Ubuntu-Plattform anzuzeigen.
ipsec status
LibreSwan-Konfiguration
In diesem Tutorial wird ein IPsec-VPN zwischen Peers mit einem vorinstallierten Schlüssel und RSA-Schlüsseln (öffentliche/private Schlüsselpaare) eingerichtet. Die Konfiguration beider Peers (links/rechts) ist unten angegeben.
Preshared Key-basiertes VPN
ipsec.conf (configuration file of left VM) ipsec.secrets (configuration file of left VM)
Version 2 192.168.15.145 192.168.15.245:PSK "vpn_psk1.23"
Konfigurationseinstellungen
protostack=netkey
conn vpn_psk
ike=aes256-sha256;modp4096
phase2alg=aes256-sha256;modp4096
left=192.168.15.145
leftsubnet=172.16.10.0/24
rechts=192.168.15.245
rightsubnet=192.169.50.0/24
authby=secret
type=tunnel
auto=start
ipsec.conf (configuration file of right VM) ipsec.secrets (configuration file of right VM)
Version 2 192.168.15.245 192.168.15.145:PSK "vpn_psk123"
Konfigurationseinstellungen
protostack=netkey
conn vpn_psk
ike=aes256-sha256;modp4096
phase2alg=aes256-sha256;modp4096
left=192.168.15.245
leftsubnet=192.169.50.0/24
rechts=192.168.15.145
rightsubnet=172.16.10.0/24
authby=secret
type=tunnel
auto=start
Nachdem Sie die obige Konfiguration in den Dateien ipsec.conf und ipsec.secrets festgelegt haben, führen Sie den folgenden Befehl auf beiden Seiten aus, um den IPSec-Aushandlungsprozess zu starten.
ipsec restart
Status des VPN mit vorinstalliertem Schlüssel
Die Ausgabe von ipsec status und setkey -D Befehle sind unten gezeigt.
ipsec status
setkey -D
RSA (öffentlicher/privater) Schlüssel basiertes VPN
Es ist erforderlich, RSA-Schlüssel für beide Computer zu generieren und sie in die Konfigurationsdatei aufzunehmen. Die reduzierte Version eines RSA-Schlüssels wird in diesem Tutorial gezeigt. Stellen Sie außerdem sicher, dass der enthaltene öffentliche Schlüssel einzeilig ist.
Generierung von RSA-Schlüsseln
Wie unten gezeigt, werden die folgenden Befehle verwendet, um Schlüssel für beide Peers zu generieren.
ipsec newhostkey --output /etc/ipsec.secrets
Der generierte öffentliche Schlüssel wird wie unten gezeigt zur Datei ipsec.secrets hinzugefügt.
In ähnlicher Weise werden RSA-Schlüssel mit demselben Befehl für die rechte Maschine generiert, wie im folgenden Schnappschuss gezeigt.
Wie oben gezeigt, enthalten Schlüsselgenerierungsbefehle automatisch den öffentlichen RSA-Schlüssel in /etc/ipsec.secrets auf beiden Peer-Maschinen. Der private Schlüssel von RSA wird in der Datenbank von NSS unter /etc/ipsec.d/*.db gespeichert Dateien.
Nach dem Generieren von RSA-Schlüsseln ändert der nächste Schritt die Konfiguration beider Maschinen in der Datei ipsec.conf.
ipsec.conf (configuration file of left VM)
Version 2
Konfigurationseinstellungen
protostack=netkey
conn vpn_rsa
ike=aes256-sha256;modp4096
phase2alg=aes256-sha256;modp4096
left=192.168.15.145
leftsubnet=172.16.10.0/24
rechts=192.168.15.245
rightsubnet=192.169.50.0/24
authby=rsasig
leftrsasigkey=0sAQPgMUjAb8QOQaJ1FTkIQf3f[........]ALQNXUf$
rightrsasigkey=0sAQOs7aPh6LppUGgC454+W[........]fSd2zQE
type=tunnel
auto=start
ipsec.conf (configuration file of right VM)
Version 2
Konfigurationseinstellungen
protostack=netkey
conn vpn_rsa
ike=aes256-sha256;modp4096
phase2alg=aes256-sha256;modp4096
left=192.168.15.245
leftsubnet=192.169.50.0/24
rechts=192.168.15.145
rightsubnet=172.16.10.0/24
authby=rsasig
rightrsasigkey=0sAQPgMUjAb8QOQaJ1FTkIQf3f[........]ALQNXUf$
leftrsasigkey=0sAQOs7aPh6LppUGgC454+W[........]fSd2zQE
type=tunnel
auto=start
Nach dem Ändern der LibreSwan-Konfigurationsdateien besteht der nächste Schritt darin, den IPsec-Dienst auf beiden Computern mit dem folgenden Befehl neu zu starten.
ipsec restart
Der Status des IPsec-VPN auf dem linken Gerät wird im folgenden Screenshot angezeigt. Es zeigt, dass RSASIG wird in der Richtlinie verwendet, um die Peers des IPsec-Tunnels zu authentifizieren.
Der Zweck dieses Tutorials ist es, „LibreSwan“ zu erkunden, das die Implementierung des IPsec-Protokolls bereitstellt. Es ist in RedHat-Distributionen verfügbar, kann jedoch problemlos für andere Plattformen wie Ubuntu/Debian kompiliert werden. In diesem Artikel wird das erste LibreSwan-Tool aus der Quelle erstellt und dann zwei VPNs mit vorinstallierten und RSA-Schlüsseln zwischen den Gateway-Geräten konfiguriert.