viernes, 29 de noviembre de 2013

Tunnel GRE - Cisco

GRE (Generic Router Encapsulation): Es un protocolo que puede encapsular una amplia variedad de protocolos diferentes dentro de túneles IP.

Es importante conocer la necesidad a la hora de realizar la configuración de Túneles GRE, pues, podrían ser difíciles de manejar si crece la red demasiado, este túnel es muy útil manejando protocolos que NO son enrutables (como NetBIOS o protocolos enrutables de diferentes IP).

Actualmente el uso de GRE, se ha vuelto uno de los principales mecanismos de transición para la implementación de redes IPv6. Es decir es posible conectar dos islas IPv6 a través de tunnel Ipv4.

Método Site-to-Site con políticas de encriptación. 

Vamos a implementar este proceso en este ejemplo de red, los routers son c3700:


El túnel va ser creado desde R1 hasta R2. La configuración de Internet (WAN-A y WAN-B) es un servicio del ISP, es decir, que la conexión a Internet normalmente sirve, solo falta es crea el túnel; Lo único que nos interesa es configurar los nodos de la empresa (Red VPN).

Los routers R1 y R2 serán configurados con las estructuras de la imagen, enrutamiento EIGRP, servicio de encriptación de claves, políticas para linea de consola y vty 

Para que la información que viaja por el túnel no sea manipulada, vamos a activar el IPsec; este es el método de cifrado con políticas de autenticidad. Para activar solo será #crypto isakmp enable

Para crear el formato de las politicas, tenemos que ingresar a #crypto isakmp policy 10

Allí configuraremos lo siguiente:
* Configurar un tipo de autenticación de claves previamente compartidas.
* Utilice cifrado AES 256.
* SHA como su algoritmo de hash
* Diffie -Hellman grupo 5 será el intercambio de claves para esta política IKE .
* Dar a la política un tiempo de vida de 3600 segundos (una hora)
(Repetir en R2)



Dado que las claves pre-compartidas se utilizan como método de autenticación en la política IKE, configure una clave en cada router que apunta hacia el otro extremo de la VPN. Estas claves deben coincidir para que la autenticación tenga éxito. 
(Repetir en R2)


¿Cuál es la función de la IPsec conjunto de transformación? El conjunto de transformación IPsec especifica los algoritmos criptográficos y funciones que un router emplea en los paquetes de datos reales enviados por el túnel IPsec. Estos algoritmos incluyen el cifrado, la encapsulación, autenticación y servicios de integridad de datos que se puede aplicar IPsec.
#ipsec crypto transform-set 50 esp-aes 256 esp-sha-hmac
(Repetir en R2)


También puede cambiar los tiempos de vida de la asociación de seguridad IPsec desde el default de 3600 segundos, o 4.608.000 kilobytes, lo que ocurra primero.
R1 (config) # crypto ipsec segurity-association lifetime seconds 1800
(Repita en R2)


Luego de lo anterior vamos a crear las políticas de acceso en cada routers:
R1(config)#access-list 101 permit ip 192.168.1.0 0.0.0.255 192.168.3.0 0.0.0.255

R2(config)#access-list 101 permit ip 192.168.3.0 0.0.0.255 192.168.1.0 0.0.0.255

Para ver lo configurado será:
#show crypto isakmp policy
#show crypto 

De igual forma se puede crear un MAP que combine el IKE y IPsec.


Lo habilitamos en las interfaces WIC
R1(config)#int serial 0/0
R1(config-if)#crypto map CMAP
(Repetir en R2)

Para ver lo anterior:
#show crypto ipsec transform-set
#show crypto map
#show crypto isakmp sa
#show crypto ipsec sa

Método Site-to-Site directo.

Primero vamos a configurar a R1. Con respecto a las direcciones publicas como es un ejemplo, pero el direccionamiento puede ser cualquiera, siempre y cuando se enrutable y publico.

R1#configure terminal 
R1(config)#interface Tunnel 1
R1(config-if)#ip address 172.16.1.1 255.255.255.252 
R1(config-if)#tunnel source 100.10.10.1 
R1(config-if)#tunnel destination 200.20.20.2 
R1(config-if)#end 
R1#


