GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

StrongSwan-basiertes IPsec-VPN mit Zertifikaten und vorinstalliertem Schlüssel auf Ubuntu 16.04

Einführung

In diesem Artikel konzentrieren wir uns auf die Open-Source-Implementierung des IPsec-Protokolls. Die Sicherheit der Vermittlungsschicht wird durch die Verwendung des IPsec-Protokolls gewährleistet, das aus den folgenden zwei Komponenten besteht.

  • Authentifizierungs-Header (AH) 
  • Encapsulating Security Payload (ESP)

Die Paketintegrität und Authentifizierung wird durch die Verwendung von AH gewährleistet, die ESP-Komponente bietet Vertraulichkeits- und Sicherheitsfunktionen. Die Open-Source-Implementierung von IPsec,  StrongSwan (Strong Secure WAN), ist ein bekanntes Tool, das beide Versionen des Internet-Schlüsselaustauschs (IKE v1/2)/ unterstützt. Key Sharing oder Internet Key Exchange ist Teil des IPSec VPN (Virtual Private Network). Der IKE-Mechanismus wird verwendet, um den Schlüssel zwischen zwei Parteien für die Verschlüsselung von Daten im ESP-Protokoll zu teilen. Verschlüsselungs- und Integritätsalgorithmen (wie AES, SHA usw.) von OpenSSL und Kryptobibliotheken werden während des IKE-Schritts verwendet. Im Hauptteil von IPSec (ESP &AH) wird jedoch die Linux-Kernel-Implementierung des Sicherheitsalgorithmus verwendet. Starker Schwan.

Strongswan-Funktionen

  • Unterstützung für Pre-Shared-Key-basierte Authentifizierung.
  • Zertifikate im X.509-Format werden zur Authentifizierung unterstützt.
  • Ein einzelner Daemon, der sowohl IKE v1/v2 unterstützt.
  • Plugins und Bibliotheken von Drittanbietern können einfach integriert werden.
  • Hardware-Token werden durch die Verwendung des openSC-Projekts unterstützt.

Gateway-to-Gateway und Road Warrior VPN werden von Strongswan unterstützt. Der Netzwerkverkehr wird an Gateway-Geräten einer Organisation in einem Site-to-Site-VPN verschlüsselt oder entschlüsselt. Es wird jedoch ein zweiter sicherer Kanal vom Gateway-Gerät zum Endnutzer/Client-Computer eingerichtet.

In diesem Artikel wird das strongSwan-Tool auf Ubuntu 16.04 (LTS) installiert, ich werde die Integration von OpenSC für Hardware-Token und schließlich die Erstellung eines Gateway-zu-Gateway-Tunnels mit einem vorinstallierten Schlüssel und x.509-Zertifikaten zeigen . Hardware-Token oder Hardware-Sicherheitsmodule (HSM) wie USB und Smartcards können mit Strongswan verwendet werden, um die kryptografischen Schlüssel (öffentlich und privat) und Zertifikate zu speichern. Die Hardware-Token-Unterstützung in Strongswan wird über OpenSC (Satz von Tools und Bibliotheken), ein Open-Source-Projekt, bereitgestellt. Die PKCS#15-basierte Dateistruktur und der Zugriff auf die Smartcard über die PKCS#11-API werden ebenfalls vom OpenSC-Tool bereitgestellt. Die folgenden Smartcards werden von openSC unterstützt.

  • WestCOS
  • SETCOS
  • CardOs
  • STARCOS
  • ASEPCOS

Strongswan-Installation (Binär- und Quellcode)

Binärpakete (deb/rpm ) von strongswan sind in fast allen weit verbreiteten Linux-Distributionen verfügbar. Die Installation von Strongswan mittels Binär- und Quellcode (mit gewünschten Features) wird in diesem Artikel ausführlich erklärt.

Das Binärpaket von strongswan kann mit dem folgenden Befehl unter Ubuntu 16.04 LTS installiert werden.

aptitude install strongswan

Die verfügbaren Strongswan-Plug-ins im Ubuntu-Repository sind unten aufgeführt.

Nach der Installation auf der Ubuntu-Plattform werden die Konfigurationsdateien und -ordner (ipsec.conf, ipsec.secrets, ipsec.d,strongswan.conf, strongswan.d) im Verzeichnis /etc gespeichert.

