Firewall pfSense: VPN IPSec tunely a HA režim

Lukáš Malý 17. 8. 2016

Dnes si povíme, jak se pomocí pfSense dají snadno realizovat IPSec tunely všech možných variací. Závěrem si povíme, jak realizovat High Availability řešení pomocí protokolu CARP.

VPN IPSec

předchozím díle seriálu o pfSense jsme si řekli, jak konfigurovat OpenVPN. Další možností, jak realizovat VPN spojení je IPSec, který je v pfSense též plně funkční. Ve FreeBSD je IPSec implementován díky projektu KAME, který zajistil podporu v kernelu. pfSense má podporu IPSec v kernelu připravenu k použití. Můžeme to ověřit pomocí následujícího příkazu.

$ /sbin/sysctl -a | grep ipsec
kern.features.ipsec_natt: 1
kern.features.ipsec: 1
net.inet.ipsec.def_policy: 1
net.inet.ipsec.esp_trans_deflev: 1
net.inet.ipsec.esp_net_deflev: 1
net.inet.ipsec.ah_trans_deflev: 1
net.inet.ipsec.ah_net_deflev: 1
net.inet.ipsec.ah_cleartos: 1
net.inet.ipsec.ah_offsetmask: 0
net.inet.ipsec.dfbit: 0
net.inet.ipsec.ecn: 0
net.inet.ipsec.debug: 0
net.inet.ipsec.crypto_support: 50331648
net.inet.ipsec.filtertunnel: 0
net.inet6.ipsec6.def_policy: 1
net.inet6.ipsec6.esp_trans_deflev: 1
net.inet6.ipsec6.esp_net_deflev: 1
net.inet6.ipsec6.ah_trans_deflev: 1
net.inet6.ipsec6.ah_net_deflev: 1
net.inet6.ipsec6.ecn: 0
net.inet6.ipsec6.debug: 0
net.inet6.ipsec6.filtertunnel: 0
net.enc.out.ipsec_bpf_mask: 1
net.enc.out.ipsec_filter_mask: 1
net.enc.in.ipsec_bpf_mask: 2
net.enc.in.ipsec_filter_mask: 2

Ve verzi pfSense 2.2 došlo ke změně IPsec backend. V předchozích verzích se používala user-space apliakce Racoon jako IKE/ISAKMP a ta byla nahrazena aplikací strongSwan.

IPSec kompatibilita

Je velmi důležité, jaká je kompatibilita IPSec s ostatními routery od různých výrobců. Tento seznam kompatibility je vhodné znát před tím, než se začneme pouštět do realizace nějakého IPSec tunelu. Z vlastní zkušenosti jsem realizoval tunely s Fortigate, Kerio Control a s m0n0wall. Je samozřejmé, že tunely mezi routery s pfSense budou fungovat bezproblémově. Projekt pfSense má obrovskou výhodu v tom, že nabízí velmi široké možností konfigurací. Např. zda použijeme IKE nebo IKEv2, nebo jaký typ šifer začleníme do asociačních pravidel. Vždy je nutné sladit nastavení obou IPSec zařízení na stejnou úroveň.

Konfigurace IPSec tunelu

dokumentaci pfSense je podrobně popsán postup, jak vytvořit IPSec tunel. Nastavení se provádí v menu VPN / IPsec / Tunnels. Ze starší verze dokumentace FreeBSD jsem si vypůjčil obrázek, popisující IPSec tunel mezi LAN1 a LAN2, realizovaný skrze veřejný internet.

pfSense 2.3 IPSec tunnel schema

pfSense 2.3 IPSec tunel schéma

Pro realizaci tunelu potřebujeme vždy veřejnou IPv4 adresu. V současné době je IPv6 s IPSec funkční, ale není možné mixovat oba protokoly v jednom tunelu.

Pokud vyšleme např. ICMPv4 packet z LAN 1, na  router 1 se zjistí, kterým tunelem se má kam poslat, zabalí se do ESP a dál putuje internetem šifrovaně k routeru 2, kde se ESP rozbalí a paket se doručí k hostu v LAN 2. Takto je to velmi jednoduše řečeno.

pfSense 2.3 IPSec list tunels

pfSense 2.3 IPSec list tunels

Takto vypadá seznam vytvořených tunelů. Můžeme je snadno zakázat, smazat nebo editovat.

pfSense 2.3 IPSec Edit Phase 2

pfSense 2.3 IPSec Edit Phase 2

Takto vypadá editrace VPN / IPsec / Tunnels / Edit Phase 1.

pfSense 2.3 IPSec Edit Phase 2 list

pfSense 2.3 IPSec Edit Phase 2 list

Je možné definovat vícero Phase 2, např. když chceme zpřístupnit další LAN nebo VLAN, byť jen na jedné straně tunelu.

pfSense 2.3 IPSec Edit Phase 1

pfSense 2.3 IPSec Edit Phase 1

Takto vypadá editrace VPN / IPsec / Tunnels / Edit Phase 2 .

Veškerá IPSec nastavení se ukládají do adresáře /var/etc/ipsec, kam je možné nahlédnout při ladění nějaké specifické konfigurace s odlišnou implementací IPSec než je ta v pfSense. Struktura adresářů a souborů vypadá následovně:

$ ls -lrthR1
ipsec.d
strongswan.d
strongswan.conf
ipsec.secrets
ipsec.conf

./ipsec.d:
cacerts
private
crls
certs
aacerts
acerts
ocspcerts
reqs

./ipsec.d/cacerts:
./ipsec.d/private:
./ipsec.d/crls:
./ipsec.d/certs:
./ipsec.d/aacerts:
./ipsec.d/acerts:
./ipsec.d/ocspcerts:
./ipsec.d/reqs:

