OpenVPN es una solución de software de código abierto que permite crear conexiones seguras y privadas a través de una red pública, como Internet. Utiliza tecnologías de criptografía robustas para garantizar la confidencialidad de los datos durante la transmisión y autenticación sólida para verificar la identidad de los usuarios y dispositivos.
Una de las ventajas principales de OpenVPN es su flexibilidad y versatilidad. Puede implementarse en una variedad de sistemas operativos, incluyendo Windows, macOS, Linux, iOS y Android. Esto lo convierte en una opción atractiva para usuarios y organizaciones que desean proteger sus comunicaciones en línea en múltiples dispositivos y plataformas.
¿Por qué es necesario tener una VPN para acceder a VPCs privadas en AWS?
Amazon Web Services (AWS) es uno de los proveedores líderes de servicios en la nube, ofreciendo una amplia gama de servicios y soluciones para empresas de todos los tamaños. Una de las características clave de AWS es la capacidad de crear redes privadas virtuales (VPC) para aislar recursos y mejorar la seguridad.
Cuando se trabaja con VPCs privadas en AWS, es fundamental garantizar la seguridad de las conexiones de red. Las VPCs privadas no son accesibles desde Internet de forma predeterminada, lo que significa que se requiere una conexión segura para acceder a ellas desde ubicaciones externas.
Aquí es donde entra en juego OpenVPN. Al implementar OpenVPN en una instancia de AWS, los usuarios pueden establecer conexiones seguras desde ubicaciones remotas a sus VPCs privadas. Esto proporciona un túnel seguro a través de Internet, permitiendo el acceso seguro a recursos dentro de la VPC sin comprometer la seguridad de la red.
Configuración de OpenVPN en AWS
Para implementar OpenVPN en AWS, se puede utilizar una variedad de métodos y herramientas. La opción que más estoy utilizando al iniciar proyectos es con el siguiente script de instalación de OpenVPN proporcionado por Nyr en su repositorio de GitHub.
El script de instalación de OpenVPN simplifica el proceso de implementación al automatizar la configuración de OpenVPN en una instancia de AWS. Con solo unos pocos pasos, los usuarios pueden tener su servidor OpenVPN en funcionamiento y listo para conectarse.
Paso 1: Iniciar una instancia EC2
Necesitamos iniciar una instancia EC2 con Ubuntu, Debian, AlmaLinux, Rocky Linux, CentOS o Fedora. En mi caso voy a usar Ubuntu 22.04.
Es importante que en el Security Group tenga abierto en las reglas de entrada el puerto 1194 UDP a internet:
Paso 2: Descargar el script e Iniciar la instalación
Para eso solo debemos ejecutar el siguiente comando:
wget https://git.io/vpn -O openvpn-install.sh && bash openvpn-install.sh
Paso 3: Configurando IP publica
Al iniciar la instalación nos va a pedir que confirmemos la IP publica de nuestra instancia. El script auto completa la misma, pero por las dudas verificar desde la consola de AWS si la IP corresponde:
Paso 3: Configurando protocolo de OpenVPN
Ahora nos va a consultar que protocolo deseamos utilizar, por defecto vamos a dejar UDP seleccionando [1]:
Paso 4: Configurando puerto de OpenVPN
Necesitamos configurar en que puerto va a estar escuchando nuestro OpenVPN, por defecto se utiliza el 1194, por cuestiones de mejorar la seguridad podemos elegir otro. En este caso de ejemplo vamos a dejar el puerto por default:
Paso 5: Configurando server DNS para los clientes
Ahora tenemos que elegir con que DNS va a resolver los clientes conectados a nuestro servidor de OpenVPN. En este caso elegimos la opcion 1: "Current system resolvers".
Paso 6: Configuramos nuestro primer cliente
Para esto solo debemos elegir el nombre de usuario y al presionar enter va a empezar con creación del cliente y configuración del servidor OpenVPN:
Paso 7: Exportando configuración del cliente
Al finalizar las configuraciones vemos que dejo en /root/ nuestro archivo de configuración de cliente:
The client configuration is available in: /root/cloudacademy.ovpn
Paso Final: Manejo de clientes
Para poder añadir nuevos clientes o eliminarlos solamente debemos ejecutar el script que se encuentra en /root:
bash openvpn-install.sh
Seleccionando las opciones vamos a poder realizar las acciones que se nos ofrece. También podremos desinstalar de forma automática el servidor OpenVPN.
Nota: El script de instalación de OpenVPN de Nyr proporciona una configuración predeterminada segura, pero también ofrece la flexibilidad para personalizar la configuración según las necesidades específicas del usuario. Esto permite adaptar OpenVPN para satisfacer requisitos de seguridad particulares y integrarse con infraestructuras existentes.
Para concluir, OpenVPN es una herramienta esencial para garantizar la seguridad y la privacidad al acceder a VPCs privadas en AWS. En este articulo vimos como levantar de forma muy rápido un servidor OpenVPN para pequeños ambientes.
Tengo que aclarar que para ambientes grandes o de producción existen soluciones mucho mas robustas. Como por ejemplo el servicio de VPN que ofrece AWS: Puntos de conexión de cliente de VPN.