Nasazení IPSec

Implementace IPSec ve FreeBSD je filtr a sada pravidel, která dovolí vytvořit tunel mezi dvěmi body. IPSEC tak provádí svoje nekalé rejdy přímo nebo může být vnořen do jiného tunelu, proto mi jako nejvhodnější připadá začít právě s jeho konfigurací - viz. Tunelování sítí a poté teprve implementovat vrstvu IPSEC. Uvedený postup je převzatý z handbooku pro IPSec ze stránek FreeBSD.

Pro instalaci je potřeba přidat parametry do jádra a nainstalovat z portů daemona pro vyjednávání klíčů (KAME):
portinstall ipsec-tools

Při konfiguraci doporučuji povolit NAT traversal, Dead Gateway Detection a podporu pro IPv6. Volitelná rozšíření jako je autentizace přes RADIUS jsou vhodná pouze u rozsáhlejších sítí nebo u sítí se striktní centrální správou, jiná zase pouze pro komunikaci mezi opensource systémy. Pro zjištění interoperability doporučuji nahlédnout do RFC dokumentace a podrobně prostudovat i materiály k FreeBSD.
Při přechodu na verzi 7.0 jsem zjistil, že patch pro NAT Traversal je dostupný pouze pro verzi 6.0 a na mé instalaci mi tedy dělá problémy. Patch je dostupný na freebsd6-natt.diff

Do konfiguračního souboru pro kernel tedy v části OPTIONS přidáme následující:
options IPSEC #Enable IPSec support
options IPSEC_ESP #Support Encapsulated Security Payload (ESP) protocol


Po rekompilaci kernelu a restartu je nyní nutné připravit konfigurační soubory pro tunel a vyjednávání klíčů. Nastavení tunelu vychází z této konfigurace. Jsou dvě oddělení, kde jedno (strana A) má "vnější adresu" 10.0.0.1/24 a vnitřní 192.168.1.1/24. Druhé (strana B) má "vnější adresu" 172.12.1.1/24 a vnitřní 192.168.2.1/24. Na obou stranách upravíme soubor /usr/local/etc/ipsec.conf:

Strana A
spdadd 10.0.0.1/32 172.12.1.1/32 ipencap -P out ipsec esp/tunnel/10.0.0.1-172.12.1.1/require;
spdadd 172.12.1.1/32 10.0.0.1/32 ipencap -P in ipsec esp/tunnel/172.12.1.1-10.0.0.1/require;


Strana B
spdadd 172.12.1.1/32 10.0.0.1/32 ipencap -P out ipsec esp/tunnel/172.12.1.1-10.0.0.1/require;
spdadd 10.0.0.1/32 172.12.1.1/32 ipencap -P in ipsec esp/tunnel/10.0.0.1-172.12.1.1/require;


Jako další krok je potřeba zkopírovat soubory z adresáře /usr/local/share/examples/ipsec-tools, konkrétně se jedná o psk.txt a některý z racoon.conf (dle požadavků) do adresáře /usr/local/etc. Tyto soubory se upraví následujícím způsobem. V souboru /usr/local/etc/racoon/psk.txt:
IP adresa secret

A v souboru /usr/local/etc/racoon.conf se jedná hlavně o záznamy:
path include "/usr/local/etc/racoon";
path pre_shared_key "/usr/local/etc/racoon/psk.txt";
path certificate "/usr/local/etc/racoon/cert";
log debug;


Poté je nutno spustit na obou strojích příkaz:
setkey -f /usr/local/etc/ipsec.conf

A poslední nastavení se týká paketových filtrů, lépe řečeno jejich ukázky:
table <vpn> { 192.168.1.0/24, 192.168.2.0/24 }
#IP Filtering
#GRE, AH, ESP
pass in quick on $ext_if proto { gre, ah, esp } from any flags S/SA keep state
#IPSec ISAKMP 500/TCP
pass in quick on $ext_if proto tcp from any port 500 flags S/SA keep state
pass out quick on $ext_if proto tcp from any port 500 flags S/SA keep state
#NAT-T 4500/TCP
pass in quick on $ext_if proto tcp from any port 4500 flags S/SA keep state
#IPEncapsulating
pass in quick on $vpn_if proto ipencap all
#VPN Communication
pass in quick on $vpn_if from <vpn> to <vpn> pass out quick on $vpn_if from <vpn> to <vpn>


Powered by Drupal - Design by artinet