Strongswan-Kompilierung mit Source

  • Opensc (für die Unterstützung von HSM im Strongswan).
  • PC/SC  (Es ist für die Unterstützung von Smartcard-Lesegeräten auf der Ubuntu-Plattform erforderlich).
  • GMP-Bibliothek (erforderlich für mathematische Operationen in Strongswan).
  • OpenSSL-Tool (bekannte Implementierung von Kryptografiealgorithmen wie AES,SHA1).
  • PKCS (Public Key Cryptograph Standards) 1,7,8,11,12.

In diesem Artikel wird das PCSC-Lite-Tool zusammen mit opensc auf der Ubuntu-Plattform installiert, um Unterstützung für Smartcard-Lesegeräte hinzuzufügen. PCSC-Lite wird für CCID-Lesegeräte empfohlen.

Führen Sie die folgenden Befehle aus, um die erforderliche Software zu installieren, bevor wir mit der Kompilierung von strongswan beginnen.

1. Opensc-Installation

aptitude install opensc

2. Installation der GMP-Bibliothek

aptitude install libgmp10

Entwicklungsbibliothek von GMP installieren.

aptitude install libgmp-dev

OpenSSL libcrypto wird mit folgendem Befehl installiert.

apt-get install libssl-dev

Kompilierungsschritte

Gehen Sie zu /usr/src/ Ordner und laden Sie die neueste Version von Strongswan mit dem Befehl wget herunter.

cd /usr/src
wget https://download.strongswan.org/strongswan-5.5.0.tar.gz

Extrahieren Sie die komprimierte Datei und gehen Sie in den extrahierten Ordner, um das Konfigurationsskript auszuführen.

tar –xzf strongswan-5.5.0.tar.gz
cd strongswan-5.5.0

Führen Sie das Konfigurationsskript aus, um die Abhängigkeiten von strongswan zu überprüfen. Die HSM-Unterstützung ist bereits in der neuesten Version von Strongswan aktiviert, wie unten gezeigt.

Führen Sie das Konfigurationsskript aus, verwenden Sie das Präfix /usr/local und aktivieren Sie die Openssl-Unterstützung.

./configure --prefix=/usr/local  --enable-openssl

Der folgende Schnappschuss zeigt, dass das Konfigurationsskript keinen Fehler generiert hat, da alle erforderlichen Abhängigkeiten bereits auf dem System installiert wurden.

Führen Sie die folgenden zwei Befehle aus, um Strongswan unter /usr/local zu kompilieren und zu installieren Verzeichnis.

make

make install

Die Kompilierung und Installation von strongswan auf der Ubuntu-Plattform ist abgeschlossen, mehrere Konfigurationsdateien (strongswan.conf, ipsec.conf und ipsec.secrets ) und Ordner (strongswan.d,ipsec.d ) werden unter /usr/local/etc kopiert Weg. Die Konfiguration der VPN-Richtlinie wird in der ipsec.conf abgelegt Datei und vertrauliche Geheimnisse werden in ipsec.secrets gespeichert Datei. Die Strongswan-Plugin-Konfiguration wird in strongswan.d gespeichert Verzeichnis.

Sowohl Transport- als auch Tunnel-VPNs werden von Strongswan unterstützt. Im Tunnelmodus wird Standort-zu-Standort-Sicherheit des Kanals bereitgestellt und er funktioniert mit Geräten anderer Anbieter wie Cisco, Huawei und Juniper.

Site-to-Site-VPN

Die folgende Abbildung zeigt die Platzierung eines Strongswan-basierten VPN-Gateway-Geräts in einem Netzwerk. Zwischen den privaten Netzwerken 192.168.223.0/24 und 192.168.222.0/24 der Organisation wird ein sicherer Kommunikationskanal eingerichtet.

Stellen Sie vor der Verwendung von IPsec zwischen den privaten Netzwerken A und B sicher, dass das Routing zwischen VPN-Gateways erfolgt der Organisation funktioniert, sodass das VPN-Gateway bei A Seite kann den VPN-Rechner der entfernten Seite pingen (B ), wodurch sichergestellt wird, dass die Netzwerkverbindung in Ordnung ist.

Wie unten gezeigt, befindet sich die Standardkonfiguration des Strongswan-Tools im Verzeichnis  /usr/local/etc/ Verzeichnis.

Pre-shared-key-basierter Tunnel

Im ersten Fall wird zwischen Gateway-Geräten ein auf gemeinsamen geheimen Daten basierendes VPN erstellt. Der bekannte Key-Sharing-Algorithmus Diffie-Hellman wird von strongswan zur gegenseitigen Authentifizierung verwendet. Details zur Funktionsweise des IPsec-Protokolls finden Sie unter folgendem Link.

