IPSEC EN LINUX intercambio manual de claves

IPSEC Es una extensión al protocolo IP de seguridad que asegura los 4 principios básicos de la seguridad, Confidencialidad, Integridad, Disponibilidad y no repudio,


*Se basa en el RFC 2401

*Un conjunto de protocolos

*Una serie de mecanismos de autenticación y encriptación


Cuenta con servicios como:

*Autenticación mutua: IPSec permite el intercambio y la comprobación de identidades sin exponer la información a la interpretación de un atacante estableciendo confianza entre sistemas que se comunican.

*Anti-replay: Asegura que el mensaje transmitido no se pueda replicar porque dicho mensaje tiene un número en secuencia, el cual no se puede repetir

*Confidencialidad: Es la propiedad de un mensaje en la que únicamente esta autorizado para ser leído o entendido por algunas personas o entidades.

*Integridad: Asegura que los datos transmitidos no sean modificados por terceros

*Control de Acceso: Se pueden aplicar reglas de seguridad que definen el nivel de seguridad deseado para acceder a alguna información


FUNCIONA EN DOS MODOS

Modo Transporte: para comunicaciones de un PC a otro, ambos deben implementar IPSec, utiliza el payload o caga IP o los datos de la información es decir sólo la carga útil (los datos que se transfieren) del paquete IP es cifrada y/o autenticada. El enrutamiento permanece intacto, ya que no se modifica ni se cifra la cabecera IP.

Modo Tunel: comunicación entre redes, es decir los paquetes viajan por dispositivos que los enrutan, por esta razón la implementación de IPSec en modo t

unel debe implementarse en los intermediarios como enrutadores, encripta la nueva cabecera IP que el Router adiciona al paquete, además de encriptar el payload.

FAMILIA DE PROTOCOLOS QUE CONFORMAN IPSEC

Authtentication Header, AH: permite que en el intercambio de datos, los paquetes sean firmados, es decir, asegura que no se modifiquen y que no sean generados desde otras fuentes, pero no asegura que dicha comunicación no pueda ser vista por terceros, entonces, cualquiera puede interpretar los datos pero si lo modifica será descubiertos. SHA y MD5 son los encargados de las firmas.

Encaptulation Security Payload, ESP: Encripta el paquete garantizando la Integridad, Disponibilidad, Confidencialidad y No repudio como principios de la seguridad, cumpliendo con las tareas del anterior protocolo mas la encriptación que propende por la confidencialidad de la información. DES, 3DES, AES y Blowfish son los algoritmos más usados en este protocolo.

Internet key Exchange IKE: resuelve el problema más importante del establecimiento de comunicaciones seguras: la autenticación de los participantes y el intercambio de claves simétricas, crea las asociaciones de seguridad. IKE emplea el puerto 500 UDP para su comunicación.

*en la primera fase suele basarse en claves compartidas con anterioridad (PSK - Pre-shared keys), claves RSA y certificados X.509

*la segunda fase, el protocolo IKE intercambia propuestas de asociaciones de seguridad y negocia asociaciones de seguridad

En la primera fase de esta entrada de intercambios de claves manuales implementaremos IPSEC con el sub protocolo AH en modo transporte, pues aunque al parecer sencillo es el inicio de una serie de usos y configuraciones similares mas complejas como en el caso de ESP incluso el modo Túnel.

Paso 1

Lo primero que haremos será instalar las herramientas necesarias para la aplicación de la seguridad sobre el protocolo IP

#apt-get install ipsec-tools

Paso 2

En segundo lugar generamos las claves que se preconpartiran al momento de la autenticación de los dos equipos que se comunicaran, recordemos que el modo transporte es para conexiones punto a punto. Las crearemos aleatoriamente con la longitud requerida por AH 16 bytes ó 128 bits.


#dd if=/dev/random count=16 bs=1 | xxd -ps


Hemos generado la clave que el host local enviara al host remoto para que este cifre con esta lo que al local se le enviara, falta generar la clave del equipo remoto con la cual se le cifrara lo que a él se envia, ejecutamos el mismo comando y la preparamos para incorporarla al archivo de configuración de IPSEC


Paso 3