Luego enrutaremos la red 192.168.1.0/24 hacia 192.168.2.0/24 por medio del túnel.

R1(config)#ip route 192.168.2.0 255.255.255.0 tunnel 1 172.16.1.2
R1(config)#exit 


Luego vamos a configurar a R2.

R2#configure terminal 
R2(config)#interface Tunnel 1
R2(config-if)#ip address 172.16.1.2 255.255.255.252 
R2(config-if)#tunnel source 200.20.20.2 
R2(config-if)#tunnel destination 100.10.10.1 
R2(config-if)#end 
R2#


Ahora enrutaremos la red 192.168.2.0/24 hacia 192.168.1.0/24 por medio del túnel

R2(config)#ip route 192.168.1.0 255.255.255.0 tunnel 1 172.16.1.1
R2(config)#end


Ahora podemos verificar que el túnel está funcionando con un simple ping o tambien podemos tomar capturas.




Esta captura es de un PING de R1 a R2 vía túnel.
En la imagen de la derecha se puede ver la dirección IP publica de los routers, realizando la encapsulación (en la cuarta linea sombreada, se puede leer GRP); De está forma respondiendo a los pings.
En la imagen de la izquierda podemos ver el ping realizado desde IP publica a IP publica y  no hay ninguna encapsulación.


En la configuración del túnel cuando no se especifica el protocolo, este toma por defecto el protocolo GRE. Sin embargo es posible definir el protocolo, mediante un comando sencillo, como puede verse a continuación:

R(config)#interface tunnel 1 
R(config-if)#tunnel mode ipip

El modo ipip, es el tipo de túnel que permite encapsular paquetes IP dentro de otro paquete IP, muy útil para permitir la comunicación entre redes IPv6 por medio de redes IPv4. El proceso para seleccionar el protocolo es sencillo y deberá de ser configurado en ambos lados del tunnel, al igual que se definió el protocolo GRE, también puede seleccionarse cualquiera de los siguientes opciones: aurp, cayman, dvmrp, eon, gre ip, gre ip multipoint, ipip, iptalk.

jueves, 28 de noviembre de 2013

VPN - Debian

1. Vamos a actualizar los repositorios
#aptitude update

2. Instalar la aplicación
#aptitude install openvpn

3. Vamos a activar y luego a probar que este funcionando la interfaz TUN


4. Copiar los archivos de la aplicación al directorio /etc/openvpn y ingresaremos al directorio 2.0
#cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/  /etc/openvpn/


5. Editar el  fichero /etc/openvpn/2.0/vars

Cambiar:
export EASY_RSA="`pwd`"
por:
export EASY_RSA="/etc/openvpn/2.0"

Cambiar:
export KEY_COUNTRY=pais_del_vpn
export KEY_PROVINCE=departamento_del_vpn
export KEY_CITY=ciudad_del_vpn
export KEY_ORG=nombre_de_la_vpn ó servidor
export KEY_EMAIL=nombre@mi-dominio.com
export KEY_CONFIG='/etc/openvpn/2.0/whichopensslcnf $EASY_RSA'




6. Vamos a dar permisos al fichero vars y a ejecutar la limpieza para configurar el certificado de Autoridad


7. Editar la localización del Certificado
Cambiar:
"$EASY_RSA/pkitool" --interact --initca $*
Por:
"/etc/openvpn/easy-rsa/2.0/pkitool" --interact --initca $*


8. Crear el Certificado de Autoridad
#source vars
# ./clean-all
#./build-ca

