Cómo configurar una VPN site-to-site desde Fortigate a AWS VGW.
En el siguiente post les quiero mostrar como configurar paso a paso una VPN site-to-site desde On-premise a AWS utilizando un Fortinet 40F. A pesar que hay muchas formas de configurarla VPN me enfocaré en enrutamiento estático y utilizando un Virtual Private Gateway.
Introducción
A lo largo del post les mostraré lo siguiente:
1- Conceptos generales.
2- Creación de un Customer Gateway.
3- Creación de un Virtual Private Gateway.
4- Creación del Túnel desde AWS.
5- Configuración de reglas de tráfico en AWS.
6- Creación del Túnel en Fortinet.
7- Configuración de reglas de tráfico en Fortinet.
8- Monitoreo
9- Lecciones aprendidas
1 Conceptos Generales
- Customer gateway: Es un dispositivo físico o una aplicación de software del lado de on-premise para hacer la conexión VPN. Para nuestro ejemplo será el Fortinet 40F.
- Virtual Gateway: Es el concentrador del lado de AWS para construir la VPN.
- Static Routing: Ocurre cuando un router usa una entrada de enrutamiento configurada manualmente.
- Dynamic Routing: es una técnica en donde el Router aprende sobre el enrutamiento de froma automática para seleccionar la mejor ruta.
2 Creación de un Customer Gateway
En VPC > Customer Gateways > Create Customer Gateway.
En IP Address se debe especificar la IP pública del Fortinet on-premise y en Routing vamos a dejar Static.
Después de crearlo esperamos a que el State quede en available.
3 Creación de un Virtual Private Gateway
En VPC > Virtual Private Gateways > Create Virtual Private Gateways
Solo debemos asignarle un nombre y dejaremos el ASN como Amazon default ASN.
Una vez creado el State queda en detached esperando que sea asociado a una VPC.
Se debe seleccionar el VGW creado y see debe asociar a una VPC, la cual vamos a conectar con On-premise.
Una vez asociado el VGW a la VPC el state cambiará a attached.
4 Creación del Tunel desde AWS
Después de haber creado el Customer Gateway y el Virtual Private Gateway, debemos crear el tunel.
En VPC > Site-to-Site VPN Connections > Create VPN Connection
Creando la conexión VPN debemos asociar el Customer Gateway y el Virtual Private Gateway creados anteriormente.
A continuación debemos diligenciar la información sobre:
- IP Prefixes: hace referencia al CIDR de la red on-premises.
- Local IPv4 Network Cidr: hace referencia al CIDR de la red on-premises.
- Local IPv4 Network Cidr: hace referencia al CIDR de la VPC en AWS.
Las demás opciones se deben dejar en blanco.
5 Configuración de reglas de tráfico en AWS.
Tabla de enrutamiento
La tabla de enrutamiento asociada a las subredes donde tenemos nuestras EC2 debe editarse para que pueda envíar el tráfico al túnel VPN.
Security Group
Se debe permitir el tráfico que necesitemos desde el on-premise utilizando el CIDR. En este caso estoy permitiendo todo el tráfico pero se debe ajustar de acuerdo a nuestros requerimientos de
6 Creación del Túnel en Fortinet
6.1 Descargar configuración del Fortinet
Para la creación del túnel en el Fortinet podemos dirigirnos a En VPC > Site-to-Site VPN Connections y vamos a descargar cómo debería ser la configuración de nuestro device on-premise.
Cuando damos click en Download Configuration podemos seleccionar el tipo de dispositivo on-premise y la versión del SO, en mi caso es un Fortigate 40+. Esto nos descarga un archivo de texto que indica todas las instrucciones para la creación de la VPN.
6.2 Configuración de VPN en Fortinet
En la interfaz gráfica del fortinet nos vamos a VPN > IPsec Tunnels y damos click en Create New. Después debemos seleccionar Custom.
6.2.1 Network
En esta parte debemos completar la siguiente información:
- IP Address: Es la IP pública de uno de los 2 túneles en AWS. Para este caso utilizaremos 13.56.106.130.
Los cuales los podemos ver en AWS en VPC > Site-to-Site VPN Connections y en la parte inferior seleccionamos la tab Tunnel Details.
- Interface: Seleccionamos la interface configurada en nuestro Fortinet que tiene la conexión WAN.
6.2.2 Authentication
En esta parte debemos agregar la Pre-Shared key que se encuentra en el archivo de configuración descargado en el paso 6.1.
6.2.3 Phase 1 Proposal
En esta parte debemos únicamente dejar una fila para Encryption y en Diffie-Hellman Group solo seleccionar el 2.
6.2.4 XAUTH
Aca dejamos la opción en Disabled.
6.2.5 Phase 2 Selectors
Para esta parte debmos dejar la configuración como la vemos en cuanto a Local Address y Remote Address.
6.2.6 Advanced
Es importante dejar solo un Encryption con AES128, seleccionar Diffie-Hellman Group en 2 y habilitar el Auto-negotiate.
7. Configurar Interface WAN
En Network > Interfaces debemos seleccionar debajo de WAN nuestra conexión VPN y agregar los datos de conectividad interna (Ver 6.2.1) con el túnel en AWS, también debemos habilitar el PING.
7.1 Configurar Dirección de VPN
En Policy & Objects > Addresses agregar el rando de direcciones de la VPC para posteriormente utilizarla en las rutas estáticas.
7.2 Configurar rutas estáticas
En Network > Static Routes damos click en Create New y se debe crear una ruta que permita que todo el tráfico que va hacía AWS salga por la interface VPN.
También debemos configurar una ruta estática del tráfico que venga desde la VPN a nuestras direcciones internas.
7.3 Configurar Políticas
En policy & Objects se deben agregar dos reglas, una para que todo el tráfico que venga de la VPN pueda llegar a nuestra red interna y otra regla para que haga lo contrario.
7.3.1 Política de VPN a Local
Esta política permitirá que todo. eltráfico que venga de la VPN pueda alcanzar la red interna.
7.3.2 Política de Local a VPN
Esta política permitirá que todo eln tráfico que venga de la red interna pueda alcanzar la VPN.
8. Monitoreo
En AWS CloudWatch podemos configurar métricas por canal para ver la cantidad de datos de entrada y de salida por cada tunel. Se debe hacer con las métricas TunnelDataIn y TunnelDataOut.
También podemos agregar un estado para verificar cuando el tune este caido, esta métricas se llama TunnelState.
Estas métricas de monitoreo son del lado de AWS, para el lado del Fortinet se tienen otros mecanismos de monitoreo como ver en Policy & Objects > Ipv4 Policy y ver la cantidad de tráfico por cada una de las reglas (ver 7.3). Para este escenario vemos trafico tanto de salida (3.67MB) como de entrada (2.62MB).
9. Lecciones Aprendidas
- Al crear una conexión con enrutamiento estático es importante saber que si no hay tráfico el túnel por defecto se cae. Para evitar esto se debe configurar del lado del fortinet un vdom que va a mantener un ping en la VPN.
- Si comparamos el enrutamiento estático vs el dinámico, será mejor utilizar dinámico dado que nos ayudará a mantener el túnel levantado siempre.
- En este post se configuro solo uno de los túneles, pero tenga en cuenta que AWS provee por defecto dos para mantener alta disponibilidad. Lo recomendado siempre es configurar todos los túneles.
- Se puede cambiar el modo de la VPN creada para usar Transit Gateway siguiendo estos sencillos pasos.
- La diferencia al configurar una VPN con enrutamiento dinámico (BGP) requiere más configuración del lado on-premises dependiendo del dispositivo que tengamos. Por ejemplo para Fortinet pueden hacerlo consultando el siguiente link.