martes, 1 de julio de 2008

Configuracion De IPsec En Linux Utilizando Racoon

Racoon es un software que se comunica atravez de IKE (ISAKMP / Oakley) para establecer una asociacion de seguridad entre varios equipos.

Debemos instalar el paquete desde el repositorio:

#apt-get install racoon

El directorio donde se almacenanlos archivos es: /etc/racoon

Debemos configurar la clave precompartida con la que se estableceran las conexiones, esto lo hacemos desde el archivo /etc/racoon/psk.txt

#pico /etc/racoon/psk.txt

Un archivo psk.txt correctamente configurado se veria asi:

# Direcciones IPv4
192.168.0.20 clave precompartida simple 192.168.0.10 "abcdefghijklmnopqrstuvwx"
# USER_FQDN
#sgarcia@misena.edu.co Esta es una clave precompartida para una dirección de correo
# FQDN
#www.spenneberg.net Esta es una clave precompartida

# IPv4/v6 addresses
#10.160.94.3 mekmitasdigoat
#172.16.1.133 0x12345678
#194.100.55.1 whatcertificatereally
#3ffe:501:410:ffff:200:86ff:fe05:80fa mekmitasdigoat
#3ffe:501:410:ffff:210:4bff:fea2:8baa mekmitasdigoat
# USER_FQDN
#foo@kame.net mekmitasdigoat
# FQDN
#foo.kame.net hoge


La parte resaltada es la mas importante puesto que alli configuramos las direcciones IP de los eqipos que se comunicaran utilizando esa clave precompartida (las direcciones cambian segun el caso de cada red y la configuracion debe ser igual en el otro equipo pero con las direcciones invertidas).


Despues de terminar la configuracion de este archivo pasamos a configurar el archivo racoon.conf.

#pico /etc/racoon.conf

Desde este archivo configuraremos los algoritmos de cifrado entre otras cosas.
Veamos el archivo

# NOTE: This file will not be used if you use racoon-tool(8) to manage your
# IPsec connections. racoon-tool will process racoon-tool.conf(5) and
# generate a configuration (/var/lib/racoon/racoon.conf) and use it, instead
# of this file.
#
# Simple racoon.conf
#
#
# Please look in /usr/share/doc/racoon/examples for
# examples that come with the source.
#
# Please read racoon.conf(5) for details, and alsoread setkey(8).
#
#
# Also read the Linux IPSEC Howto up at
# http://www.ipsec-howto.org/t1.html
#

path pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/racoon/certs";

remote 192.168.0.20 {
exchange_mode main,aggressive;
proposal {
encryption_algorithm 3des;
hash_algorithm md5;
authentication_method pre_shared_key;
dh_group modp768;
}
generate_policy off;
}

sainfo address 192.168.0.10[any] any address 192.168.0.20[any] any {
pfs_group modp768;
encryption_algorithm 3des;
authentication_algorithm hmac_md5;
compression_algorithm deflate;
}
sainfo address 192.168.0.20[any] any address 192.168.0.10[any] any {
pfs_group modp768;
encryption_algorithm 3des;
authentication_algorithm hmac_md5;
compression_algorithm deflate;
}


Si nos ponemos a analizar detalladamente este archivo veremos que al igual que en los demas archivos que hemos configurado para trabajar con IPsec se deben generar parametros de comunicacion que involucran las direcciones IP de los equipos que se van a comunicar de forma segura, tambien podemos ver que en el parametro "remote" como es obvio debemos poner la direccion IP del equipo remoto, tambien desde aca definimos los algoritmos de cifrado y autenticacion que en este caso son:

Cifrado: 3des
Autenticacion: hmac_md5


Por ultimo debemos configurar el archivo de configuracion de IPsec.

#pico /etc/ipsec-tools.conf

Asi quedaria el archivo configurado correctamente:

#!/usr/sbin/setkey -f

# NOTE: Do not use this file if you use racoon with racoon-tool
# utility. racoon-tool will setup SAs and SPDs automatically using
# /etc/racoon/racoon-tool.conf configuration.
#

## Flush the SAD and SPD
#
flush;
spdflush;

## Some sample SPDs for use racoon
#
# spdadd 10.10.100.1 10.10.100.2 any -P out ipsec
# esp/transport//require;
#
# spdadd 10.10.100.2 10.10.100.1 any -P in ipsec
# esp/transport//require;
#

# Políticas de seguridad
spdadd 192.168.0.10 192.168.0.20 any -P out ipsec
esp/transport//require;
# ah/transport//require;
spdadd 192.168.0.20 192.168.0.10 any -P in ipsec
esp/transport//require;
# ah/transport//require;

Despues de tener los archivos de configuracion correctamente configurados reiniciamos los servicios:

#setkey -f ipsec-tools.conf

#/etc/init.d/racoon restart

Con esto terminamos la configuracion de IPsec con Racoon. Veamos una captura realizada con una configuracion correcta.