http://www.unixwiz.net/techtips/iguide-ipsec.html

Konfiguration des VPN:

(A-Seite )

Die Hauptkonfiguration einer Strongswan-VPN-Richtlinie befindet sich in der Datei ipsec.conf. In dieser Konfigurationsdatei finden sich Informationen wie die unten angegebenen.

  • IKE-Version
  • Tunneltyp
  • Quell- und Ziel-Gateways
  • private VPN-Netzwerke

ipsec.conf von A-Seite ist unten angegeben.

config setup
        charondebug="all"
        uniqueids=yes
        strictcrlpolicy=no
conn %default
conn tunnel #
        left=192.168.1.101
        leftsubnet=192.168.223.0/24
        right=192.168.1.102
        rightsubnet=192.168.222.0/24
        ike=aes256-sha2_256-modp1024!
        esp=aes256-sha2_256!
        keyingtries=0
        ikelifetime=1h
        lifetime=8h
        dpddelay=30
        dpdtimeout=120
        dpdaction=restart
        authby=secret
        auto=start
        keyexchange=ikev2
        type=tunnel

IPsec-Geheimnisse (gemeinsame Schlüssel, Passwort des privaten Schlüssels, PIN zum Entsperren von hsm) werden in ipsec.secrets gespeichert Datei . Wie unten gezeigt, lautet das Shard-Secret zwischen beiden VPN-Parteien „test12345“.

192.168.1.101 192.168.1.102 : PSK 'test12345'

(B-Seite)

Die Konfiguration in den Dateien ipsec.conf und ipsec.secrets auf der entfernten Seite ist die Umkehrung der lokalen Seite, wie unten angegeben.

Der Inhalt der Datei ipsec.conf ist unten angegeben.

config setup
        charondebug="all"
        uniqueids=yes
        strictcrlpolicy=no
conn %default
conn tunnel #
        left=192.168.1.102
        leftsubnet=192.168.222.0/24
        right=192.168.1.101
        rightsubnet=192.168.223.0/24
        ike=aes256-sha2_256-modp1024!
        esp=aes256-sha2_256!
        keyingtries=0
        ikelifetime=1h
        lifetime=8h
        dpddelay=30
        dpdtimeout=120
        dpdaction=restart
        authby=secret
        auto=start
        keyexchange=ikev2
        type=tunnel

Die ipsec.secrets-Datei enthält das gemeinsame Geheimnis auf der Remote-Seite.

192.168.1.102 192.168.1.101 : PSK 'test12345'

Starten Sie den Strongswan-Daemon (charon ) mit dem folgenden Befehl, nachdem Sie die Konfigurationsdatei auf beiden Seiten eingerichtet haben.

ipsec-Neustart

Der folgende Befehl zeigt den Status des erstellten VPNs auf den Geräten an.

ipsec statusall

Der Status des Tunnels auf beiden Seiten (lokal und remote) wird unten angezeigt.

Dieser Linux-Befehl zeigt die Richtlinien und Zustände des IPsec-Tunnels an.

ip xfrm state
ip xfrm policy

Wie in der obigen Befehlsausgabe gezeigt, werden vertrauliche Informationen, esp/hmac (Schlüssel), auch vom Befehl ip xfrm angezeigt.

X.509-Zertifikat-basierter Tunnel

Im X.509-Zertifikat (Public Key Authentication)-basierten Tunnel ist es erforderlich, Zertifikate für die Zertifizierungsstelle (CA), Client A und B zu generieren.

Das Generieren eines selbstsignierten CA-Zertifikats mit dem PKI-Dienstprogramm von strongswan wird in den folgenden Screenshots gezeigt.

Rufen Sie /usr/local/etc/ipsec.d auf Pfad und führen Sie die folgenden Befehle aus.

cd /usr/local/etc/ipsec.d
ipsec pki --gen --type rsa --size 4096 --outform pem > private/strongswanKey.pem
ipsec pki --self --ca --lifetime 3650 --in private/strongswanKey.pem --type rsa --dn "C=CH, O=strongSwan, CN=Root CA" --outform pem > cacerts/strongswanCert.pem    

Die Generierung der Zertifikate für Client A ist unten dargestellt.

