Un Virtual Private Network (VPN) es una conexión virtual entre dos nodos que permite el intercambio seguro de información. En general, existen dos tipos de conexiones VPN:
- Roadwarrior
- Site-to-site
El VPN Roadwarrior es aquel que un nodo llamado cliente, por ejemplo una laptop, establece una conexión con un gateway VPN. Los paquetes IP enviados entre la laptop y el gateway VPN son enviados de manera segura utilizando algoritmos de cifrado.
Por ejemplo, un grupo de programadores que trabajan remoto requieren de una conexión VPN para poder conectarse a los repositorios de la empresa para subir y descargar código.
Un VPN site-to-site es cuando dos o más concentradores VPN (gateways) establecen un enlace para transmitir información de manera segura. Este tipo de conexión VPN conecta dos o más redes LAN.
Los protocolos de VPN más utilizados son:
- IPSEC
- SSL
- PPTP
IPSEC es el protocolo de VPN más popular en la industria. El protocolo TCP/IP es inseguro. IPSEC fue un addendum que se le aplicó al protocolo IP para agregarle las funciones de seguridad.
IPSEC provee las siguientes funciones de seguridad:
[1] Confidencialidad
IPSEC garantiza que el tráfico entre dos nodos no podrá ser leído por un tercero debido a que los paquetes IP transmitidos viajan por la red de manera encriptada. Para el cifrado de paquetes IPSEC utiliza los algoritmos 3DES y AES.
[2] Integridad
Integridad significa que un paquete enviado llegará intacto a su destino. En otras palabras, IPSEC garantiza que el contenido de los paquetes IP que viajan por la red no podrá ser modificado mientras estén en tránsito.
En la práctica la función de integridad se logra utilizando algoritmos de hashing. El hashing es una función matemática que no tiene inversa. Por lo tanto, a partir del resultado de la función no es posible derivar el contenido original.
La función de hashing toma como entrada una cantidad arbitraria de bits y produce como salida uba canridad fija de bits. Los algoritmos de hashing más utilizados son MD5, SHA1 y SHA2.
Para entender mejor el concepto de hashing veamos el siguiente ejemplo:
Var1 = “Alicia y Pedro se quieren mucho”
Si aplicamos la función de hashing utilizando el algoritmo SHA1 a la variable Var1 obtenemos el siguiente resultado:
ae04843d261d7a7a58d10ef059f6de0f827ae341
Si realizamos una modificación al contenido de Var1, automáticamente el resultado de la función hash será diferente:
Var2 = “Alicia y Pedro se quieren mucho”
78fabdd34e2fc167671a0cf57809ef92be00cbb4
Cuando un nodo IPSEC recibe un paquete IP éste calcula el hash. Si el resultado no corresponde con el valor del hash original significa que el paquete no llegó íntegro y es descartado inmediatamente.
[3] Autenticación
La función de autenticación significa que ambos nodos en una conexión IPSEC deben validarse antes de establecer una conexión. IPSEC utiliza dos tipos de mecanismos de autenticación:
- Pre shared key
- Digital signature
El mecanismo de pre-shared key es el más común y utilizado. Ambos nodos IPSEC deben conocer a priori e intercambiar una contraseña con el objetivo de establecer una conexión.
Un VPN IPSEC requiere del establecimiento de dos túneles. El primero denominado IKE Phase 1 (Internet Key Exchange phase 1). Este túnel no es utilizado para la transmisión de paquetes IP sino más bien para la autenticación de los nodos e intercambio de información de control.
Para que el túnel IKE Phase 1 pueda establecerse con éxito la configuración de ambos nodos debe coincidir en las siguientes variables:
- Hash algorithm
- Encryption algorithm
- Diffie-Hellman DH group
- Authentication method
- Lifetime
Luego que el túnel IKE Phase 1 es establecido con éxito, entonces, viene la parte IKE Phase 2. Este túnel es utilizado para la transmisión de paquetes IP de manera segura utilizando las funciones negociadas durante IKE Phase 1.
A continuación veremos el procedimiento para la configuración de un VPN IPSEC site-to-site utilizando dos routers Cisco.
Hemos dividido el procedimiento de configuración en dos etapas:
- ISAKMP 1
- ISAKMP 2
Los túneles IKE también son denomiandos ISAKMP.

IKE ISAKMP Phase 1
#Paso 1: Configuración de ISAKMP Policy.
R1(config)#crypto isakmp policy 1
R1(config-isakmp)#encryption 3des
R1(config-isakmp)#hash md5
R1(config-isakmp)#authentication pre-share
R1(config-isakmp)#group 2
R1(config-isakmp)#lifetime 86400
#Paso 2: Definir contraseña utilizada entre R1 y R2.
R1(config)#crypto isakmp key cisco address 1.1.1.2
#Paso 3: Configuración de ACL
R1(config)# ip access-list extended VPN-TRAFFIC
R1(config-ext-nacl)# permit ip 10.10.10.0 0.0.0.255 20.20.20.0 0.0.0.255
IKE ISAKMP Phase 2
#Paso 4: Configurando IPSec Transform
R1(config)# crypto ipsec transform-set TS esp-3des esp-md5-hmac
#Paso 5: Configuración de CRYPTO MAP
R1(config)# crypto map CMAP 10 ipsec-isakmp
R1(config-crypto-map)#set peer 1.1.1.2
R1(config-crypto-map)#set transform-set TS
R1(config-crypto-map)#match address VPN-TRAFFIC
#Paso 6: aplicando Crypto MAP en interfaz pública
R1(config)# interface Fastethernet 0/1
R1(config-if)#crypto map CMAP
El mismo procedimiento de configuración es aplicado en R2.
IKE ISAKMP Phase 1
#Paso 1: Configuración de ISAKMP Policy.
R2(config)#crypto isakmp policy 1
R2(config-isakmp)#encryption 3des
R2(config-isakmp)#hash md5
R2(config-isakmp)#authentication pre-share
R2(config-isakmp)#group 2
R2(config-isakmp)#lifetime 86400
#Paso 2: Definir contraseña utilizada en R1 y R2
R2(config)#crypto isakmp key cisco address 1.1.1.1
#Paso 3: Configuración de ACL
R2(config)# ip access-list extended VPN-TRAFFIC
R2(config-ext-nacl)# permit ip 20.20.20.0 0.0.0.255 10.10.10.0 0.0.0.255
IKE ISAKMP Phase 2
#Paso 4: Configuración de IPSec Transform
R2(config)# crypto ipsec transform-set TS esp-3des esp-md5-hmac
#Paso 5: Configuración de CRYPTO MAP
R2(config)# crypto map CMAP 10 ipsec-isakmp
R2(config-crypto-map)#set peer 1.1.1.1
R2(config-crypto-map)#set transform-set TS
R2(config-crypto-map)#match address VPN-TRAFFIC
#Paso 6: Aplicando Crypto MAP a una interfaz pública
R2(config)# interface Fastethernet 0/1
R2(config-if)#crypto map CMAP
Si aplicamos el procedimiento anterior a dos router Cisco el establecimiento de un VPN IPSec debe de funcionar perfectamente.
Para comprobar que los paquetes IP provenientes de ambas redes LAN se envían a través del VPN ejecutamos los siguientes comandos:
R1#ping 20.20.20.1 source FastEthernet 0/0
R1#show crypto session
R2#ping 10.10.10.1 source FastEthernet 0/0
R2#show crypto session