Úvod
Virtuální privátní síť neboli VPN vám umožňuje bezpečně šifrovat provoz, který prochází nedůvěryhodnými sítěmi, jako jsou sítě v kavárně, na konferenci nebo na letišti.
Internet Key Exchange v2 nebo IKEv2 je protokol, který umožňuje přímé tunelování IPSec mezi serverem a klientem. V implementacích IKEv2 VPN poskytuje IPSec šifrování síťového provozu. IKEv2 je nativně podporován na některých platformách (OS X 10.11+, iOS 9.1+ a Windows 10) bez nutnosti dalších aplikací a celkem hladce zvládá škytavku klientů.
V tomto tutoriálu nastavíte server IKEv2 VPN pomocí StrongSwan na serveru Ubuntu 22.04. Poté se dozvíte, jak se k němu připojit pomocí klientů Windows, macOS, Ubuntu, iOS a Android.
Předpoklady
K dokončení tohoto kurzu budete potřebovat:
- Jeden server Ubuntu 22.04 nakonfigurovaný podle průvodce počátečním nastavením serveru Ubuntu 22.04, včetně
sudo
uživatel bez oprávnění root a firewall.
Krok 1 – Instalace StrongSwan
Nejprve si nainstalujete StrongSwan, open-source IPSec démona, který si nakonfigurujete jako váš VPN server. Nainstalujete také komponentu infrastruktury veřejných klíčů (PKI), abyste mohli vytvořit certifikační autoritu (CA), která poskytne pověření pro vaši infrastrukturu.
Začněte aktualizací místní mezipaměti balíčků:
- sudo apt update
Poté nainstalujte software zadáním:
- sudo apt install strongswan strongswan-pki libcharon-extra-plugins libcharon-extauth-plugins libstrongswan-extra-plugins
Další libcharon-extauth-plugins
balíček se používá k zajištění toho, aby se různí klienti mohli autentizovat k vašemu serveru pomocí sdíleného uživatelského jména a přístupové fráze. libstrongswan-extra-plugins
balíček je součástí dodávky, takže Strongswan podporuje šifrovací sady eliptických křivek, které používají Curve25519
kryptografická sada.
Nyní, když je vše nainstalováno, přejděte k vytváření certifikátů.
Krok 2 – Vytvoření certifikační autority
Server IKEv2 vyžaduje ke své identifikaci klientům certifikát. Chcete-li pomoci vytvořit požadovaný certifikát, strongswan-pki
balíček je dodáván s nástrojem nazvaným pki
vygenerovat certifikační autoritu a certifikáty serveru.
Pro začátek vytvořte několik adresářů pro uložení všech aktiv, na kterých budete pracovat. Struktura adresářů odpovídá některým adresářům v /etc/ipsec.d
, kam nakonec přesunete všechny položky, které vytvoříte:
- mkdir -p ~/pki/{cacerts,certs,private}
Poté uzamkněte oprávnění, aby naše soukromé soubory nemohli vidět ostatní uživatelé:
- chmod 700 ~/pki
Nyní, když máte adresářovou strukturu pro uložení všeho, můžete vygenerovat kořenový klíč. Toto bude 4096bitový klíč RSA, který bude použit k podepsání vašeho certifikátu kořenové certifikační autority.
Klíč vygenerujte provedením těchto příkazů:
- pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/ca-key.pem
Poté můžete přejít k vytvoření vaší kořenové certifikační autority pomocí klíče, který jste právě vygenerovali k podepsání kořenového certifikátu:
- pki --self --ca --lifetime 3650 --in ~/pki/private/ca-key.pem \
- --type rsa --dn "CN=VPN root CA" --outform pem > ~/pki/cacerts/ca-cert.pem
--lifetime 3650
příznak se používá k zajištění platnosti kořenového certifikátu certifikační autority po dobu 10 let. Kořenový certifikát pro autoritu se obvykle nemění, protože by musel být znovu distribuován všem serverům a klientům, kteří na něj spoléhají, takže 10 let je bezpečná výchozí hodnota vypršení platnosti.
Rozlišující jméno můžete změnit (DN) hodnotu na něco jiného, chcete-li. Běžný název (pole CN) je zde pouze indikátor, takže se nemusí shodovat s ničím ve vaší infrastruktuře.
Nyní, když máte spuštěnou kořenovou certifikační autoritu, můžete vytvořit certifikát, který bude server VPN používat.
Krok 3 — Vygenerování certifikátu pro server VPN
Nyní vytvoříte certifikát a klíč pro server VPN. Tento certifikát umožní klientovi ověřit pravost serveru pomocí certifikátu CA, který jsme právě vygenerovali.
Nejprve vytvořte soukromý klíč pro server VPN pomocí následujícího příkazu:
- pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/server-key.pem
Nyní vytvořte a podepište certifikát serveru VPN pomocí klíče certifikační autority, který jste vytvořili v předchozím kroku. Proveďte následující příkaz, ale změňte pole Common Name (CN) a Subject Alternate Name (SAN) na název DNS nebo IP adresu vašeho VPN serveru:
- pki --pub --in ~/pki/private/server-key.pem --type rsa \
- | pki --issue --lifetime 1825 \
- --cacert ~/pki/cacerts/ca-cert.pem \
- --cakey ~/pki/private/ca-key.pem \
- --dn "CN=server_domain_or_IP" --san server_domain_or_IP \
- --flag serverAuth --flag ikeIntermediate --outform pem \
- > ~/pki/certs/server-cert.pem
Poznámka :Pokud místo názvu DNS používáte IP adresu, budete muset zadat více --san
záznamy. Řádek v předchozím příkazovém bloku, kde zadáváte rozlišující název (--dn ...
) bude nutné upravit pomocí zvláštní položky, jako je následující výňatek:
--dn "CN=IP address" --san @IP_address --san IP_address \
Důvod tohoto extra --san @IP_address
Položka spočívá v tom, že někteří klienti při ověřování identity zkontrolují, zda certifikát TLS obsahuje záznam DNS i adresu IP serveru.
--flag serverAuth
volba se používá k označení, že certifikát bude explicitně použit pro autentizaci serveru před vytvořením šifrovaného tunelu. --flag ikeIntermediate
Tato možnost se používá pro podporu starších klientů macOS.
Nyní, když jste vygenerovali všechny soubory TLS/SSL, které StrongSwan potřebuje, můžete soubory přesunout na místo v /etc/ipsec.d
adresář zadáním:
- sudo cp -r ~/pki/* /etc/ipsec.d/
V tomto kroku jste vytvořili pár certifikátů, který bude použit k zabezpečení komunikace mezi klientem a serverem. Certifikáty jste také podepsali klíčem CA, takže klient bude moci ověřit pravost serveru VPN pomocí certifikátu CA. Se všemi těmito certifikáty připravenými jste připraveni přejít ke konfiguraci SrongSwan.
Krok 4 – Konfigurace StrongSwan
StrongSwan má výchozí konfigurační soubor s několika příklady, ale většinu konfigurace budeme muset provést sami. Než začneme od začátku, zálohujme si soubor pro referenci:
- sudo mv /etc/ipsec.conf{,.original}
Vytvořte a otevřete nový prázdný konfigurační soubor pomocí preferovaného textového editoru. Zde použijete nano
:
- sudo nano /etc/ipsec.conf
Poznámka :Při procházení této části při konfiguraci serverové části vaší VPN narazíte na nastavení, která odkazují vlevo a vpravo strany spojení. Při práci s IPSec VPN vlevo side by convention odkazuje na místní systém, který konfigurujete, v tomto případě na server. Direktivy na pravé straně v těchto nastaveních budou odkazovat na vzdálené klienty, jako jsou telefony a další počítače.
Když později v tomto tutoriálu přejdete ke konfiguraci klientů, konfigurační soubory klienta budou samy na sebe odkazovat pomocí různých levých direktivy a na server se bude odkazovat pomocí vpravo vedlejší terminologie.
Nejprve řekneme StrongSwan, aby protokoloval stavy démonů pro ladění a povolil duplicitní připojení. Přidejte do souboru tyto řádky:
/etc/ipsec.confconfig setup
charondebug="ike 1, knl 1, cfg 0"
uniqueids=no
Poté vytvoříme konfigurační sekci pro naši VPN. Také řekneme StrongSwan, aby vytvořil IKEv2 VPN tunely a automaticky načetl tuto konfigurační sekci, když se spustí. Připojte k souboru následující řádky:
/etc/ipsec.conf. . .
conn ikev2-vpn
auto=add
compress=no
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
Nakonfigurujeme také detekci mrtvých vrstevníků, aby se odstranila všechna „visící“ připojení v případě, že se klient neočekávaně odpojí. Přidejte tyto řádky:
/etc/ipsec.conf. . .
conn ikev2-vpn
. . .
dpdaction=clear
dpddelay=300s
rekey=no
Dále nakonfigurujeme parametry IPSec na „levé“ straně serveru. Každý z následujících parametrů zajišťuje, že server je nakonfigurován tak, aby přijímal připojení od klientů a aby se správně identifikoval. Každé z těchto nastavení přidáte do /etc/ipsec.conf
jakmile se seznámíte s tím, co jsou a proč se používají:
left=%any
%any
hodnota zajišťuje, že server bude používat síťové rozhraní, kde přijímá příchozí spojení pro následnou komunikaci s klienty. Pokud například připojujete klienta přes privátní síť, server použije po zbytek připojení privátní IP adresu, na kterou přijímá provoz.leftid=@server_domain_or_IP
Tato možnost řídí název, který server prezentuje klientům. V kombinaci s další možnostíleftcert
,leftid
Tato možnost zajišťuje, že se nakonfigurovaný název serveru a rozlišovací název (DN), který je obsažen ve veřejném certifikátu, shodují.leftcert=server-cert.pem
Tato možnost je cesta k veřejnému certifikátu pro server, který jste nakonfigurovali v kroku 3. Bez něj se server nebude moci ověřit s klienty ani dokončit vyjednávání o nastavení IKEv2.leftsendcert=always
always
hodnota zajišťuje, že každý klient, který se připojí k serveru, vždy obdrží kopii veřejného certifikátu serveru jako součást počátečního nastavení připojení.leftsubnet=0.0.0.0/0
Poslední možnost „levá“ strana, kterou přidáte, informuje klienty o podsítích, které jsou dosažitelné za serverem. V tomto případě0.0.0.0/0
se používá k reprezentaci celé sady IPv4 adres, což znamená, že server řekne klientům, aby ve výchozím nastavení posílali veškerý svůj provoz přes VPN.
Nyní, když jste obeznámeni s každou z relevantních možností „levé“ strany, přidejte je všechny do souboru takto:
/etc/ipsec.conf. . .
conn ikev2-vpn
. . .
left=%any
leftid=@server_domain_or_IP
leftcert=server-cert.pem
leftsendcert=always
leftsubnet=0.0.0.0/0
Poznámka :Při konfiguraci ID serveru (leftid
), uveďte pouze @
znak, pokud bude váš server VPN identifikován názvem domény:
. . . leftid=@vpn.example.com
. . .
Pokud bude server identifikován svou IP adresou, zadejte IP adresu do:
/etc/ipsec.conf . . .
leftid=your_server_ip
. . .
Dále můžeme nakonfigurovat parametry IPSec na „pravé“ straně klienta. Každý z následujících parametrů říká serveru, jak přijímat připojení od klientů, jak se mají klienti ověřovat na serveru a rozsahy privátních IP adres a servery DNS, které budou klienti používat. Přidejte každé z těchto nastavení do /etc/ipsec.conf
jakmile se seznámíte s tím, co jsou a proč se používají:
right=%any
%any
možnost proright
strana připojení dává serveru pokyn, aby přijímal příchozí připojení od libovolného vzdáleného klienta.rightid=%any
Tato možnost zajišťuje, že server neodmítne připojení od klientů, kteří poskytují identitu před vytvořením šifrovaného tunelu.rightauth=eap-mschapv2
Tato možnost konfiguruje metodu ověřování, kterou budou klienti používat k ověření na serveru.eap-mschapv2
se zde používá pro širokou kompatibilitu pro podporu klientů, jako jsou zařízení Windows, macOS a Android.rightsourceip=10.10.10.0/24
Tato možnost dává serveru pokyn, aby přidělil soukromé IP adresy klientům ze zadaného10.10.10.0/24
fond IP adres.rightdns=8.8.8.8,8.8.4.4
Tyto IP adresy jsou veřejnými překladači DNS společnosti Google. Lze je změnit tak, aby používaly jiné veřejné překladače, překladače serveru VPN nebo jakýkoli jiný překladač, ke kterému se klienti dostanou.rightsendcert=never
Tato možnost dává serveru pokyn, že klienti nemusí posílat certifikát, aby se mohli ověřit.
Nyní, když jste obeznámeni s požadovanými možnostmi „pravé“ strany VPN, přidejte následující řádky do /etc/ipsec.conf
:
. . .
conn ikev2-vpn
. . .
right=%any
rightid=%any
rightauth=eap-mschapv2
rightsourceip=10.10.10.0/24
rightdns=8.8.8.8,8.8.4.4
rightsendcert=never
Nyní řekneme StrongSwan, aby požádal klienta o přihlašovací údaje, když se připojí:
/etc/ipsec.conf. . .
conn ikev2-vpn
. . .
eap_identity=%identity
Nakonec přidejte následující řádky pro podporu klientů Linux, Windows, macOS, iOS a Android. Tyto řádky specifikují různé algoritmy pro výměnu klíčů, hašování, ověřování a šifrování (běžně označované jako Cipher Suites ), který StrongSwan umožní různým klientům používat:
/etc/ipsec.conf. . .
conn ikev2-vpn
. . .
ike=chacha20poly1305-sha512-curve25519-prfsha512,aes256gcm16-sha384-prfsha384-ecp384,aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024!
esp=chacha20poly1305-sha512,aes256gcm16-ecp384,aes256-sha256,aes256-sha1,3des-sha1!
Každá podporovaná šifrovací sada je od ostatních oddělena čárkou. Například chacha20poly1305-sha512-curve25519-prfsha512
je jedna sada a aes256gcm16-sha384-prfsha384-ecp384
Je další. Šifrovací sady, které jsou zde uvedeny, jsou vybrány tak, aby zajistily co nejširší rozsah kompatibility mezi klienty Windows, macOS, iOS, Android a Linux.
Kompletní konfigurační soubor by měl vypadat takto:
/etc/ipsec.confconfig setup
charondebug="ike 1, knl 1, cfg 0"
uniqueids=no
conn ikev2-vpn
auto=add
compress=no
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
dpdaction=clear
dpddelay=300s
rekey=no
left=%any
leftid=@server_domain_or_IP
leftcert=server-cert.pem
leftsendcert=always
leftsubnet=0.0.0.0/0
right=%any
rightid=%any
rightauth=eap-mschapv2
rightsourceip=10.10.10.0/24
rightdns=8.8.8.8,8.8.4.4
rightsendcert=never
eap_identity=%identity
ike=chacha20poly1305-sha512-curve25519-prfsha512,aes256gcm16-sha384-prfsha384-ecp384,aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024!
esp=chacha20poly1305-sha512,aes256gcm16-ecp384,aes256-sha256,aes256-sha1,3des-sha1!
Jakmile si ověříte, že jste každý řádek přidali správně, uložte a zavřete soubor. Pokud jste použili nano
, udělejte to stisknutím CTRL + X
, Y
a poté ENTER
.
Nyní, když jste nakonfigurovali parametry VPN, můžete přejít k vytvoření účtu, aby se uživatelé mohli připojit k serveru.
Krok 5 — Konfigurace ověřování VPN
Váš server VPN je nyní nakonfigurován tak, aby přijímal připojení klientů, ale zatím nejsou nakonfigurovány žádné přihlašovací údaje. Ve speciálním konfiguračním souboru s názvem ipsec.secrets
budete muset nakonfigurovat několik věcí :
- Musíte společnosti StrongSwan sdělit, kde najde soukromý klíč pro náš certifikát serveru, aby se server mohl ověřit u klientů.
- Musíte také nastavit seznam uživatelů, kteří se budou moci připojit k síti VPN.
Otevřeme soubor secrets pro úpravy:
- sudo nano /etc/ipsec.secrets
Nejprve sdělte StrongSwanu, kde najde soukromý klíč a jak jej analyzovat.
/etc/ipsec.secrets: RSA "server-key.pem"
Ujistěte se, že řádek začíná :
znak a že za ním je mezera, takže celý řádek zní : RSA "server-key.pem"
.
Poté definujete přihlašovací údaje uživatele. Můžete si vytvořit libovolnou kombinaci uživatelského jména nebo hesla, která se vám líbí:
/etc/ipsec.secretsyour_username : EAP "your_password"
Uložte a zavřete soubor. Nyní, když jste dokončili práci s parametry VPN, restartujte službu VPN, aby byla použita naše konfigurace:
- sudo systemctl restart strongswan-starter
Nyní, když je server VPN plně nakonfigurován s možnostmi serveru i uživatelskými pověřeními, je čas přejít ke konfiguraci nejdůležitější části:brány firewall.
Krok 6 — Konfigurace brány firewall a předávání IP adresy jádra
Po dokončení konfigurace StrongSwan musíte nakonfigurovat bránu firewall tak, aby umožňovala průchod a předávání provozu VPN.
Pokud jste postupovali podle základního kurzu počátečního nastavení serveru, měli byste mít povolenou bránu firewall UFW. Pokud ještě nemáte nakonfigurované UFW, měli byste začít přidáním pravidla povolujícího připojení SSH přes bránu firewall, aby se vaše aktuální relace neuzavřela, když povolíte UFW:
- sudo ufw allow OpenSSH
Poté povolte bránu firewall zadáním:
- sudo ufw enable
Poté přidejte pravidlo povolující provoz UDP na standardní porty IPSec, 500
a 4500
:
- sudo ufw allow 500,4500/udp
Dále otevřete jeden z konfiguračních souborů UFW a přidáte několik nízkoúrovňových zásad pro směrování a předávání paketů IPSec. Než to však uděláte, musíte zjistit, které síťové rozhraní na našem serveru se používá pro přístup k internetu. Najděte toto rozhraní dotazem na zařízení spojené s výchozí trasou:
- ip route show default
Vaše veřejné rozhraní by mělo následovat slovo „dev“. Tento výsledek například ukazuje rozhraní s názvem eth0
, který je zvýrazněn v následujícím příkladu:
Outputdefault via your_server_ip dev eth0 proto static
Až budete mít své veřejné síťové rozhraní, otevřete /etc/ufw/before.rules
soubor ve vašem textovém editoru. Pravidla v tomto souboru jsou přidána do firewallu před zbývajícími obvyklými vstupními a výstupními pravidly. Používají se ke konfiguraci překladu síťových adres (NAT), aby server mohl správně směrovat připojení do az klientů a Internetu.
- sudo nano /etc/ufw/before.rules
V horní části souboru (před *filter
řádek), přidejte následující konfigurační blok. Změňte každou instanci eth0
ve výše uvedené konfiguraci, aby odpovídal názvu rozhraní, který jste našli pomocí ip route
. *nat
linky vytvářejí pravidla, aby firewall mohl správně směrovat a manipulovat provoz mezi klienty VPN a internetem. *mangle
řádek upravuje maximální velikost segmentu paketů, aby se předešlo potenciálním problémům s určitými klienty VPN:
*nat
-A POSTROUTING -s 10.10.10.0/24 -o eth0 -m policy --pol ipsec --dir out -j ACCEPT
-A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE
COMMIT
*mangle
-A FORWARD --match policy --pol ipsec --dir in -s 10.10.10.0/24 -o eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360
COMMIT
*filter
:ufw-before-input - [0:0]
:ufw-before-output - [0:0]
:ufw-before-forward - [0:0]
:ufw-not-local - [0:0]
. . .
Dále za *filter
a řádky definice řetězce, přidejte další blok konfigurace:
. . .
*filter
:ufw-before-input - [0:0]
:ufw-before-output - [0:0]
:ufw-before-forward - [0:0]
:ufw-not-local - [0:0]
-A ufw-before-forward --match policy --pol ipsec --dir in --proto esp -s 10.10.10.0/24 -j ACCEPT
-A ufw-before-forward --match policy --pol ipsec --dir out --proto esp -d 10.10.10.0/24 -j ACCEPT
Tyto řádky říkají firewallu, aby předal provoz ESP (Encapsulating Security Payload), takže klienti VPN se budou moci připojit. ESP poskytuje dodatečné zabezpečení pro naše pakety VPN, když procházejí nedůvěryhodnými sítěmi.
Až budete hotovi, uložte a zavřete soubor, jakmile ověříte, že jste každý řádek přidali správně. Pokud jste použili nano
, udělejte to stisknutím CTRL + X
, Y
a poté ENTER
.
Před restartováním firewallu je také potřeba změnit některé parametry síťového jádra, aby bylo umožněno směrování z jednoho rozhraní do druhého. Soubor, který řídí tato nastavení, se nazývá /etc/ufw/sysctl.conf
. V souboru budete muset nakonfigurovat několik věcí.
Nejprve je třeba zapnout předávání paketů IPv4, aby se provoz mohl přesouvat mezi VPN a veřejným síťovým rozhraním na serveru. Dále zakážete zjišťování Path MTU, abyste předešli problémům s fragmentací paketů. Nakonec nebudeme přijímat přesměrování ICMP ani odesílat přesměrování ICMP, abychom zabránili útokům typu man-in-the-middle.
Otevřete konfigurační soubor parametrů jádra UFW pomocí nano
nebo váš preferovaný textový editor:
- sudo nano /etc/ufw/sysctl.conf
Nyní přidejte následující net/ipv4/ip_forward=1
nastavení na konci souboru pro povolení předávání paketů mezi rozhraními:
. . .
net/ipv4/ip_forward=1
Dále zablokujte odesílání a přijímání paketů přesměrování ICMP přidáním následujících řádků na konec souboru:
/etc/ufw/sysctl.conf. . .
net/ipv4/conf/all/accept_redirects=0
net/ipv4/conf/all/send_redirects=0
Nakonec vypněte zjišťování Path MTU přidáním tohoto řádku na konec souboru:
/etc/ufw/sysctl.conf. . .
net/ipv4/ip_no_pmtu_disc=1
Po dokončení soubor uložte. Nyní můžete povolit všechny své změny vypnutím a opětovným zapnutím brány firewall, protože UFW použije tato nastavení při každém restartu:
- sudo ufw disable
- sudo ufw enable
Budete vyzváni k potvrzení procesu. Zadejte Y
pro opětovné povolení UFW s novým nastavením.
Krok 7 — Testování připojení VPN na Windows, macOS, Ubuntu, iOS a Android
Nyní, když máte vše nastaveno, je čas to vyzkoušet. Nejprve budete muset zkopírovat certifikát CA, který jste vytvořili, a nainstalovat jej na klientská zařízení, která se připojí k VPN. Nejjednodušší způsob, jak to udělat, je přihlásit se na váš server a odeslat obsah souboru certifikátu:
- cat /etc/ipsec.d/cacerts/ca-cert.pem
Uvidíte výstup podobný tomuto:
Output-----BEGIN CERTIFICATE-----
MIIFNDCCAxygAwIBAgIIHCsidG5mXzgwDQYJKoZIhvcNAQEMBQAwODELMAkGA1UE
. . .
H2YUdz8XNHrJHvMQKWFpi0rlEcMs+MSXPFWE3Q7UbaZJ/h8wpSldSUbQRUlphExJ
dJ4PX+MUJO/vjG1/ie6Kh25xbBAc3qNq8siiJZDwrg6vjEK7eiZ1rA==
-----END CERTIFICATE-----
Zkopírujte tento výstup do počítače, včetně -----BEGIN CERTIFICATE-----
a -----END CERTIFICATE-----
řádků a uložte jej do souboru s rozpoznatelným názvem, například ca-cert.pem
. Ujistěte se, že soubor, který vytvoříte, má .pem
rozšíření.
Případně použijte k přenosu souboru do počítače SFTP.
Jakmile budete mít ca-cert.pem
soubor stažený do vašeho počítače, můžete nastavit připojení k VPN.
Připojování ze systému Windows
Existuje několik způsobů, jak importovat kořenový certifikát a nakonfigurovat systém Windows pro připojení k síti VPN. První metoda využívá pro každý krok grafické nástroje. Druhá metoda využívá příkazy PowerShellu, které lze naskriptovat a upravit tak, aby vyhovovaly vaší konfiguraci VPN.
Poznámka: Tyto pokyny byly testovány na instalacích Windows 10 s verzemi 1903 a 1909.
Konfigurace systému Windows pomocí grafických nástrojů
Nejprve importujte kořenový certifikát podle následujících kroků:
-
Stiskněte
WINDOWS+R
vyvolejte Spustit dialogu a zadejtemmc.exe
ke spuštění konzoly Windows Management Console. -
Ze Souboru přejděte do nabídky Přidat nebo odebrat modul snap-in , vyberte Certifikáty ze seznamu dostupných modulů snap-in a klikněte na Přidat .
-
Chceme, aby VPN fungovala s každým uživatelem, takže vyberte Účet počítače a klikněte na Další .
-
Věci konfigurujeme na místním počítači, takže vyberte Místní počítač a poté klikněte na Dokončit .
-
Pod Kořenem konzoly uzel, rozbalte Certifikáty (místní počítač) záznam, rozbalte Důvěryhodné kořenové certifikační úřady a poté vyberte Certifikáty vstup:
-
Z Akce vyberte Všechny úkoly a klikněte na Importovat zobrazíte Průvodce importem certifikátu. Klikněte na Další přesunout přes úvod.
-
Na stránce Soubor k importu stiskněte tlačítko Procházet , ujistěte se, že jste změnili typ souboru z „Certifikát X.509 (.cer; .crt)“ na „Všechny soubory (. )“ a vyberte
ca-cert.pem
soubor, který jste uložili. Poté klikněte na Další . -
Ujistěte se, že Obchod s certifikáty je nastaveno na Důvěryhodné kořenové certifikační úřady a klikněte na Další .
-
Klikněte na Dokončit importovat certifikát.
Poté nakonfigurujte VPN pomocí těchto kroků:
- Spusťte Ovládací panely a poté přejděte do Centra sítí a sdílení .
- Klikněte na Nastavit nové připojení nebo síť a poté vyberte Připojit k pracovišti .
- Vyberte Použít mé internetové připojení (VPN) .
- Zadejte podrobnosti o serveru VPN. Do pole Internetová adresa zadejte název domény nebo IP adresu serveru a poté vyplňte Název cíle s něčím, co popisuje vaše připojení VPN. Poté klikněte na Hotovo .
Konfigurace systému Windows pomocí prostředí PowerShell
Chcete-li importovat certifikát kořenové CA pomocí PowerShellu, nejprve otevřete výzvu PowerShellu s oprávněními správce. Chcete-li tak učinit, klikněte pravým tlačítkem na ikonu nabídky Start a vyberte Windows PowerShell (Admin)
. Můžete také otevřít příkazový řádek jako správce a zadat powershell
.
Dále importujeme certifikát pomocí Import-Certificate
cmdlet prostředí PowerShell. V následujícím příkazu je první -CertStoreLocation
argument zajistí, že certifikát bude importován do důvěryhodných kořenových certifikačních autorit počítače uložit, aby všechny programy a uživatelé mohli ověřit certifikát serveru VPN. -FilePath
argument by měl ukazovat na umístění, kam jste certifikát zkopírovali. V následujícím příkladu je cesta C:\Users\sammy\Documents\ca-cert.pem
. Ujistěte se, že jste příkaz upravili tak, aby odpovídal umístění, které jste použili.
- Import-Certificate `
- -CertStoreLocation cert:\LocalMachine\Root\ `
- -FilePath C:\users\sammy\Documents\ca-cert.pem
Příkaz vydá něco jako následující:
Output PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\Root
Thumbprint Subject
---------- -------
DB00813B4087E9367861E8463A60CEA0ADC5F002 CN=VPN root CA
Nyní chcete-li nakonfigurovat VPN pomocí PowerShellu, spusťte následující příkaz. Do pole -ServerAddress
nahraďte název DNS nebo IP adresu svého serveru čára. Různé příznaky zajistí, že Windows je správně nakonfigurován s příslušnými bezpečnostními parametry, které odpovídají možnostem, které nastavíte v /etc/ipsec.conf
.
- Add-VpnConnection -Name "VPN Connection" `
- -ServerAddress "server_domain_or_IP" `
- -TunnelType "IKEv2" `
- -AuthenticationMethod "EAP" `
- -EncryptionLevel "Maximum" `
- -RememberCredential `
Pokud je příkaz úspěšný, nebude žádný výstup. Chcete-li ověřit, zda je VPN správně nakonfigurována, použijte Get-VPNConnection
cmdlet:
- Get-VpnConnection -Name "VPN Connection"
Obdržíte výstup podobný následujícímu:
OutputName : VPN Connection
ServerAddress : your_server_ip
AllUserConnection : False
Guid : {B055A1AB-175C-4028-B4A8-D34309A2B20E}
TunnelType : Ikev2
AuthenticationMethod : {Eap}
EncryptionLevel : Maximum
L2tpIPsecAuth :
UseWinlogonCredential : False
EapConfigXmlStream : #document
ConnectionStatus : Disconnected
RememberCredential : True
SplitTunneling : False
DnsSuffix :
IdleDisconnectSeconds : 0
Ve výchozím nastavení Windows volí starší a pomalejší algoritmy. Spusťte Set-VpnConnectionIPsecConfiguration
cmdlet k upgradu parametrů šifrování, které bude systém Windows používat pro výměnu klíčů IKEv2, a k šifrování paketů:
- Set-VpnConnectionIPsecConfiguration -Name "VPN Connection" `
- -AuthenticationTransformConstants GCMAES256 `
- -CipherTransformConstants GCMAES256 `
- -DHGroup ECP384 `
- -IntegrityCheckMethod SHA384 `
- -PfsGroup ECP384 `
- -EncryptionMethod GCMAES256
Poznámka :If you would like to delete the VPN connection and reconfigure it with different options, you can run the Remove-VpnConnection
cmdlet.
- Remove-VpnConnection -Name "VPN Connection" -Force
The -Force
flag will skip prompting you to confirm the removal. You must be disconnected from the VPN if you attempt to remove it using this command.
Connecting to the VPN
Once you have the certificate imported and the VPN configured using either method, your new VPN connection will be visible under the list of networks. Select the VPN and click Connect . You’ll be prompted for your username and password. Type them in, click OK , and you’ll be connected.
Connecting from macOS
Follow these steps to import the certificate:
- Double-click the certificate file. Keychain Access will pop up with a dialog that says “Keychain Access is trying to modify the system keychain. Enter your password to allow this.”
- Enter your password, then click on Modify Keychain
- Double-click the newly imported VPN certificate. This brings up a small properties window where you can specify the trust levels. Set IP Security (IPSec) to Always Trust and you’ll be prompted for your password again. This setting saves automatically after entering the password.
Now that the certificate is imported and trusted, configure the VPN connection with these steps:
- Go to System Preferences and choose Network .
- Click on the small “plus” button on the lower-left of the list of networks.
- In the popup that appears, set Interface to VPN , set the VPN Type to IKEv2 , and give the connection a name.
- In the Server and Remote ID field, enter the server’s domain name or IP address. Leave the Local ID blank.
- Click on Authentication Settings , select Username , and enter your username and password you configured for your VPN user. Poté klikněte na OK .
Finally, click on Connect to connect to the VPN. You should now be connected to the VPN.
Connecting from Ubuntu
To connect from an Ubuntu machine, you can set up and manage StrongSwan as a service or use a one-off command every time you wish to connect. Instructions are provided for both.
Managing StrongSwan as a Service
To manage StrongSwan as a service, you will need to perform the following configuration steps.
First, update your local package cache using apt
- sudo apt update
Next, install StrongSwan and the required plugins for authentication:
- sudo apt install strongswan libcharon-extra-plugins
Now you’ll need a copy of the CA certificate in the /etc/ipsec.d/cacerts
directory so that your client can verify the server’s identity. Run the following command to copy the ca-cert.pem
file into place:
- sudo cp /tmp/ca-cert.pem /etc/ipsec.d/cacerts
To ensure the VPN only runs on demand, use systemctl
to disable StrongSwan from running automatically:
- sudo systemctl disable --now strongswan-starter
Next configure the username and password that you will use to authenticate to the VPN server. Edit /etc/ipsec.secrets
using nano or your preferred editor:
- sudo nano /etc/ipsec.secrets
Add the following line, editing the highlighted username and password values to match the ones that you configured on the server:
/etc/ipsec.secretsyour_username : EAP "your_password"
Finally, edit the /etc/ipsec.conf
file to configure your client to match the server’s configuration:
config setup
conn ikev2-rw
right=server_domain_or_IP
# This should match the `leftid` value on your server's configuration
rightid=server_domain_or_IP
rightsubnet=0.0.0.0/0
rightauth=pubkey
leftsourceip=%config
leftid=username
leftauth=eap-mschapv2
eap_identity=%identity
auto=start
To connect to the VPN, type:
- sudo systemctl start strongswan-starter
To disconnect again, type:
- sudo systemctl stop strongswan-starter
Using the charon-cmd
Client for One-Off Connections
To manage StrongSwan as a service, you will need to perform the following configuration steps.
First, update your local package cache using apt
- sudo apt update
Next, install StrongSwan and the required plugins for authentication:
- sudo apt install strongswan libcharon-extra-plugins
Now you’ll need a copy of the CA certificate in the /etc/ipsec.d/cacerts
directory so that your client can verify the server’s identity. Run the following command to copy the ca-cert.pem
file into place:
- sudo cp /tmp/ca-cert.pem /etc/ipsec.d/cacerts
At this point you can connect to the VPN server with charon-cmd
using the server’s CA certificate, the VPN server’s IP address, and the username you configured.
Run the following command whenever you want to connect to the VPN:
- sudo charon-cmd --cert ca-cert.pem --host vpn_domain_or_IP --identity your_username
When prompted, provide the VPN user’s password and you will be connected to the VPN. To disconnect, press CTRL+C
in the terminal and wait for the connection to close.
Connecting from iOS
To configure the VPN connection on an iOS device, follow these steps:
- Send yourself an email with the root certificate attached.
- Open the email on your iOS device and tap on the attached certificate file, then tap Install and enter your passcode. Once it installs, tap Done .
- Go to Settings , General , VPN and tap Add VPN Configuration . This will bring up the VPN connection configuration screen.
- Tap on Type and select IKEv2 .
- In the Description field, enter a short name for the VPN connection. This could be anything you like.
- In the Server and Remote ID field, enter the server’s domain name or IP address. The Local ID field can be left blank.
- Enter your username and password in the Authentication section, then tap Done .
- Select the VPN connection that you just created, tap the switch on the top of the page, and you’ll be connected.
Connecting from Android
Follow these steps to import the certificate:
- Send yourself an email with the CA certificate attached. Save the CA certificate to your downloads folder.
- Download the StrongSwan VPN client from the Play Store.
- Open the app. Tap the “more” icon (. . . ) in the upper-right corner and select CA certificates .
- Tap the “more” icon (. . . ) in the upper-right corner again. Select Import certificate .
- Browse to the CA certificate file in your downloads folder and select it to import it into the app.
Now that the certificate is imported into the StrongSwan app, you can configure the VPN connection with these steps:
- In the app, tap ADD VPN PROFILE at the top.
- Fill out the Server with your VPN server’s domain name or public IP address.
- Make sure IKEv2 EAP (Username/Password) is selected as the VPN Type.
- Fill out the Username a Heslo with the credentials you defined on the server.
- Deselect Select automatically in the CA certificate section and click Select CA certificate .
- Tap the IMPORTED tab at the top of the screen and choose the CA you imported (it will be named “VPN root CA” if you didn’t change the “DN” earlier).
- If you’d like, fill out Profile name (optional) with a more descriptive name.
When you wish to connect to the VPN, click on the profile you just created in the StrongSwan application.
Troubleshooting Connections
If you are unable to import the certificate, ensure the file has the .pem
extension, and not .pem.txt
.
If you’re unable to connect to the VPN, check the server name or IP address you used. The server’s domain name or IP address must match what you’ve configured as the common name (CN) while creating the certificate. If they don’t match, the VPN connection won’t work. For example, if you set up a certificate with the CN of vpn.example.com
, you must use vpn.example.com
when you enter the VPN server details. Double-check the command you used to generate the certificate, and the values you used when creating your VPN connection.
Finally, double-check the VPN configuration to ensure the leftid
value is configured with the @
symbol if you’re using a domain name:
leftid=@vpn.example.com
If you’re using an IP address, ensure that the @
symbol is omitted. Also make sure that when you generated the server-cert.pem
file that you included both --san @IP_address
and --san IP_address
příznaky.
Závěr
In this tutorial, you’ve built a VPN server that uses the IKEv2 protocol. You learned about the directives that control the left
and right
sides of a connection on both server and clients. You also configured a Windows, macOS, iOS, Android, or Linux client to connect to the VPN.
To add or remove users, skip to Step 5 again. Each line in /etc/ipsec.secrets
is for one user, so adding or removing users, or changing passwords just requires editing the file.
Now you can be assured that your online activities will remain secure wherever you go and with any device that you use to access the internet.