6.12. Configuración de IPsec de red-a-red

IPsec también se puede configurar para conectar una red completa (tal como una LAN o una WAN) a una red remota a través de una conexión red-a-red. Una conexión red-a-red requiere la configuración de enrutadores IPsec en cada lado de las redes conectantes para procesar y enrutar la información desde un nodo en una red a otro nodo en la red remota. La Figura 6-2 muestra una conexión IPsec de red-a-red en túnel.

Figura 6-2. Una conexión en túnel IPsec de red-a-red

El diagrama muestra dos LANs separadas por la Internet. Estas redes utilizan enrutadores IPsec para autenticar e iniciar una conexión usando un túnel seguro a través de la Internet. Los paquetes que son interceptados en tránsito requerirán un descifrado de fuerza bruta para poder descifrar el código protegiendo los paquetes entre las LANs. El proceso de comunicación desde un nodo en el intervalo IP 192.168.1.0/24 al otro en 192.168.2.0/24 es completamente transparente a los nodos puesto que el procesamiento, encriptación/descifrado y el enrutamiento de los paquetes IPsec es manejado completamente por el enrutador IPsec.

La información necesaria para la conexión red-a-red incluye:

Por ejemplo, suponga una LAN A (lana.example.com) y una LAN B (lanb.example.com) que desean conectarse entre ellas a través de un túnel IPsec. La dirección de red para la LAN A están en el intervalo 192.168.1.0/24, mientras que LAN B utiliza el intervalo 192.168.2.0/24. La dirección IP de la puerta de enlace es 192.168.1.254 para la LAN A y 192.168.2.254 para la LAN B. Los enrutadores IPSEC están separados de cada puerta de enlace de las LANs y utilizan dos dispositivos de redes: eth0 está asignado a una dirección IP estática accesible externamente la cual accesa la Internet, mientras que eth1 actúa como un punto de enrutamiento para procesar y transmitir paquetes LAN desde un nodo de la red a los nodos de redes remotos.

La conexión IPsec entre cada red utiliza una llave pre-compartida con el valor de r3dh4tl1nux, y los administradores de A y B acuerdan dejar que racoon genere automáticamente y comparta una llave de autenticación entre cada enrutador IPsec. El administrador de la LAN A decide nombrar la conexión IPSEC ipsec0, mientras que el administrador de la LAN B llama a su conexión IPSEC ipsec1.

Lo siguiente es el archivo ifcfg para una conexión IPsec de red-a-red para la LAN A. El nombre único para identificar la conexión en este ejemplo es ipsec1, por lo que el archivo resultante es llamado /etc/sysconfig/network-scripts/ifcfg-ipsec1.

TYPE=IPsec
ONBOOT=yes
IKE_METHOD=PSK
SRCGW=192.168.1.254
DSTGW=192.168.2.254
SRCNET=192.168.1.0/24
DSTNET=192.168.2.0/24
DST=X.X.X.X

La conexión se configura para iniciarse en el arranque (ONBOOT=yes) y utiliza un método de autenticación de llave pre-compartida (IKE_METHOD=PSK). El administrador para la LAN A ingresa la puerta de enlace destino, la cual es la puerta de enlace para la LAN B (DSTGW=192.168.2.254) así como también la puerta de enlace fuente, la cual es la dirección IP de la puerta de enlace para la LAN A (SRCGW=192.168.1.254). El administrador luego introduce la red destino, la cual es el intervalo de red para la LAN B (DSTNET=192.168.2.0/24) así como también la red fuente (SRCNET=192.168.1.0/24). Finalmente, el administrador ingresa la dirección IP destino, la cual es la dirección IP accesible externamente para la LAN B (X.X.X.X).

Lo siguiente es el archivo de la llave pre-compartida (llamado /etc/sysconfig/network-scripts/keys-ipsecX donde X es 0 para la LAN A y 1 para la LAN B) que ambas redes utilizan para autenticarse mutuamente. Los contenidos de este archivo deberían ser idénticos y solamente el usuario root debería tener acceso a leer o escribir en este archivo.

IKE_PSK=r3dh4tl1nux

ImportanteImportante
 

Para cambiar el archivo keys-ipsec0 para que solamente el usuario root pueda leerlo o modificarlo, ejecute el comando siguiente después de crear el archivo:

chmod 600 /etc/sysconfig/network-scripts/keys-ipsec1

Para cambiar la llave de autenticación en algún momento, modifique el archivo keys-ipsecX en ambos enrutadores IPsec. Ambas llaves deber ser idénticas para obtener una conectividad apropiada.

Lo siguiente es el archivo de configuración /etc/racoon/racoon.conf para la conexión IPsec. Observe que la línea include al final del archivo sólo aparece si se está conectado al túnel IPsec pues esta es automáticamente generada cada vez que se activa la conexión IPsec.

# Racoon IKE daemon configuration file.
# See 'man racoon.conf' for a description of the format and entries.

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

sainfo anonymous
{
	pfs_group 2;
	lifetime time 1 hour ;
	encryption_algorithm 3des, blowfish 448, rijndael ;
	authentication_algorithm hmac_sha1, hmac_md5 ;
	compression_algorithm deflate ;
}
include "/etc/racoon/X.X.X.X.conf"

A continuación se muestra el archivo específico para la conexión a la red remota. El archivo es llamado X.X.X.X.conf (reemplace X.X.X.X con la dirección IP del enrutador IPsec remoto). Observe que este archivo es generado automáticamente una vez que el túnel IPsec es activado y no se debería modificar directamente.

;
remote X.X.X.X
{
        exchange_mode aggressive, main;
        my_identifier address;
        proposal {
                encryption_algorithm 3des;
                hash_algorithm sha1;
                authentication_method pre_shared_key;
                dh_group 2 ;
        }
}

Antes de iniciar la conexión IPsec, se debería activar el reenvío IP en el kernel. Como usuario root en el intérprete de comandos, active el reenvío IP:

  1. Modifique /etc/sysctl.conf y configure net.ipv4.ip_forward a 1.

  2. Ejecute el comando siguiente para activar el cambio:

    sysctl -p /etc/sysctl.conf

Para iniciar la conexión IPsec, reinicie los enrutadores IPsec o ejecute el comando siguiente en cada enrutador como usuario root:

/sbin/ifup ipsec0

Las conexiones son activadas y ambas LAN A y LAN B son capaces de comunicarse entre ellas. Los enrutadores se crean automáticamente a través del script de inicialización que se llama ejecutando ifup en la conexión IPsec. Para mostrar una lista de rutas para la red, ejecute el comando siguiente:

/sbin/ip route list

Para evaluar la conexión IPsec, ejecute la utilidad tcpdump en el dispositivo enrutable externamente (eth0 en este ejemplo) para así ver los paquetes de red que están siendo transmitidos entre los hosts (o redes) y verificar que están encriptados a través de IPsec. Por ejemplo, para verificar la conectividad IPsec de la LAN A, escriba lo siguiente:

tcpdump -n -i eth0 host lana.example.com

El paquete debería incluir una cabecera AH y se deberían mostrar como paquetes ESP. ESP significa que están encriptados. Por ejemplo (las barras oblícuas denotan la continuación de una línea):

12:24:26.155529 lanb.example.com > lana.example.com: AH(spi=0x021c9834,seq=0x358): \
	  lanb.example.com > lana.example.com: ESP(spi=0x00c887ad,seq=0x358) (DF) \
	  (ipip-proto-4)