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.