Skip to main content

14.6 VPN cez IPsec a L2TP

IPsec

Dalo by sa povedať, že zlatým štandardom šifrovaných prenosov v profesionálnom svete sietí je IPsec. Je to skôr platforma a nie konkrétny predpis. Umožňuje zvoliť mnoho kombinácií autentifikácie, podpisovania i šifrovania. Takmer vždy v dnešnej dobe volíme silné šifrovanie i overovanie neporušenosti prenášaných údajov (protokol ESP), no mohli by sme nešifrovať a len overovať údaje (protokol AH).

Proces spájania pre protokol ESP má dve fázy:

  • Fáza 1: Realizuje sa cez port UDP/500, prebehne autentifikáciou cez zdieľané heslo, verejný kľúč alebo X.509 certifikát. Obe strany sa dohodnú na použitých algoritmoch pre SA (Security Association), vygenerujú si šifrovacie kľúče a vzájomne si ich bezpečne vymenia protokolom Diffie-Hellman (DH). Parametre tejto fázy je v RouterOS možné definovať cez WinBox ponuku IP → IPsec → Profiles.
  • Fáza 2: Vytvorí sa zabezpečený kanál pomocou L4 protokolu ESP (Encapsulating Security Payload - ide o IP protokol č. 50). V prípade, že je niektorá strana za NAT, využitie tohto protokolu nebude možné priamo, ale je potrebná pomocná funkcia NAT Traversal - tá vyžaduje otvorený port UDP/4500 aspoň na jednej strane. ESP šifruje zvoleným algoritmom a kľúčom, ktorý si obe strany vymenili vo fáze 1. Parametre tejto fázy je možné definovať cez IP → IPsec → Proposals.

Varianty Diffie-Hellman

Označovanie konkrétnych variantov Diffie-Hellman pre výmenu šifrovacieho kľúča sa líši v materiáloch Cisco NetAcad (používa číslo skupiny, napr. „DH14“ alebo „Group 14“) a v konfigurácii MikroTik (používa označenie algoritmu a počtu bitov, napr. „modp2048“). Skupiny do čísla 18 používajú algoritmus MODP (klasickú kryptografiu so zvyškovými triedami), skupiny od 19 vyspelejší ECP (modernú kryptografiu eliptických kriviek):

  • v dnešnej dobe slabé varianty: 1/modp768, 2/modp1024, 5/modp1536;
  • aktuálne vyhovujúce varianty: 14/modp2048, 15/modp3072, 16/modp4096, 17/modp6144, 18/modp8192, 19/ecp256;
  • silné varianty do budúcnosti: 20/ecp384, 21/ecp521.

Z hľadiska bezpečnosti je pre 128-bitové symetrické šifrovacie kľúče (AES-128) primerané použiť skupinu 20/ecp384 a pre 256-bitové kľúče skupinu 21/ecp521.

Varianty AES

Už v niektorých predošlých VPN systémoch sme videli možnosť voľby AES variantu. Pri konfigurácii IPsec máme najbohatšie možnosti, preto si predstavme rôzne implementácie šifrovania AES:

  • Blokový variant CBC je „klasika“ - údaje najskôr rozdelí do blokov podľa veľkosti kľúča a každý z nich šifruje ako celok. Postupuje sa sekvenčne - aby sa mohol zašifrovať 2. blok údajov, musí byť ukončený 1. blok. Kvôli tomu nie je možné počítať paralelne (a využiť viac CPU).
  • Variant CTR je prúdový - údaje šifruje priebežne po jednom bite v každom bloku. Procesor môže spracovávať viacero blokov naraz (paralelne), čo pri viacerých CPU výrazne zvyšuje rýchlosť. Rýchlosť bude vyššia aj v prípade hardvérovej akcelerácie AES, pretože i samotný hardvérový čip dokáže využiť zreťazenie inštrukcií.
  • Variant GCM realizuje popri prúdovom šifrovaní aj hašovanie (kontrolu integrity), nepotrebuje teda podporu samostatnej hašovacej funkcie a nekonfigurujeme ju.