Nastavení IPSec je možné snadno exportovat v podobě XML souboru ipsec-config-apu.domena.cz-20160818113025.xml nebo jako zálohu celého routeru  config-apu.domena.cz-20160818113251.xml.

Na statusové stránce Status / IPsec / Overview máme možnost sledovat stav tunelu, zda je navázáno spojení a v dalších záložkách můžeme vidět tabulky s hodnotami SAD a SPD.

IPSec Mobile

Další volbou IPSec je VPN / IPsec / Mobile Clients. V minulosti jsem mobilní IPSec provozoval s klientem SHREW SOFT VPN Client. Je to funkční alternativa k OpenVPN. Mobilní IPSec je též možné zprovoznit v mobilních zařízeních s Androidem a iOS. Obě platformy mají IPSec v sobě implementován a není tedy nutné instalovat aplikaci pro VPN jako je např. OpenVPN Connect.

pfSense jako řešení vysoké dostupnosti

I open-source firewall pfSense disponuje funkcionalitou High Availability, neboli vysoké dostupnosti. Pokud máme dva routery, můžeme je nakonfigurovat tak, aby při vypnutí nebo výpadku jednoho převzal funkci druhý.

Tato funkcionalita je samozřejmě nabízena spolu s hardware přímo na eshopu pfsense. Poskytují dva modely SG-4860 1U a SG-8860 1U, které jsou patřičně předkonfigurované pro fungování v HA režimu. Pokud máme vlastní hardware, např. v podobě nějakého 1U serveru, můžeme si tuto funkcionalitu zprovoznit podle patřičného návodu.

pfSense.3 CARP schema

pfSense.3 CARP schema

V roce 2011 jsem měl možnost podle tohoto návodu postavit prostředí ve VMware pro vyzkoušení jako řešení pro jednu zakázku. Měl jsem k dispozici veřejné IPv4 pro obě strany. Instaloval jsem tedy 4× pfSense, vždy dva v jiné lokalitě. HA umělo jak NAT, synchronizaci pravidel a aliasů, ale zároveň byl v HA režimu konfigurován i IPSec tunel. Popis z té doby je u mě na blogu. Od té doby jsem tuto konfiguraci nikde neinstaloval.

Základem tohoto HA řešení je protokol CARP. Poskytuje obdobné funkcionality jako protokoly VRRP a Cisco Systems proprietární protokol, HSRP. CARP vznikl díky projektu OpenBSD jako svobodná implementace VRRP a HSRP. Dále je v HA režimu použit pfsync. Tento mechanizmus zajišťuje synchronizaci pravidel a jiných nastavení s druhým nodem HA routeru.

widgety

Tuto službu lze použít v případě, že provozujeme routery s obdobným nastavením a například si synchronizujeme jen aliasy mezi nakonfigurovanými routery.

Závěr

V dalším díle seriálu o pfSense si povíme o projektu OPNsense a pokusíme se srovnat aktuální rozdíly tohoto mladého forku pfSense. Dále si řekneme podrobnosti o monitorování pfSense pomocí Zabbixu.

Našli jste v článku chybu?
Lupa.cz: Kde leží hardwarový pupek světa?

Kde leží hardwarový pupek světa?

120na80.cz: Co je padesátkrát sladší než cukr?

Co je padesátkrát sladší než cukr?

Vitalia.cz: Jak Ondra o astma přišel

Jak Ondra o astma přišel

Vitalia.cz: Tesco nabízí desítky tun jídla zdarma

Tesco nabízí desítky tun jídla zdarma

Podnikatel.cz: Instalatér, malíř a elektrikář. "Vymřou"?

Instalatér, malíř a elektrikář. "Vymřou"?

Root.cz: Hořící telefon Samsung Note 7 zapálil auto

Hořící telefon Samsung Note 7 zapálil auto

Vitalia.cz: Voda z Vltavy před a po úpravě na pitnou

Voda z Vltavy před a po úpravě na pitnou

Lupa.cz: Patička e-mailu závazná jako vlastnoruční podpis?

Patička e-mailu závazná jako vlastnoruční podpis?

DigiZone.cz: Nova opět stahuje „milionáře“

Nova opět stahuje „milionáře“

Lupa.cz: Jak se prodává firma za miliardu?

Jak se prodává firma za miliardu?

DigiZone.cz: Technisat připravuje trojici DAB

Technisat připravuje trojici DAB

Vitalia.cz: 5 chyb, které děláme při skladování potravin

5 chyb, které děláme při skladování potravin

Podnikatel.cz: Byla finanční manažerka, teď cvičí jógu

Byla finanční manažerka, teď cvičí jógu

DigiZone.cz: Parlamentní listy: kde končí PR...

Parlamentní listy: kde končí PR...

Vitalia.cz: dTest odhalil ten nejlepší kečup

dTest odhalil ten nejlepší kečup

DigiZone.cz: Ginx TV: pořad o počítačových hráčích

Ginx TV: pořad o počítačových hráčích

DigiZone.cz: Mordparta: trochu podchlazený 87. revír

Mordparta: trochu podchlazený 87. revír

Vitalia.cz: Tahák, jak vyzrát nad zápachem z úst

Tahák, jak vyzrát nad zápachem z úst

Podnikatel.cz: Letáky? Lidi zuří, ale ony stále fungují

Letáky? Lidi zuří, ale ony stále fungují

DigiZone.cz: Numan Two: rozhlasový přijímač s CD

Numan Two: rozhlasový přijímač s CD