next up previous contents
Siguiente: memoria Subir: Servicios requeridos Anterior: Servicios requeridos   Índice General

startsectionparagraph4@-3.25ex plus -1ex minus -.2ex1.5ex plus .2exOpenSWAN

La configuración de IPSec tiene dos partes bien diferenciadas. Por un lado, la configuración de los parámetros generales y las VPN que vamos a establecer, y por otro la configuración de criptografía que compartimos con los terminadores de túneles de Telefónica. Los ficheros de configuración se encuentran en el directorio /etc/ipsec/.

Uno de los requisitos impuestos por Telefónica es la utilización de claves alfanúmericas de 8 caracteres, en mayúsculas, como secretos pre-compartidos para el intercambio de claves IKE. Como hemos visto en la descripción teórica de la introducción, esto es nefasto si se combina con el uso de IKE en modo agresivo. Para indicar a IPSec los secretos compartidos con los clientes remotos utilizamos el fichero /etc/ipsec/ipsec.secrets. En este fichero indicamos por cada línea un cliente conocido con el que compartimos un secreto, en el formato IP_Local IP_Remota : PSK "SECRETO". Seguimos esta sintaxis para indicar los dos terminadores de túneles de Telefónica:

193.147.184.193 195.55.47.10 : PSK "SECRETO!"
193.147.184.193 195.55.47.11 : PSK "SECRETO!"

La configuración general de IPSec y los perfiles para las asociaciones de seguridad se establece en el fichero /etc/ipsec/ipsec.conf. Está estructurado en secciones, cada una con sus correspondientes tuplas de configuración, en la forma variable=valor. El bloque setup establece las opciones generales de la pila de protocolos de IPSec, como por ejemplo, si utilizar o no las opciones de NAT Traversal, o el nivel de detalle de los registros de actividad. Dentro del bloque %default definiremos las opciones que deseamos sean comunes a cada asociación de seguridad, de forma que no tengamos que especificarlas por cada conexión que creemos. Por último, definimos los perfiles cifrador1 y cifrador2 que describen los parámetros concretos de las conexiones con los terminadores de túneles de Telefónica. Nos limitaremos a indicar las direcciones IP de los mismos, y la ruta a un script que deberá ejecutarse al iniciar una asociación de seguridad con ellos.

version 2.0     # conforms to second version of ipsec.conf specification

# configuración básica
config setup
        interfaces="ipsec0=eth0"
        klipsdebug=none
        plutodebug=none
        plutoopts=%search
        pluto=%search
        uniqueids=yes
        nat_traversal=no

# valores por defecto para todas las conexiones
conn %default
        # modo transporte
        type=transport
        keyingtries=0
        disablearrivalcheck=no
        authby=secret
        pfs=no
        ikelifetime=10000s
        # algoritmos de cifrado y resumen
        esp=3des-sha1
        keylife=3600s
        # ip del terminador urjc
        left=193.147.184.193
        # gateway
        leftnexthop=193.147.184.1
        leftprotoport=0/0
        rightprotoport=0/0
        auto=start

# perfil para conexiones con cifrador 1
conn cifrador1
        # script de inicio de la conexión
        leftupdown=/etc/conf.d/network-scripts/ud_tun0
        right=195.55.47.10

# perfil para conexiones con cifrador 2
conn cifrador2
        # script de inicio de la conexión
        leftupdown=/etc/conf.d/network-scripts/ud_tun1
        right=195.55.47.11

En la configuración anterior indicamos dos scripts, /etc/conf.d/network-scripts/ud_tun0 y /etc/conf.d/network-scripts/ud_tun1, que se ejecutarán cuando se crean o se destruyen las asociaciones definidas en el perfil correspondiente. A continuación incluímos cada uno de los dos scripts referenciados, respectivamente. Cuando la asociación cambie de estado entre los terminadores, se eliminará el túnel en caso de existir, y se volverá a crear con los parámetros adecuados. Para que estos cambios se vean reflejados en el encaminamiento, reiniciaremos los demonios zebra y RIP.

# script que se ejecuta cuando la asociación ipsec cambia de estado
TUNEL=`/sbin/ifconfig | grep tunnel0 | awk '{print $1}'`

if [ $TUNNEL ]; then
        ifconfig tunnel0 down
        ip tunnel del name tunnel0
fi
ip tunnel add name tunnel0 mode ipip remote 195.55.47.10 local 193.147.184.193 \
 dev ipsec0 ttl 255
ifconfig tunnel0 up 195.55.47.2 netmask 255.255.255.252 pointopoint 195.55.47.1 \
 mtu 1500 multicast

/etc/init.d/zebra restart
/etc/init.d/ripd restart

# script que se ejecuta cuando la asociación ipsec cambia de estado
TUNEL=`/sbin/ifconfig | grep tunnel1 | awk '{print $1}'`

if [ $TUNNEL ]; then
        ifconfig tunnel1 down
        ip tunnel del name tunnel1
fi
ip tunnel add name tunnel1 mode ipip remote 195.55.47.11 local 193.147.184.193 \
 dev ipsec0 ttl 255
ifconfig tunnel1 up 195.55.47.6 netmask 255.255.255.252 pointopoint 195.55.47.5 \
 mtu 1500 multicast

/etc/init.d/zebra restart
/etc/init.d/ripd restart


next up previous contents
Siguiente: memoria Subir: Servicios requeridos Anterior: Servicios requeridos   Índice General
Jaime Perez Crespo 2005-02-09