Tunelový režim IPsec

IPsec umožňuje sám o sebe vytvoriť zabezpečený L3 tunel, teda prepojenie dvoch vzdialených lokalít, pokiaľ je na oboch stranách k dispozícii verejná IP adresa. Využitím pomocnej funkcie NAT Traversal umožňuje prepojenie dokonca aj v prípade, že jedna strana je za NAT. V úvodnej kapitole k VPN sme tvrdili, že tunel rieši len zapuzdrenie a nie šifrovanie. IPsec však dokáže riešiť oboje, preto by sa dalo povedať, že samotný IPsec tunel predstavuje VPN. Problémom však je, že nerieši jednotlivých používateľov.

Transportný režim IPsec

V tomto režime IPsec nefunguje ako tunel. Vezme IP paket, hlavičku ponechá a len zašifruje jeho obsah. Používa sa na zabezpečenie iného tunelovacieho protokolu, napríklad L2TP. V praxi totiž potrebujeme pripájať aj mobilných klientov, ktorým sa mení IP adresa a chceme ich individuálne rozlišovať prihlasovacím menom a heslom. Na tento účel je možné využiť kombináciu L2TP s IPsec, označovanú ako L2TP/IPsec. Tá sa už správa ako klasická VPN pre individuálnych klientov.

L2TP/IPsec

L2TP (Layer 2 Tunelling Protocol) poskytuje, rovnako ako PPTP a SSTP, individuálnu autentifikáciu klienta menom a heslom. Postará sa o vytvorenie L2 tunela pre PPP, overenie mena a hesla používateľa a pridelenie IP adresy klientovi. Keďže však L2TP nie je bezpečný, zavolá si na pomoc IPsec v transportnom režime, ktorý celú L2TP komunikáciu vezme a zašifruje.

L2TP teda pracuje na 2. vrstve a prenáša rámce? Spojí dve vzdialené L2 siete?

Áno, prenáša rámce na 2. vrstve, no pozor - nejde o ethernetové rámce (ako OpenVPN v režime L2), ale o PPP rámce spojenia servera s klientom. V týchto rámcoch sú zapuzdrené klasické L3 IP pakety.

L2TP rozhranie teda nie je možné premostiť s ethernetovou sieťou, takže nespája dve vzdialené L2 siete.

V čom sa teda líši L2TP od PPTP?

PPTP je veľmi starý protokol od spoločnosti Microsoft. Podporuje vlastné šifrovanie (veľmi slabé) a vlastnú autentifikáciu. L2TP je modernejší protokol organizácie IETF, vychádzajúci aj z PPTP, aj z Cisco protokolu. Nemá vôbec žiadne šifrovanie a spolieha sa na ďalšie zabezpečenie.

L2TP tunel sa teda vytvára po nadviazanom IPsec spojení, používa sa v ňom port UDP/1701.

Tento port nie je potrebné riešiť na firewalli - L2TP pakety sú zapuzdrené v IPsec, ide teda o internú záležitosť v tuneli.

Konfigurácia MikroTik RouterOS

Konfigurácia L2TP na zariadení MikroTik je veľmi podobná konfigurácii PPTP, no navyše umožňuje využiť IPsec pre zabezpečenie. Pokiaľ nám postačuje autentifikácia IPsec v režime PSK, nie je nutné nič riešiť v nastavení IPsec.

Konfigurácia klienta

Klienta pridávame cez PPP → Interface, konkrétne L2TP Client. V jeho konfigurácii je potrebné vyžadovať voľbu Use IPsec a nastaviť zdieľané heslo IPsec Secret. Pre potenciálne zrýchlenie je možné povoliť Fast Path.

l2tp-client.webp

Konfigurácia servera

Aj v konfigurácii servera PPP → L2TP Server je potrebné vyžadovať voľbu Use IPsec a nastaviť zdieľané heslo IPsec Secret. Týmto sa automaticky vytvoria potrebné položky IPsec (IP → IPsec) - v sekciách PeersIdentities. Je vhodné konkretizovať protokol voľbou „l2tpv2“. Pre potenciálne zrýchlenie je možné povoliť Fast Path.

