Desde hacia bastante tiempo estaba interesado en aprender a configurar Client VPN Endpoint en Amazon AWS y de paso documentarlo en formato texto-imágenes, mas aun desde que por causas mayores la mayoría de empresas tiene hacer uso del teletrabajo.
Existen varias maneras de conectarnos a nuestra red de Amazon AWS utilizando las siguientes opciones de conexión VPN.
Opciones de conectividad VPN
- AWS Site-to-Site VPN
- AWS VPN CloudHub
- Utilizando software de VPN de terceros ej: OpenVPN
- AWS Direct Connect
- AWS Client VPN
Os dejo un link a los precios que tienen los servicios de VPN https://aws.amazon.com/es/vpn/pricing/, comentaros que aunque no usemos el cliente VPN, nos cobrarán simplemente por tener configurada la asociación (ver mas adelante en este post)
Para configurar la VPN, necesitamos lo siguiente:
- Permisos necesarios para trabajar con VPN Endpoint.
- Una VPC con al menos una subnet, un gateway para Internet y una ruta para esta.
Configurar Client VPN Endpoint en Amazon AWS
Para este lab seguí las instrucciones del siguiente vídeo, donde el tipo este explica muy bien los pasos, pero es difícil entender por la mala calidad del sonido, eso y que yo tampoco oigo ya muy bien. Darle las gracias por el aporte.
En este lab utilizaremos la autenticación mutua ya que el cliente VPN utiliza los certificados para realizar la autenticación entre el cliente y el servidor.
Para generar estos certificados podemos hacer lo que hice yo, utilizar un script creado por el tío del vídeo, podemos encontrar el script en su Github https://github.com/quickbooks2018/bash-scipts/blob/master/aws-self-signed-acm.sh
Si no los podéis crear como indica AWS de Amazon en sus guías https://docs.aws.amazon.com/es_es/vpn/latest/clientvpn-admin/authentication-authrization.html#mutual , cualquiera de las dos opciones es valida.
Si usamos el script bastara con que cambiemos los detalles de la organización y nombre de dominio.
Ejecutamos el script y comprobamos que nos ha creado una carpeta llamada tls (o el nombre que le hayamos puesto en el script) donde dentro se encuentran los ficheros generados.
Una vez creados los certificados, los tendremos que importar a AWS Certificate Manager, para eso empezaremos copiando el contenido del fichero .crt
Accedemos a AWS Certificate Manager y hacemos clic en Importar un certificado, donde se abrirá el asistente de importación y pegaremos el contenido del fichero crt en el campo «Cuerpo del certificado».
Lo mismo con el fichero de la clave privada .key , copiamos el contenido.
Y lo pegamos en el campo «Clave privada del certificado».
Ahora copiaremos el contenido de la autoridad de Certificación
Pegamos en el campo «cadena de certificados». Nos recordará que tenemos que hacer una copia de seguridad de la clave privada.
En el paso 2 añadimos una etiqueta para los certificados y tenernos mejor identificados. Revisar e importar para finalizar el asistente.
Terminada la importación veremos el certificado generado en el certificate Manager.
Ahora pasaremos a configurar el punto de enlace del client VPN, nos dirigiremos a VPC —> Client VPN Endpoint. Rellenaremos los siguientes campos
- Nombre
- Descripción
- Rango de red para los clientes VPN
- Certificado de servidor ARN (creado en el paso anterior)
- En opciones de autenticación, seleccionaremos Autenticación mutua
- Logs de los clientes VPN
- DNS
- Protocolo de transporte
- Habilitamos Split Tunnel, importante, ya que si no la VPN te funcionará, pero no podrás navegar en el equipo cliente.
- Seleccionamos la VPC
- Seleccionamos el Grupo de Seguridad para que cuando nos conectemos con el cliente VPN tengamos acceso, SSH, RDP, http etc etc
Una vez creado el VPN Endpoint, para que los clientes puedan establecer una sesión de VPN, tendremos que asociar una red de destino (subnet de una VPC) con el punto de enlace de client VPN , mientras que no la asignemos la tendremos en un estado Pending-associate. Si la queremos asociar, seleccionamos el client VPN Endpoint recién creado y hacemos clic sobre Associate.
Al seleccionar Associate, nos abrirá un asistente de creación de un destino de red, donde seleccionaremos nuestra VPC y una de sus subnet y haremos clic sobre Associate. NOTA: AWS recomienda tener dos asociaciones para que haya redundancia.
Comenzará la asociación, este proceso le cuesta unos minutos.
Cuando finalice el proceso, nos pondrá en verde el estado.
Una vez asociada, iremos a la pestaña autorización para dar acceso a los clientes a la VPC y haremos clic sobre Authorize ingress.
En subnets podemos ver el IPv4 CIDR y la zona de disponibilidad de la subnet, para añadirlas en el siguiente paso.
Ponemos el destino de la red, permitimos el acceso a todos los usuarios y en description, podemos poner el nombre de la zona de disponibilidad para tener mejor identificado.
Comenzará el proceso de autorización.
Una vez autorizado nos cambiará el estado a Active.
Iremos a la pestaña Route Table y crearemos una nueva ruta para permitir el acceso a redes adicionales conectadas a la VPC como otros servicios de AWS.
Añadiremos la ruta de destino 0.0.0.0/0 y seleccionaremos la subnet. Le damos a Create Route.
Finalizado el proceso, solo quedaría descargar el fichero de configuración para el cliente VPN, hacemos clic sobre Download Client Configuratión. Este fichero tiene una extensión .ovpn y lo podemos importar para usarlo con el cliente de OpenVPN y también con el cliente VPN de AWS, Cualquiera de las dos opciones es buena.
Y Download.
Para que funcione correctamente la VPN, tendremos que hacer una serie de modificaciones en el fichero de configuración del cliente.
Debajo de la etiqueta html </ca> escribiremos las siguientes etiquetas
<cert>
</cert>
<key>
</key>
Iremos al fichero .crt y copiaremos su contenido.
Y lo pegaremos entre las etiquetas html <cert> y </cert>.
Haremos lo mismo con el fichero de la clave privada, copiaremos su contenido.
Y lo pegaremos entre las etiquetas <key> y </key>. Una vez terminado, guardamos los cambios.
Ahora toca importar el fichero a nuestro cliente de OpenVPN o cliente VPN de AWS, clic derecho sobre el icono del cliente de OpenVPN e importar archivo.
Importado el fichero, otra vez clic derecho sobre el icono del cliente VPN y mostrará la conexión, le damos a conectar.
Comenzará la conexión.
Una vez conectados a la VPN, si hacemos un ping desde el equipo cliente a por ejemplo a la ip privada de una instancia EC2 veremos que responde.
Saludos y espero que os sirva.