lunes, 23 de junio de 2008

Configuracion De IPsec En Linux

Configuracion de Ipsec en linux

Lo primero es instalar el paquete de IPsec.

#apt-get install ipsec-tools

El archivo de configuracion que se crea al instalar el paquete se llama ipsec-tools.conf y esta ubicado en el directorio /etc. Por defecto el archivo contiene las siguientes lineas:

#!/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;

#


Ahora veamos los parametros que debemos modificar en el archivo de configuracion:

Primero que nada debemos descomentar los parametros

flush;

spdflush;


Recordemos que IPsec soporta dos protocolos que son AH (AUTHENTICATION HEADER) y ESP (ENCAPSULATION SECURITY PAYLOAD) y vamos a ver la configuracion de IPsec con cada uno y con ambos.


Configuracion de IPsec con AH

AH es un protocolo que proporciona en el ámbito de IPSec la autenticación del emisor y la integridad del mensaje mediante el cálculo de un código HMAC.

  • Para que nuestro IPsec trabaje con AH debemos agregar las siguientes lineas en el archivo de configuracion (las direcciones IP utilizadas aqui son para el caso del ejemplo, para otra configuracion debes tener en cuenta el rango de direccionamiento de tu red):

add 192.168.0.10 192.168.0.20 ah 0x200 -A hmac-md5 "abcdefghijklmnop";
add 192.168.0.20 192.168.0.10 ah 0x300 -A hmac-md5 "abcdefghijklmnop";

192.168.0.10 es mi direccion IP y 192.168.0.20 es la direccion del equipo con el estableceremos la conexion IPsec, hmac-md5 es el algoritmo que usaremos y
"abcdefghijklmnop" es la clave precompartida que debe ser de 1024 bits ya que esto es lo que soporta md5. La longitud varia dependiendo del algoritmo que se utilize.
La segunda linea se agrega para establecer la conexion en sentido contrario, estableciendo asi la comunicacion en doble sentido.



  • Tambien modificamos las siguientes lineas:

spdadd 192.168.0.10 192.168.0.20 any -P out ipsec
ah/transport//require;

spdadd 192.168.0.20 192.168.0.10 any -P in ipsec
ah/transport//require;

Asi especificamos nuevamente la comunicacion en ambos sentidos y tambien que trabajaremos con AH.

Asi queda el archivo de configuracion correcto:

#!/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
add 192.168.0.10 192.168.0.20 ah 0x200 -A hmac-md5 "abcdefghijklmnop";
add 192.168.0.20 192.168.0.10 ah 0x300 -A hmac-md5 "abcdefghijklmnop";

#
spdadd 192.168.0.10 192.168.0.20 any -P out ipsec
ah/transport//require;

#
spdadd 192.168.0.20 192.168.0.10 any -P in ipsec
ah/transport//require;

#

  • Algo que debemos tener en cuenta es que en el equipo con el que vamos a establecer la conexion IPsec debe tener los mismos parametros configurados pero en sentido contrario al nuestro, por ejemplo, veamos como se veria el archivo de configuracion del equipo 192.168.0.20:

#!/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
add 192.168.0.20 192.168.0.10 ah 0x300 -A hmac-md5 "abcdefghijklmnop";
add 192.168.0.10 192.168.0.20 ah 0x200 -A hmac-md5 "abcdefghijklmnop";

#
spdadd 192.168.0.20 192.168.0.10 any -P out ipsec
ah/transport//require;

#
spdadd 192.168.0.10 192.168.0.20 any -P in ipsec
ah/transport//require;

#


  • Despues de tener listo el archivo de configuracion recargamos IPsec

#
setkey -f /etc/ipsec-tools.conf

  • Ahora podemos comprobar si esta funcionando capturando paquetes con el comando tcpdump.

Si la configuracion esta correcta debemos ver un resultado como este:



Muy bien asi terminamos la configuracion de IPsec con AH.


Configuracion de IPsec con ESP

ESP es un protocolo que proporciona en el ámbito IPSec confidencialidad, autenticación y protección de integridad utilizando llaves cifradas.

Ya sabemos lo que significa cada parametro de las lineas del archivo entonces no veo la necesidad de volverlas a explicar por lo cual solo pondre como queda el archivo de configuracion terminado:

#!/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
add 192.168.0.10 192.168.0.20 esp 0x201 -E 3des-cbc "abcdefghijklmnopqrstuvwx";
add 192.168.0.20 192.168.0.10 esp 0x301 -E 3des-cbc "abcdefghijklmnopqrstuvwx";

#
spdadd 192.168.0.10 192.168.0.20 any -P out ipsec
esp/transport//require;

#
spdadd 192.168.0.20 192.168.0.10 any -P in ipsec
esp/transport//require;

#

Las 2 diferencias principales en comparacion con la configuracion de AH son: El algoritmo de cifrado cambio de md5 a 3des y por eso la longitud de la clave precompartida cambia a 2048 bites, es decir 24 caracteres y que ahora la opcion "-A" cambio a "-E" para encriptar.


  • Recargamos IPsec


#setkey -f /etc/ipsec-tools.conf


  • Luego hacemos la misma prueba que con AH usando tcpdump.

Si la configuracion es correcta nos debe mostrar un resultado como este:



Terminamos con la configuracion de IPsec con ESP.


Configuracion de IPsec con AH y ESP

Es posible que IPsec funcione con AH y ESP juntos para hacerlo mucho mas seguro. Para hacerlo simplemente juntamos las dos configuraciones que hicimos anteriormente, veamos como queda el archivo de configuracion:

#!/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
add 192.168.0.10 192.168.0.20 ah 0x200 -A hmac-md5 "abcdefghijklmnop";
add 192.168.0.20 192.168.0.10 ah 0x300 -A hmac-md5 "abcdefghijklmnop";
add 192.168.0.10 192.168.0.20 esp 0x201 -E 3des-cbc "abcdefghijklmnopqrstuvwx";
add 192.168.0.20 192.168.0.10 esp 0x301 -E 3des-cbc "abcdefghijklmnopqrstuvwx";

#
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;

#

  • Recargamos IPsec

#setkey -f /etc/ipsec-tools.conf

  • Capturamos trafico con tcpdump y nos debe mostrar un resultado como este:



Listo asi termina la configuracio de IPsec con AH y ESP.


2 comentarios:

Unknown dijo...

Hola,

Enhorabuena por el artículo (y por el fondo de escritorio :-). Tan sólo una apreciación a nivel técnico. Sería interesante como trabajo del módulo una configuración IPsec entre un linux y un Windows Server (2003 o 2008). A nivel profesional dicha configuración es mas habitual que lo que uno pueda llegar a pensar. (si yo fuera tu profe te lo hubiera pedido) ;-)

Un saludo.

LinuxCuba dijo...

Exactamente busco la misma solución alguna forma de intercomunicar usando IPsec linux contra un windows server 2003 o 2008, alguna aclaración o sugerencia. Gracias por el articulo.