l2tp-server.webp

Zaujímavosť: L2TP verzie 3 (L2TPv3)
V bežnej praxi pre pripájanie koncových zariadení používateľov sa pod pojmom L2TP vždy myslí staršia verzia L2TPv2, ktorá zapuzdruje PPP a správa sa ako L3 spojenie. Existuje však aj novší štandard L2TPv3. Ten upustil od PPP a dokáže prenášať čisté ethernetové rámce s MAC adresami - rozhranie sa teda dá premostiť. L2TPv3 nie je podporovaný v klientskych operačných systémoch a slúži výhradne na prepojenie dvoch sietí. V režime L2 sa správa z funkčného hľadiska rovnako ako OpenVPN na L2 - rozdiel je v spôsobe šifrovania (IPsec vs. TLS).

Upresnenie parametrov IPsec

Hoci pre fungovanie nič viac netreba (IPsec bude fungovať v protokole ESP s predvolenými nastaveniami MikroTik RouterOS), v rámci optimalizácie je vhodné upraviť nastavenia IPsec. Keďže L2TP používa len predvolené profily (default), v sekcii IP → IPsec ich musíme upraviť:

  • Profiles definuje parametre 1. fázy (výmena kľúčov). Vhodné je k predvolenému algoritmu šifrovania aes-128 pridať aj aes-192aes-256 a odobrať zastaraný 3des. Pre výmenu kľúčov DH je vhodné pridať skupiny ecp384ecp521, odobrať je vhodné príliš slabý modp1024 (no pozor v prípade servera - používal ho klient v staršej verzii OS Android) a tiež modp2048. V tejto časti nezohľadňujeme hardvérovú akceleráciu AES, pretože výmena kľúčov je krátka.

    ipsec-profile.webp

  • Proposals definuje parametre 2. fázy. Vhodné je k autentifikácii sha1 pridať sha256 a k šifrovaniu pridať aes-128 ctraes-256 ctr. Je vhodné odobrať aes-192 cbc, pretože hardvérová akcelerácia na (podporovaných) MikroTik zariadeniach podporuje niekedy len aes-128 a aes-256 (pozri tabuľku kompatibility MikroTik s IPSec). Z toho istého dôvodu nie je v tejto situácii vhodné zapínať sha512.  Pre lepšiu kompatibilitu s klientmi sa odporúča vypnúť PFS Group (voľba „none“).

    ipsec-proposal.webp


Klient vo Windows podporuje v oboch fázach len hašovanie sha1, preto ho na L2TP/IPsec serveri ponechávame predvolený v Profile a zapnutý v Proposal. Z DH variantov podporuje 14/modp2048, 19/ecp25620/ecp384. Pozor, Windows 10 podporoval len šifrovanie aes-128 cbc, preto ho je treba ponechať v Profile i v Proposal. Windows 11 už podporuje aj aes-256 cbc.

Kontrola stavu

Po úspešnom pripojení klienta sa vygenerujú šifrovacie kľúče podľa nastavení. Nájdeme ich v IP → IPsec → Installed SAs. V tomto prehľade môžeme vidieť režim autentifikácie (hašovaciu funkciu), algoritmus šifrovania a bitovú dĺžku šifrovacieho kľúča. Dôležitý je príznak H (Hardware AEAD) - ak je aktívny, šifrovanie je realizované hardvérovou akceleráciou, čo veľmi výrazne zvyšuje priepustnosť, pretože tým nezaťažuje CPU.

ipsec-sa.webp

Firewall

Z hľadiska firewallu a NAT je treba vedieť, že pre fungovanie L2TP/IPsec sú na strane servera potrebné porty UDP/500 a 4500 a prípadne tiež protokol č. 50 (ipsec-esp), pre L2TPv3 aj č. 115 (l2tp).