IPSec VPN
IPsec Remote Access VPN
IPsec, plným názvem Internet Protocol Security, je standardizovaná skupina
protokolů pro zabezpečení IP komunikace mezi dvěma koncovými systémy. Obsahuje
obousměrnou autentizaci a vyjednání kryptografických metod a klíčů. IPsec
pracuje na IP vrstvě, to znamená na Layer 3 OSI modelu, a doplňuje IPv4 protokol
(v IPv6 je povinnou součástí protokolu).
IPsec nejprve zařídí to, že se obě strany navzájem identifikují (autentizují) a následně šifruje veškerou komunikaci pomocí domluveného algoritmu. Komunikujícím stranám říkáme peers. V rámci IPsecu můžeme používat velké množství standardních protokolů a algoritmů. IPsec neurčuje, jaké algoritmy se musí použít pro komunikaci, ale definuje mechanismy vyjednávání a základní množinu algoritmů.
IPsec režimy funkce
IPsec může pracovat ve dvou módech (host-to-host) Transport a (network) Tunnel
Mode (defaultní), rozdíl je v tom, co se šifruje.
Tunnel mode - šifruje celý paket
(včetně hlavičky) a doplňuje novou hlavičku. Tento mód se může použít pro IPsec
proxy, klient posílá data, router je šifruje a posílá dál. Z komunikace se nedá
odhalit adresa klienta.
Transport mode - šifruje pouze data, IP hlavička se ponechá a doplní se pouze
IPsec hlavička. Někteří klienti podporují pouze transport mode, například
L2TP/IPsec klient ve Windows.
IPsec protokoly
IPsec využívá tři hlavní protokoly:
Authentication Header (AH) -
zajišťuje integritu a autentizaci zdroje dat, využívá hashovací funkce (jako MD5
či SHA1) a společný klíč (který si na začátku domluví), v hlavičce obsahuje
pořadové číslo paketu, pro komunikaci používá protokol IP číslo 51, dnes se
téměř nepoužívá
Encapsulating Security Payload (ESP) - zajišťuje důvěrnost, autentizaci zdroje a
integritu, využívá šifrovací algoritmy (jako DES či AES), pro komunikaci používá
protokol IP číslo 50
Security Association (SA) - skupina algoritmů, které poskytují parametry pro
bezpečnou komunikaci pomocí AH a ESP, používá ISAKMP Framework (Internet
Security Association and Key Management Protocol) a nějaký protokol, většinou
IKE (Internet Key Exchange), pro vyjednání atributů, atributy obsahují zvolený
šifrovací algoritmus, dobu platnosti klíče, kompresi a způsob zapouzdření,
komunikace probíhá šifrovaně
Navázání IPsec VPN
Běžně IPsec VPN komunikace probíhá:
pomocí IKE se na UDP portu 500
vyjedná SA, používá certifikáty (klientský a serverový) nebo PSK
z parametrů SA se naváže na IP 50 šifrovaná komunikace pomocí ESP
IKE - Internet Key Exchange
Často se na začátku IPsec komunikace používá IKE protokol pro vyjednání Security
Association. IKE používá pro komunikaci UDP port 500 a pro autentizaci
certifikáty nebo Pre-Shared Key (PSK). Pro výměnu klíčů se používá metoda
Diffie-Hellman (vytvoří shared session secret a z něj se odvodí šifrovací
klíče). Takže komunikace je šifrována a IKE může sloužit jako část autentizace
(musíme mít certifikát nebo znát PSK). Nověji se používá také IKEv2.
IKE pracuje ve dvou fázích:
Phase 1 - autentizují se účastníci
a vyjedná se IKE SA (pomocí Diffie-Hellman), díky tomu se vytvoří bezpečný kanál
pro vyjednání IPsec SA ve fázi 2, pracuje v režimu main mode (chrání identitu
komunikujících stran) nebo aggressive mode
Phase 2 - vyjedná IPsec SA parametry a nastaví odpovídající SA, pouze režim
quick mode
Perfect Forward Secrecy (PFS) - volitelné rozšíření zabezpečení fáze 2.
Standardně při IPsec vyjednávání jsou klíče fáze 2 odvozeny od klíčů fáze 1. PFS
využije novou výměnu klíčů pomocí Diffie-Hellman.
Rozšíření IKE protokolu XAUTH (Extended User Authentication) dovoluje použít autentizaci uživatele vůči RADIUS serveru. Nejde o náhradu, ale o rozšíření. Standardně IKE podporuje ve fázi 1 pouze autentizaci počítače. XAUTH přidává další fázi (po fázi 1 a před fází 2), kdy dojde k autentizaci uživatele (pomocí AAA metod).
NAT-T - Network Address Translation
- Traversal
Pakety posílané s IPsec jsou chráněny hashem, aby nemohl být jejich obsah
změněn. Pokud je v cestě NAT, tak ten modifikuje IP hlavičku, potom nesouhlasí
hash a takový paket je zahozen. Řešením, aby komunikace fungovala, je využití
NAT-T. Ten doplní paketu novou UDP hlavičku (provede zapouzdření paketu do UDP),
ta může být cestou modifikována. Na druhé straně se hlavička odstraní a příchozí
paket je OK. Vyjednávání během IKE může domluvit UDP zapouzdření. Komunikace
používá UDP port 4500 a označuje se jako IPsec over UDP nebo IPsec over NAT-T.
U Cisca je možné zapouzdření nejen do UDP, ale také do TCP a stanovení portu. Cisco také používá různá označení, třeba Transparent Tunneling či NAT Transparent.
L2TP over IPsec
Layer 2 Tunneling Protocol (L2TP) je tunelovací protokol pro podporu VPN. Sám o
sobě neobsahuje žádné šifrování, pouze vytváří tunel. Komunikuje na UDP portu
1701. Často se používá dohromady s IPsec, který zajišťujte důvěrnost (šifrování)
a autentizaci. Mluvíme pak o L2TP/IPsec.
Proces navazování spojení může probíhat:
pomocí IKE se na UDP portu 500
vyjedná SA, používá certifikáty (klientský a serverový) nebo PSK
z parametrů SA se naváže na IP 50 šifrovaná komunikace pomocí ESP v transportním
módu
vyjedná se a naváže L2TP tunel mezi koncovými body, komunikace probíhá přes UDP
1701, ale to je zabalené v IPsec, takže v paketu jde o IP 50
Další vlastnosti
Split Tunneling - pouze část komunikace od klienta jde do VPN (firemní rozsah
adres) a zbytek jde přímo do internetu. Běžný způsob je, že veškerá komunikace
je směrovaná do VPN tunelu.
Parametry pro některé IPsec VPN
klienty
Když vytváříme VPN, tak potřebujeme znát, jaké algoritmy a protokoly podporuje
určitý klient, aby nám výsledná komunikace fungovala.
Cisco VPN client
Cisco VPN client podporuje většinu možností a téměř vše, co můžeme nastavit na
Cisco ASA. IPsec musí být v tunnel mode a není podporován L2TP. Můžeme použít
IPsec ESP s NAT-T jako IPsec/UDP či IPsec/TCP. Zabezpečení ESP šifrování DES,
3DES (56/168-bit) a AES (128/256-bit), pro integritu hashovací funkce MD5 a SHA,
IKE s digitálními certifikáty, Diffie-Hellman (DH) Groups 1,2 a 5 s PFS.
Kompresi dat LZS. Pro autentizaci RADIUS, ale nepodařilo se mi rozchodit
autentizaci uživatelským certifikátem.
Windows XP či Windows 7
Microsoft má v řadě svých klientů zabudovaného IPsec VPN klienta (ve Windows 7
je také podpora SSTP a IKEv2, nezkoušel jsem). Podporuje i NAT-T, ale pokud je
server za NATem, tak se na klientovi musí povolit v registrech.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\Parameters\"NegotiateDh2048"=dword:1
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPSec\"AssumeUDPEncapsulationContextOnSendRule"=dword:2
Ve Windows 7 se druhá hodnota nachází na jiném místě.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent\"AssumeUDPEncapsulationContextOnSendRule"=dword:2
Standardní klient je L2TP/IPsec, takže L2TP je potřeba, a musí jít o transport
mode. Zabezpečení je podporováno ESP šifrování DES a 3DES, integritu MD5 nebo
SHA a D-F group 1, 2, 2048. Není zde problém s využitím EAP smartcard, tedy
autentizace uživatelským certifikátem.
Google Android
V OS pro mobilní telefony Google Android je integrovaný VPN klient (údajně) již
od verze 1.6. Volíme mezi L2TP/IPsec PSK VPN (pro IKE se použije PSK) a
L2TP/IPsec CRT VPN (pro IKE máme certifikát). Nikde jsem nenašel popis
vlastností, ale z praktických testů vyplívá, že podpora je podobná jako ve
Windows XP. Tedy L2TP/IPsec v transportním módu, ESP s DES a 3DES, MD5 a SHA1.