ipsec pki --gen --type rsa --size 2048 --outform pem > private/client1Key.pem
chmod 600 private/client1Key.pem
ipsec pki --pub --in private/client1Key.pem --type rsa | ipsec pki --issue --lifetime 730 --cacert cacerts/strongswanCert.pem --cakey private/strongswanKey.pem --dn "C=CH, O=strongSwan, CN=device1" --san device1 --flag serverAuth --flag ikeIntermediate --outform pem > certs/client1Cert.pem

Ebenso werden ein öffentliches/privates Schlüsselpaar und ein Zertifikat für den Client B generiert.

ipsec pki --gen --type rsa --size 2048 --outform pem > private/client2Key.pem
chmod 600 private/client2Key.pem
ipsec pki --pub --in private/client2Key.pem --type rsa | ipsec pki --issue --lifetime 730 --cacert cacerts/strongswanCert.pem --cakey private/strongswanKey.pem --dn "C=CH, O=strongSwan, CN=device2" --san device2 --flag serverAuth --flag ikeIntermediate --outform pem > certs/client2Cert.pem

Nach erfolgreicher Generierung von CA- und Client-Zertifikaten besteht der nächste Schritt darin, die Konfiguration von ipsec.conf und ipsec.secrets zu ändern. Weitere Einzelheiten zu den Änderungen in ipsec.conf und der Secrets-Datei finden Sie in der Strongswan-Dokumentation.

Der Inhalt von ipsec.conf &ipsec.secrets für die A-Seite ist unten angegeben.

config setup
        charondebug="all"
        uniqueids=yes
        strictcrlpolicy=no
conn %default
conn tunnel #
        left=192.168.1.101
        leftsubnet=192.168.223.0/24
        right=192.168.1.102
        rightsubnet=192.168.222.0/24
        ike=aes256-sha2_256-modp1024!
        esp=aes256-sha2_256!
        keyingtries=0
        ikelifetime=1h
        lifetime=8h
        dpddelay=30
        dpdtimeout=120
        dpdaction=restart
        #authby=secret
        auto=start
        keyexchange=ikev2
        type=tunnel
        leftcert=client1Cert.pem
        leftid="C=CH, O=strongSwan, CN=device1"
        rightid="C=CH, O=strongSwan, CN=device2"

#192.168.1.101 192.168.1.102 : PSK 'test12345'
: RSA client1Key.pem

Die Konfiguration der B-Seite ist ebenfalls unten angegeben.

config setup
        charondebug="all"
        uniqueids=yes
        strictcrlpolicy=no
conn %default
conn tunnel #
        left=192.168.1.102
        leftsubnet=192.168.222.0/24
        right=192.168.1.101
        rightsubnet=192.168.223.0/24
        ike=aes256-sha2_256-modp1024!
        esp=aes256-sha2_256!
        keyingtries=0
        ikelifetime=1h
        lifetime=8h
        dpddelay=30
        dpdtimeout=120
        dpdaction=restart
        #authby=secret
        auto=start
        keyexchange=ikev2
        type=tunnel
        leftcert=client2Cert.pem
        leftid="C=CH, O=strongSwan, CN=device2"
        rightid="C=CH, O=strongSwan, CN=device1"


#192.168.1.102 192.168.1.101 : PSK 'test12345'
: RSA client2Key.pem

Führen Sie ipsec-Neustart aus Befehl, um die obigen Änderungen anzuwenden und den Status des mit Zertifikaten erstellten Tunnels zu überprüfen.

ipsec statusall    # at side A

ipsec statusall    # at side B

Schließlich wurde das zertifikatbasierte VPN erfolgreich mit dem Strongswan-Tool erstellt.


Ubuntu
  1. So erstellen Sie einen Docker-basierten LAMP-Stack mit Docker unter Ubuntu 20.04

  2. So erstellen Sie ein VPN unter Ubuntu 20.04 mit Wireguard

  3. So installieren und konfigurieren Sie den Algo VPN-Server unter Ubuntu 20.04

  4. Verwenden von Ansible zum Installieren und Konfigurieren von Elasticsearch unter Ubuntu 20.04

  5. So installieren und konfigurieren Sie strongSwan VPN unter Ubuntu 18.04

So erstellen und führen Sie ein C-Programm mit Ubuntu 20.04 LTS aus

So richten Sie ein VPN unter Ubuntu ein

Sichern und Wiederherstellen von Ubuntu-Anwendungen mit Aptik

Verwenden von Dateien und Ordnern auf dem Desktop-Bildschirm in Ubuntu

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

Freigegebener Ordner in Virtualbox (Ubuntu und Windows 7)?