Country Name (2 letter code) [CO]: CO
State or Province Name (full name) [ANT]: ANT
Locality Name (eg, city) [Medellin]: MED
Organization Name (eg, company) [RPO.CO]: RPO.CO
Organizational Unit Name (eg, section) [VPN]: VPN
Common Name (eg, your name or your server's hostname) [VPN CA]: ADMIN
Name []:
Email Address [usuario@dominio.com]:admin@rpo.co

9. Ahora editar el certificado del servidor
# ./build-key-server servidor


10. Ahora vamos con el primer usuario (./build-key usuario), para los demás usuarios seguimos este paso
#./build-key admin




12. Vamos a crear los parámetros DF (Diffie Hellman)


13. Visualizemos la creacion de los certificados, sesiones y claves en el directorio /etc/openvpn/2.0/keys/


14. (OPCIONAL) Copiamos los datos principales del directorio /etc/.../keys a /etc/openvpn


15. Hay que crear el fichero openvpn.conf donde estarán las especificaciones del servicio

A) definimos la interfaz a utilizar, protocolo (TCP o UDP) y puerto.
B) definimos los fichero de certificación y autenticidad del servidor
C) definimos que no habrán usuarios ni grupos privilegiados y el rango de direcciones de la red local
D) definimos parámetros que ayudaran a mantener la conexión después de cada reinicio de servicio
E) definimos el parámetro que nos proveerá de buena información
F) definimos los parámetros que ayudan a mantener una vía activa, detallando lo que viaja en la red, ubicando la info en un fichero especifico y el compacto de los paquetes que circulan



16. Ahora seguiremos los siguientes pasos, para activar el reenvio de datos, para asegurarnos de que el TUN este activo y para enjaular los usuarios que manejan windows.



17. Ahora iniciamos el servicio


#service openvpn restart (reiniciar por si se realizan cambios en la configuración)
#service openvpn stop (detener es servicio VPN)

18. Verificando que el servicio VPN se este ejecutando
MENSAJE DEL SISTEMA (podemos ver al final el sequence complete)

VISUALIZACIÓN DE LA INTERFAZ TUN0 (podemos ver que se asigno una IP del rango) 
El servidor tiene en estos momentos 3 interfaces: eth0 (Conexión a Internet), eth1 (Conexión a Red Local) y TUN0 (Creada para la VPN)

VISUALIZACIÓN DEL PUERTO

Instalación de los clientes (Windows)


1. Descargamos e instalamos el cliente de:


Luego de descargado lo ejecutamos:

 





2. Una vez todo listo copiamos los archivos ca.crt, admin.crt, admin.key y admin.csr en:
A) C:/Archivosdeprogramas/openvpn/config este directorio se encuentra oculto y sirve para dar seguridad al proceso. 
B) C:/Archivosdeprogramas/Openvpn technologies/Openvpn Client/  más simplemente, igualmente funciona con todos los ficheros en el mismo lugar.




3. Luego de instalar el adonet instalamos por defecto el cliente vpn para windows y creamos un archivo llamado: "Nombre_Cliente".ovpn, para mi caso será steven.ovpn:

#Contenido de steven.ovpn
dev tun
client
proto tcp
remote 10.0.1.2 1122
(Tipo_cliente 'remote' - IP_servidor_eth1 - Puerto de transmición)
resolv-retry infinite
nobind
user nobody
group nogroup

persist-key
persist-tun
ca ca.crt
cert admin.crt
key admin.key
comp-lzo

verb 3

NOTA: En la instalación del OpenVPN para Windows hay un ejemplo del cliente, yo lo copie y lo re-configure, pero solo se necesita la información arribe presente.

           

4. Lo situamos en la ubicación correcta:



5. Ejecutamos el OpenVPN Client, seleccionamos en Connection Profiles



6. Cuando damos click acá nos sale este cuadro y seleccionamos Local File 


7. Seleccionamos el usuario creado, en mi caso steven.ovpn


8. Damos click en guardar [Save]


9. Click en el botón naranja, luego de esto empezara a cargar la conexión y no s dará un dirección IP que este contenida en la red VPN (El rango debe ser especifico al cual se puede acceder a internet), en mi caso hice una diferente para identificar la red a la cual me estoy conectando.


10. Con el CMD podemos verificar que ya estamos conectados, siempre y cuando estemos en el mismo rango de red.


11. En el fichero especificado en la creación del servidor, podemos ver los procesos realizados y detallados, gracias a la verbosidad [verb 3]