IPsec

El objetivo es conectar sitios remotos y los usuarios de cada sitio entre si.

Esta opción se toma por coste o cuando la única conectividad posible es a través de Internet.

Este tipo de VPNs se utiliza para conectar con delegaciones, con sitios de clientes o incluso accesos remotos de usuarios que tienen en su casa un ordenador y un teléfono de voip o alguna configuración más compleja que no permite la utilización de vpn ssl u openvpn.

Montar un túnel al final es como montar un Lego. Tenemos una serie de piezas y las tenemos que juntar, pero las tenemos que juntar negociando con el otro extremo.

Lo primero será saber si vamos a utilizar en IPSec con ESP, AH o los dos juntos.

Luego tendremos que ver el algoritmo de cifrado, podemos usar DES, 3DES o AES. Esto es lo que nos proporciona la confidencialidad de los datos.

Otra cosa a ver es cómo autenticamos al origen, ya sea con claves precompartidas PSK, o certificados RSA o ECDSA.

Y finalmente queremos saber cómo vamos a gestionar esas llaves DH, IKE, IKEv2, ECDH

Una vez que tenemos montado el Lego tenemos que ver cual es el proceso de la negociación entre los dos extremos para crear y establecer el túnel.

1.- Cuando se quiere mandar un paquete desde una máquina en la primera sede a otra máquina en la otra sede dentro de la misma VPN, se manda el paquete a la puerta de enlace. Cuando el paquete llega a la puerta de enlace se comparará con el cryto ACL, si hace match se considerará ese tráfico interesante y tendrá que ser encriptado para mantener el cifrado, integridad y esa serie de cosas.
El Crypto ACL es algo que en el cryptomap se utiliza y el cryptomap se utiliza en el interfaz de salida ya que se aplica al tráfico que abandona el router tras haber tomado la decisión de encaminamiento o routing.

Al ser tráfico interesante vamos a buscar una asociación de seguridad IPSEC. Esta asociación lo que hace es negociar entre los routers, el origen y el destino. Si tenemos levantado el túnel lanzaremos el tráfico por ahí. y si no está levantado iniciaremos la negocación IKE.

ISAKMP -> Internet Security Association Key Management Protocol

Parámetros de ISAKMP
Parámetros de ISAKMP en Cisco

2.- En ISAKMP intercambiamos las llaves, esta es la fase 1 de IKE.

3.- Con el ISAKMP SA, que es bidireccional, vamos a negociar el IPSEC SA

El IPSEC SA es la negociación de las reglas para el tráfico de usuarios, es decir, creamos un túnel para negociar un túnel. Y ya tenemos la fase 2

4.- Para el tráfico de vuelta usamos el ISAKMP SA que ya estaba establecido, pero vamos a necesitar levantar otra IPSEC SA, otra fase 2 ya que esto es asimétrico.

Esta sería la forma de trabajar de IKE v1

En cuanto a los protocolos relacionados, y que hay que abrir en los firewalls son:

AHP – Authentication Header Protocol
ESP – Encapsulated Security Payload
Y en UDP tenemos ISAKMP, los puertos 500 y 4500, el 4500 es para evitar problemas con nats.

Configuración de acceso

Para configurar lo primero será definir un access-list con el tráfico permitido

access-list 101 permit ahp host 10.10.10.2 host 10.10.10.1
access-list 101 permit esp host 10.10.10.2 host 10.10.10.1
access-list 101 permit udp host 10.10.10.2 host 10.10.10.1 eq isakmp
access-list 101 permit udp host 10.10.10.2 host 10.10.10.1 eq non500-isakmp

Obviamente si tenemos OSPF, queremos permitir ICMP o lo que sea tendremos que añadirlo también al mismo access-list.

Configuración de isakmp-sa

El siguiente paso será configurar la ISAKMP SA para la fase 1, para eso miraremos la tabla de arriba aunque por defecto vienen unas cuantas ya configuradas:

R1#sh crypto isakmp policy

