martes, 1 de julio de 2008

Configuracion De IPsec en Linux

Debemos instalar primero el paquete de IPsec.

#apt-get install ipsec-tools

-Cuando instalamos ipsec debemos ver si existe un archivo llamado
ipsec-tools.conf, este aparece en el directorio /etc esta es una muestra de lo que contiene este archivo.


-Estas son las lineas que debemos modificar:


primero debemos descomentar las lineas


# flush;
# spdflush;

NOTA: ipsec trabaja con AH (AUTHENTICATION HEADER) y ESP (ENCAPSULATION SECURITY PAYLOAD). y vamos a configurar IPsec con cada uno de ellos.

*
Configuracion 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.

-
Debemos agregar las siguientes lineas en el archivo de configuracion para que nuestro IPsec trabaje con AH (las direcciones IP utilizadas aqui son para el caso del ejemplo, para otra configuracion debes tener en cuenta el rango de direccionamiento de la 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 debemos configurar las siguientes lineas del archivo ipsec-tools.conf

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:


La configuracion de ipsec con AH esta terminada.


* 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.

El archivo terminado con ESP queda de esta manera:

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

-Hacemos la misma prueba que con AH usando tcpdump.


si nos aparece el siguiente resultado esto significa que todo esta bien configurado:

con esto hemos terminado la configuracion de ipsec con esp y seguiremos con:

* Configurcion 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;

#

-Capturamos trafico con tcpdump y nos debe mostrar un resultado como este, debemos copiar el siguiente comando esto se hizo tambien con las anteriores capturas:

#tcpdump -i eth0 src host 192.168.0.20 or dst host 192.168.0.20





Damos por terminado la configuracion de ipsec con ah y esp.