En este campo debemos prestar especial atención, pues estaremos especificando a IPSec como trabajara con el equipo remoto que se desea establecer el intercambio seguro de datos, Es imperante aclarar que esta configuración debe hacerse de forma similar en el equipo remoto, teniendo en cuenta la entrada y la salida de datos de cada uno, indicaremos a continuación como serian las líneas para cada extremo de la comunicación (local _ remoto)

Con las claves anteriormente generadas y las IP de los equipos sobre conocimiento, editamos el archivo ipsec-tools.conf y deberá parecerse al siguiente según las IP y demás requerimientos


#nano /etc/ipsec-tools.conf

ipsec-tools.conf



en el anterior archivo hemos descomentado las líneas “Flush the SAD and SPD” , para permitir setiar o volver al principio las bases de datos que almacenan las políticas de seguridad y las asociaciones de seguridad.


flush;
spdflush;

Las asociaciones de seguridad se especifican con la variable "add" acompañada de otras que definen, IP de origen y destino, el protocolo IPsec (ah ), el SPI (0x200 ) y el algoritmo. El algoritmo de autenticación se especifica con -A (el de cifrado con -E)


add (ip-local) (ip-destino) (protocolo) (SPI) (algoritmo) (clave-equipo local)
add (ip-remota) (ip-local) (protocolo) (SPI) (algoritmo) (clave-equipo remoto)

Las asociaciones especificadas en las líneas anteriores deben definirse como las politicas de seguridad que regirán la comunicación, con la variable "spd", estas políticas definen qué paquetes se protegerán con IPsec y qué protocolos y claves emplear.


spdadd 192.168.1.148 192.168.1.124 any -P out ipsec ah/transport//require;

spdadd 192.168.1.124 192.168.1.148 any -P in ipsec ah/transport//require;


es necesario especificar en las direcciones IP origen y destino de los paquetes a proteger, el protocolo y puerto (any) y la política a emplear (-P). La política especifica, la dirección (in/out) la acción a aplicar (ipsec/discard/none), el protocolo (ah/esp/ipcomp), el modo (transpor/tunel) y el nivel (use/require).

En el mismo fichero "/etc/ipsec-tools.conf" pero en el equipo remoto, debemos tener las mismas líneas pero con un orden cambiado, donde le especifique a ese equipo quien será el host remoto y de que forma se comunicara con él como local.


En el segundo equipo cambiar este orden:

spdadd 192.168.1.148 192.168.1.124 any -P out ipsec ah/transport//require;
spdadd 192.168.1.124 192.168.1.148 any -P in ipsec ah/transport//require;

por este ordén:

spdadd 192.168.1.148 192.168.1.124 any -P in ipsec ah/transport//require;
spdadd 192.168.1.124 192.168.1.148 any -P out ipsec ah/transport//require;


El archivo como lo hemos advertido no tendría cambios dramáticos, pero para efectos pedagógicos decidimos exponer el archivo del host remoto a continuación, para tener la vista de ambos como sería realmente


ipsec-tools.conf_2


Al tener los equipos con las configuraciones necesarias procedemos a cargar los archivos para que sean tomados por el demonio correspondiente, en este caso debemos setear el archivo de configuración.


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


Existen otros dos comandos que nos muestran las bases de datos que se cargan al correr los demonios con la anterior configuración, si estos comando se ejecutan sin ningún inconveniente quiere decir que la configuración se ha realizado correctamente.

#setkey –D

#setkey –PD


Con esto podemos dar como exitosa la implementación de IPsec con AH, pero antes debemos probar que nos arroje los datos correspondientes a dicho modo de IPsec, instalamos "tcpdump" para capturar los paquetes correspondientes a la configuración realizada.

#apt-get install tcpdump



Ahora si podemos verificar que todo este corriendo correctamente con el comando que capture los paquetes en este caso AH de nuestra implementación IPsec

#ping 192.168.1.128 | tcpdump | grep AH



La prueba se ha realizado con el protocolo ICMP y podemos observar como AH permite el envio de los paquetes de este protocolo, cuando ya de madera automatica a intercambiado llaves y establecido la conexión.

referencias:
lartc.org/howto/lartc.ipsec.html
http://www.ipsec-howto.org/spanish/x257.html