Default IKE policy
Protection suite of priority 65507
encryption algorithm: AES – Advanced Encryption Standard (128 bit keys).
hash algorithm: Secure Hash Standard
authentication method: Rivest-Shamir-Adleman Signature
Diffie-Hellman group: #5 (1536 bit)
lifetime: 86400 seconds, no volume limit
Protection suite of priority 65508
encryption algorithm: AES – Advanced Encryption Standard (128 bit keys).
hash algorithm: Secure Hash Standard
authentication method: Pre-Shared Key
Diffie-Hellman group: #5 (1536 bit)
lifetime: 86400 seconds, no volume limit
Protection suite of priority 65509
encryption algorithm: AES – Advanced Encryption Standard (128 bit keys).
hash algorithm: Message Digest 5
authentication method: Rivest-Shamir-Adleman Signature
Diffie-Hellman group: #5 (1536 bit)
lifetime: 86400 seconds, no volume limit
Protection suite of priority 65510
encryption algorithm: AES – Advanced Encryption Standard (128 bit keys).
hash algorithm: Message Digest 5
authentication method: Pre-Shared Key
Diffie-Hellman group: #5 (1536 bit)
lifetime: 86400 seconds, no volume limit
Protection suite of priority 65511
encryption algorithm: Three key triple DES
hash algorithm: Secure Hash Standard
authentication method: Rivest-Shamir-Adleman Signature
Diffie-Hellman group: #2 (1024 bit)
lifetime: 86400 seconds, no volume limit
Protection suite of priority 65512
encryption algorithm: Three key triple DES
hash algorithm: Secure Hash Standard
authentication method: Pre-Shared Key
Diffie-Hellman group: #2 (1024 bit)
lifetime: 86400 seconds, no volume limit
Protection suite of priority 65513
encryption algorithm: Three key triple DES
hash algorithm: Message Digest 5
authentication method: Rivest-Shamir-Adleman Signature
Diffie-Hellman group: #2 (1024 bit)
lifetime: 86400 seconds, no volume limit
Protection suite of priority 65514
encryption algorithm: Three key triple DES
hash algorithm: Message Digest 5
authentication method: Pre-Shared Key
Diffie-Hellman group: #2 (1024 bit)
lifetime: 86400 seconds, no volume limit

Podemos configurarlo manualmente también:

R1(config)#crypto isakmp policy 10
R1(config-isakmp)#?
ISAKMP commands:
authentication Set authentication method for protection suite
default Set a command to its defaults
encryption Set encryption algorithm for protection suite
exit Exit from ISAKMP protection suite configuration mode
group Set the Diffie-Hellman group
hash Set hash algorithm for protection suite
lifetime Set lifetime for ISAKMP security association
no Negate a command or set its defaults

He iríamos rellenándolo todo para llegar a esto:

crypto isakmp policy 10
encr aes
authentication pre-share
group 5

Aquí es importante que nos demos cuenta que el hash y el encriptado que hemso definido es sólo para la negociación, no para el tráfico pues eso se negocia en la fase 2.

Y luego a parte que no se nos olvide crear la contraseña precompartida

crypto isakmp key misuperpassword address 10.10.10.1

Esto lo copiaremos exactamente igual en el segundo router para asegurarnos que funciona correctamente, para comprobar la configuración

sh crypto isakmp policy

Configuración de ipsec-sa

Ahora nos pondremos con la fase 2 y para ello necesitaremos un transform set en el cual indicaremos la autenticación y el encriptado para el contenido en si y el modo de IPsec, es decir si es túnel (así es por defecto) o transporte.

Como podemos tener varios transform set tendremos que irlos comparando hasta que encontremos uno que nos sirva.

Para definir el transform-set definiremos el encriptado y el hash, por ejemplo

crypto ipsec transform-set IPSEC esp-aes 192 esp-sha-hmac

Una vez escrito esto podríamos decir más cosas como por ejemplo si es modo túnel o transporte.

Esto obviamente lo copiaremos y lo pegaremos en el otro lado.

Y con esto tenemos la fase 2

Crear el crypto ACL

Ahora tenemos que definir cual es el tráfico interesante y cual no lo es. El crypto ACL se aplica al cryptomap que estará en el interfaz saliente, es un poco raro, pero funciona así.

Esto es simplemente definir un access-list normal y moliente

access-list 102 permit ip 192.168.14.0 0.0.0.255 192.168.15.0 0.0.0.255

Obviamente en el otro lado es a la inversa

Crypto map

El crypto map define tres cosas, qué tráfico encriptar, el crypto ACL, cómo protegerlo (transform set) y a donde enviarlo (el peer)

crypto map CRYPTO 10 ipsec-isakmp
set peer 10.10.10.2
set transform-set IPSEC
match address 102

Comandos para comprobar

sh crypto isakmp sa

sh crypto ipsec sa