Ú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.