GNU/Linux >> Znalost Linux >  >> Ubuntu

IPsec VPN založená na StrongSwan využívající certifikáty a předem sdílený klíč na Ubuntu 16.04

Úvod

V tomto článku se zaměřujeme na open source implementaci protokolu IPsec. Bezpečnost síťové vrstvy je zajištěna pomocí protokolu IPsec, který se skládá z následujících dvou komponent.

  • Authentication Header (AH) 
  • Encapsulating Security Payload (ESP)

Integrita a ověřování paketů je zajištěno pomocí AH, komponenta ESP poskytuje funkce důvěrnosti a zabezpečení. Open source implementace IPsec,  StrongSwan (Strong Secure WAN), je známý nástroj, který podporuje obě verze internetové výměny klíčů (IKE v1/2)/. Sdílení klíčů nebo internetová výměna klíčů je součástí IPSec VPN (virtuální privátní síť). Mechanismus IKE se používá ke sdílení klíče mezi dvěma stranami pro šifrování dat v protokolu ESP. Během kroku IKE se používají algoritmy šifrování a integrity (jako je AES, SHA atd.) OpenSSL a kryptografických knihoven. V hlavní části IPSec (ESP &AH) je však použita implementace bezpečnostního algoritmu v jádře Linuxu. Strongswan.

Funkce Strongswan

  • Podpora ověřování založeného na předsdíleném klíči.
  • Pro ověřování jsou podporovány certifikáty ve formátu X.509.
  • Jediný démon, který podporuje IKE v1/v2.
  • Pluginy a knihovny třetích stran lze snadno integrovat.
  • Hardwarové tokeny jsou podporovány pomocí projektu openSC.

Strongswan podporuje Gateway-to-Gateway a Road warrior VPN. Síťový provoz je šifrován nebo dešifrován na zařízeních brány organizace v síti VPN typu site-to-site. Od zařízení brány ke koncovému uživateli/klientskému počítači je však vytvořen druhý zabezpečený kanál.

V tomto článku bude nástroj strongSwan nainstalován na Ubuntu 16.04 (LTS), ukážu integraci OpenSC pro hardwarové tokeny a nakonec vytvoření tunelu gateway-to-gateway pomocí předsdíleného klíče a x.509 certifikátů . Hardwarové tokeny nebo hardwarové bezpečnostní moduly  (HSM), jako jsou USB a čipové karty, lze se službou Strongswan použít k uložení kryptografických klíčů (veřejných a soukromých) a certifikátů. Podpora hardwarových tokenů v strongswanu je poskytována pomocí OpenSC (sada nástrojů a knihoven), což je projekt s otevřeným zdrojovým kódem. Struktura souborů založená na PKCS#15 a přístup k čipové kartě pomocí PKCS#11 API zajišťuje také nástroj OpenSC. OpenSC podporuje následující čipové karty.

  • WestCOS
  • Nastavit COS
  • CardOs
  • STARCOS
  • ASEPCOS

Instalace Strongswan (binární a zdrojový kód)

Binární balíčky (deb/rpm) strongswanu jsou dostupné téměř ve všech široce používaných distribucích Linuxu. Instalace strongswanu pomocí binárního a zdrojového kódu (s požadovanými funkcemi) bude podrobně vysvětlena v tomto článku.

Binární balíček strongswan lze nainstalovat pomocí následujícího příkazu na Ubuntu 16.04 LTS.

aptitude install strongswan

Dostupné pluginy strongswan v úložišti Ubuntu jsou uvedeny níže.

Po instalaci na platformu Ubuntu jsou konfigurační soubory a složky (ipsec.conf, ipsec.secrets, ipsec.d, strongswan.conf, strongswan.d) uloženy v adresáři /etc.

Kompilace Strongswan pomocí zdroje

  • Opensc (pro podporu HSM v silné labuti).
  • PC/SC  (Je vyžadováno pro podporu čtečky čipových karet na platformě Ubuntu).
  • Knihovna GMP (vyžadovaná pro matematické operace v strongswan).
  • Nástroj OpenSSL (dobře známá implementace kryptografických algoritmů, jako je AES, SHA1).
  • PKCS (standardy pro šifrování veřejného klíče) 1,7,8,11,12.

V tomto článku bude nástroj PCSC-Lite nainstalován spolu s opensc na platformě Ubuntu, aby byla přidána podpora pro čtečky čipových karet. PCSC-Lite se doporučuje pro čtečky CCID.

Před zahájením kompilace strongswan spusťte následující příkazy a nainstalujte nezbytný software.

1. Instalace Opensc

aptitude install opensc

2. Instalace knihovny GMP

aptitude install libgmp10

Nainstalujte vývojovou knihovnu GMP.

aptitude install libgmp-dev

OpenSSL libcrypto se nainstaluje pomocí následujícího příkazu.

apt-get install libssl-dev

Kroky kompilace

Přejděte na /usr/src/ a stáhněte si nejnovější verzi strongswanu pomocí příkazu wget.

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

Rozbalte komprimovaný soubor a přejděte do extrahované složky a spusťte konfigurační skript.

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

Spusťte konfigurační skript pro kontrolu závislostí strongswanu. Podpora HSM je již povolena v nejnovější verzi pro strongswan, jak je uvedeno níže.

Spusťte konfigurační skript, použijte předponu /usr/local a povolte podporu openssl.

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

Následující snímek ukazuje, že konfigurační skript nevygeneroval žádnou chybu, protože všechny požadované závislosti již byly v systému nainstalovány.

Spuštěním následujících dvou příkazů zkompilujte a nainstalujte strongswan pod /usr/local adresář.

make

make install

