#VPN host-to-host IPsec Ionel Mocanu VPN host-to-host IPsec in Debian Lenny — Ionel Mocanu
Skip to content
 

VPN host-to-host IPsec in Debian Lenny

IPsec poate fi configurat pentru a crea o conexiune gazdă-la-gazdă în modul transport. Acest tip de conexiune utilizează Internetul, la care fiecare gazdă este conectat, pentru a crearea un tunel securizat. Dupa crearea tunelului IPsec, se poate ridica un tunel GRE intre ce le doua host-uri pentru a se realiza un VPN site-to-site

Cerinţele pentru o conexiune gazdă-la-gazdă sunt minime, trebuind instalate următoarele pachete:
EAST:~# apt-get install racoon ipsec-tools

Pachetul ipsec-tools oferă utilitare pentru instalarea şi configurarea stivei IPsec iar pachetul racoon furnizează serverul IKE pentru gestionare asocierii de securitate (SA).

În fişierul /etc/ipsec-tools.conf se defineasc politicile de securitate (SPD), care descriu, care trafic trebuie să fie criptat. Se defineşte o SPD pentru fiecare direcţie (două pentru fiecare tunel).
Pentru routerul EAST, pentru a configura tunelul ipsec acest fişier cuprinde:

spdadd 10.0.8.10 10.6.17.254 any -P out ipsec
esp/transport//require
ah/transport//require;
spdadd 10.6.17.254 10.0.8.10 any -P in ipsec
esp/transport//require
ah/transport//require;

iar pentru WEST:

spdadd 10.6.17.254 10.0.8.10 any -P out ipsec
esp/transport//require
ah/transport//require;
spdadd 10.0.8.10 10.6.17.254 any -P in ipsec
esp/transport//require
ah/transport//require;

Fişierul de configurare pentru daemon-ul raccoon, /etc/racoon/racoon.conf este identic prntru toate nodurile ipsec, exceptând declaraţia remote, care specifică celălalt capăt al tunelului(când nu are valoarea anonymous). Racoon poate folosi atât mecanisme de autentificare cu cheie pre-pratajată cât şi certificate, pentru a verifica dacă o asociere IPSec poate fi creată cu un nod dat. O cheie pre-partajată poate fi create folosind comanda:

EAST:~# dd if=/dev/random count=24 bs=1| xxd -ps
24+0 records in
24+0 records out
24 bytes (24 B) copied, 0.000261277 s, 91.9 kB/s
9a25ef96fb73927a94da5ddc3f6774f8df2efcb7deecf2fa

Se va genera o cheie hexazecimală care va fi plasată în fişierul /etc/racoon/psk.txt pe ambele gateway-uri. Această cheie trebuie să fie precedată de 0x pentru a indica că este în format hexazecimal:

EAST:~# cat /etc/racoon/psk.txt
10.6.17.254 0x9a25ef96fb73927a94da5ddc3f6774f8df2efcb7deecf2fa

În continuare se prezintă fişierul /etc/raccoon/ raccoon.conf:

path pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/racoon/certs";
remote 10.6.17.254 {
exchange_mode main, base;
lifetime time 12 hour;
proposal {
encryption_algorithm 3des;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group 2;
}
generate_policy off;
}
sainfo anonymous {
pfs_group 2;
encryption_algorithm 3des;
authentication_algorithm hmac_sha1;
compression_algorithm deflate;
}

Acest fişier de configurare în primul rand defineşte unde serviciul raccoon poate gasi cheile prepartajate. Apoi sunt definite celălalt nod al tunelului şi parametrii utilizaţi pentru faza 1 a negocierii IKE. Al doilea paragraf specifică parametrii care pot fi utilizaţi pentru configurarea asocierilor de securitate Aici sunt definiţi algoritmii de criptare, de autentificare şi de compresie utilizaţi pentru SA.

Daemon-ul IKE nu începe negocierea tunelului imediat atunci când este pornit. Mai degrabă, racoon aşteaptă până când tunelul este necesar. Pentru ca această notificare să apară kernel-ul trebuie să ştie când să anunţe daemon-ul racoon. Pentru a realiza acest lucru, administratorul trebuie să definească politici de securitate, fără asocierile de securitate adecvate. Atunci când kernel-ul Linux trebuie să protejeze un pachet în funcţie de politicile de securitate şi atunci când nici o asociere de securitate nu este disponibil, kernel-ul Linux apelează daemon-ul racoon şi solicită asocierile de securitate necesare. Racoon va porni negocierile IKE şi va crea asocierile de securitate, iar kernel-ul Linux poate trimite apoi pachetele.

Dacă după pornirea serviicilor racoon şi setkey, pe staţia EAST se execută ping -c 1 10.0.8.10 pe staţia WEST tcpdump ne va da următorul output:

15:05:32.059724 IP WEST.isakmp > EAST.isakmp: isakmp: phase 1 I ident
15:05:32.060675 IP EAST.isakmp > WEST.isakmp: isakmp: phase 1 R ident
15:05:32.065591 IP WEST.isakmp > EAST.isakmp: isakmp: phase 1 I ident
15:05:32.070283 IP EAST.isakmp > WEST.isakmp: isakmp: phase 1 R ident
15:05:32.079349 IP WEST.isakmp > EAST.isakmp: isakmp: phase 1 I ident[E]
15:05:32.079773 IP EAST.isakmp > WEST.isakmp: isakmp: phase 1 R ident[E]
15:05:32.079848 IP EAST.isakmp > WEST.isakmp: isakmp: phase 2/others R inf[E]

Leave a Reply