Kompilace a instalace strongswanu na platformě Ubuntu je dokončena, několik konfiguračních souborů (strongswan.conf, ipsec.conf a ipsec.secrets ) a složky (strongswan.d,ipsec.d ) jsou zkopírovány do /usr/local/etc cesta. Konfigurace zásady VPN je umístěna v souboru ipsec.conf soubor a důvěrná tajemství jsou uložena v ipsec.secrets soubor. Konfigurace pluginu Strongswan je uložena v strongswan.d adresář.

Strongswan podporuje jak transportní, tak tunelové VPN. V tunelovém režimu je zajištěno zabezpečení kanálu mezi jednotlivými místy a funguje to s dalšími prodejci, jako jsou zařízení Cisco, huawei a Juniper.

Site-to-Site VPN

Následující obrázek ukazuje umístění zařízení brány VPN založené na strongswan v síti. Mezi privátními sítěmi 192.168.223.0/24 a 192.168.222.0/24 organizace bude vytvořen zabezpečený komunikační kanál.

Před použitím IPsec mezi soukromou sítí A a B se ujistěte, že směrování mezi bránami VPN organizace funguje tak, že brána VPN na A strana může pingnout vzdálený počítač VPN (B ), což zajišťuje, že síťové připojení je v pořádku.

Jak je znázorněno níže, výchozí konfigurace nástroje strongswan je uvnitř  /usr/local/etc/ adresář.

Tunel založený na předsdíleném klíči

V prvním případě se mezi zařízeními brány vytvoří sdílená tajná VPN. Dobře známý algoritmus sdílení klíčů Diffie-Hellman používá strongswan pro vzájemnou autentizaci. Podrobnosti o tom, jak protokol IPsec funguje, jsou k dispozici na následujícím odkazu.

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

Konfigurace VPN:

(strana A )

Hlavní konfigurace zásad VPN Strongswan je v souboru  ipsec.conf. Níže uvedené informace naleznete v tomto konfiguračním souboru.

  • Verze IKE
  • Typ tunelu
  • zdrojové a cílové brány
  • soukromé sítě VPN

ipsec.conf ze strany A je uveden níže.

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

Tajné informace IPsec (sdílené klíče, heslo soukromého klíče, PIN k odemknutí hsm) jsou uloženy v ipsec.secrets soubor . Jak je uvedeno níže, tajné klíče mezi oběma stranami VPN jsou „test12345“.

192.168.1.101 192.168.1.102 : PSK 'test12345'

(strana B)

Konfigurace v souborech ipsec.conf a ipsec.secrets na vzdálené straně bude opakem místního webu, jak je uvedeno níže.

Obsah souboru ipsec.conf je uveden níže.

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

Soubor ipsec.secrets obsahuje sdílený tajný klíč na vzdálené straně.

192.168.1.102 192.168.1.101 : PSK 'test12345'

Spusťte démona strongswan (charon ) pomocí následujícího příkazu po nastavení konfiguračního souboru na obě strany.

restart ipsec

Následující příkaz zobrazuje stav vytvořené VPN na zařízeních.

ipsec statusall

Stav tunelu na obou stranách (místní i vzdálené) je uveden níže.

Tento příkaz pro Linux ukazuje zásady a stavy tunelu IPsec.

ip xfrm state
ip xfrm policy

Jak je ukázáno ve výše uvedeném výstupu příkazu, citlivé informace esp/hmac (klávesy) jsou také zobrazeny příkazem ip xfrm.

Tunel založený na certifikátu X.509

V tunelu založeném na certifikátu X.509 (Public Key Authentication) je nutné vygenerovat certifikáty pro certifikační autoritu (CA), klienta A a B.

Generování certifikátu CA s vlastním podpisem pomocí nástroje PKI společnosti strongswan je znázorněno na následujících snímcích obrazovky.

Vstupte do /usr/local/etc/ipsec.d cestu a spusťte následující příkazy.

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    

Generování certifikátů pro klienta A je uvedeno níže.

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

Podobně pár veřejného/soukromého klíče a certifikát vygenerovaný pro klienta B.

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

Po úspěšném vygenerování certifikátů CA a klienta je dalším krokem změna konfigurace ipsec.conf a ipsec.secrets. Další podrobnosti o změnách v souboru ipsec.conf a souboru secrets najdete v dokumentaci k strongswanu.

Níže je uveden obsah souborů ipsec.conf a ipsec.secrets pro stranu A.

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

Konfigurace strany B je také uvedena níže.

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

Spusťte ipsec restart příkaz použít výše uvedené změny a zkontrolovat stav tunelu vytvořeného pomocí certifikátů.

ipsec statusall    # at side A

ipsec statusall    # at side B

Nakonec byla úspěšně vytvořena VPN založená na certifikátu pomocí nástroje strongswan.


Ubuntu
  1. Jak nainstalovat a nakonfigurovat Algo VPN Server na Ubuntu 20.04

  2. Pomocí Ansible nainstalujte a nakonfigurujte Elasticsearch na Ubuntu 20.04

  3. Jak nainstalovat a nakonfigurovat strongSwan VPN na Ubuntu 18.04

  1. Jak vytvořit zásobník LAMP založený na dockeru pomocí dockeru na Ubuntu 20.04

  2. Jak vytvořit VPN na Ubuntu 20.04 pomocí Wireguard

  3. Jak nastavit IKEv2 VPN pomocí Strongswan a Lets Encrypt na CentOS 8

  1. Nastavte nového uživatele a ověření klíče SSH. pomocí Ansible na Ubuntu 18.04

  2. Ipsec VPN založená na Libreswanu pomocí předsdílených klíčů a klíčů RSA na Ubuntu

  3. Jak nastavit VPN server pomocí Pritunl na Ubuntu 18.04 LTS