En un mundo cada vez más interconectado, la seguridad de la información se ha convertido en una prioridad fundamental para empresas y usuarios individuales por igual. En este contexto, el despliegue de una red privada virtual (VPN) se erige como una solución indispensable para garantizar la confidencialidad y la integridad de los datos en tránsito.
En esta guía, abordaremos el proceso de instalación de una VPN cliente-servidor en la plataforma de nube pública SOAX, proporcionada por OASIX. Utilizaremos PiVPN, una herramienta altamente confiable y de código abierto, que simplifica considerablemente la implementación de una VPN segura.
El objetivo principal de esta configuración es permitir a los usuarios acceder de forma remota y segura a la redes internas desplegadas en SOAX desde cualquier ubicación del mundo. Al emplear esta solución, los usuarios podrán disfrutar de una conectividad confiable y cifrada, asegurando la protección de los datos sensibles en tránsito.
A lo largo de esta guía, se proporcionarán instrucciones paso a paso para la configuración tanto del servidor VPN en SOAX como de los clientes que deseen conectarse.
Para iniciar el despliegue del servidor en SOAX, acceda a la interfaz Drag & Drop y arrastre un componente de red al espacio de trabajo correspondiente.
Despliegue un router directamente sobre la red interna en el configurador y seleccione la opción para crear una interfaz en la red externa, lo que proporcionará conectividad a Internet a la red LAN.
Si desea más información sobre el netorking en SOAX, pulse sobre el botón que hay a continuación.
Una vez establecida la topología de red, proceda al despliegue de una instancia Ubuntu 22.04 con las especificaciones de:
Cree un nuevo grupo de seguridad para la instancia y configure las reglas necesarias en el grupo de seguridad posteriormente a la creación de la instancia, para permitir las conexiones hacia el servidor VPN.
Asocie un par de claves SSH existente en su proyecto o cree uno nuevo. Esto permitirá el acceso seguro al servidor por terminal SSH, lo cual es fundamental para la configuración y administración adecuadas del servidor VPN.
Finalice la creación de la instancia y espere a su creación.
A continuación edite las reglas del grupo de seguridad creado durante la creación de la instancia. En función de si utilizará el agente de OpenVPN o el de WireGuard, tendrá que agregar un puerto u otro:
Por tanto, el grupo de seguridad ha de contener las siguientes reglas:
Recomendamos crear únicamente las reglas necesarias para permitir la conexión en función del tipo de VPN uilizada WireGuard / OpenVPN.
Por seguridad, recomendamos que el puerto 22 para acceder por SSH quede acotado a la IP pública de origen para realizar la configuración. De ese modo se evita intentos de acceso no deseados.
Para finalizar, agregaremos una IP flotante a la máquina virtual que nos permita acceder a ella a través de internet.
Si desea más información sobre la creación de instancias, pulse en el botón que se encuentra a continuación.
A continuación procederemos a realizar la instalación y configuración del servicio VPN para el servidor. Para ello haremos uso de PIVPN.
PiVPN simplifica el proceso de configuración de OpenVPN. Se creó originalmente para ser desplegado en placas de desarrollo RaspberryPI, pero tambien es compatible con sistemas operativos Ubuntu y Debian.
PIVPN utiliza scripts que automatizan gran parte del proceso de instalación y configuración. Esto hace que sea más accesible para usuarios con diferentes niveles de experiencia técnica. Además, PiVPN es gratuito y de código abierto, lo que significa que cualquiera puede utilizarlo y contribuir a su desarrollo.
Antes de comenzar con la instalación de PIVPN, vamos a actualizar nuestra instancia con los últimos paquetes. Para ello ejecutaremos el siguiente comando:
sudo apt update && apt upgrade -y
Una vez finalizadas las actualizaciones, ejecutaremos el siguiente comando dentro del servidor:
curl -L https://install.pivpn.io | bash
Una vez finalizada la descarga, se ejecutará de forma automática un agente de instalación.
Una vez se ejecute el asistente de configuración, seguirmeos los siguientes pasos:
A continuación, seleccionaremos el tipo de VPN que necesitemos. Vamos a ver como se configuran ambas VPNs.
Deberemos seleccionar el puerto que hemos configurado en el grupo de seguridad.
En este apartado hemos utilizado Google como proveedor de DNS. Si el usuario cuenta con servidores DNS propios, bastatrá con seleccionar la opción de "Custom"
Una vez finalizada la instalación, podremos generar usuarios para que puedan acceder a nuestra VPN
Presionando el siguiente comando, podremos visualizar todas las opciones que nos ofrece PIVPN.
ubuntu@vpn:~$ pivpn
::: Control all PiVPN specific functions!
:::
::: Usage: pivpn <command> [option]
:::
::: Commands:
::: -a, add Create a client conf profile
::: -c, clients List any connected clients to the server
::: -d, debug Start a debugging session if having trouble
::: -l, list List all clients
::: -qr, qrcode Show the qrcode of a client for use with the mobile app
::: -r, remove Remove a client
::: -off, off Disable a client
::: -on, on Enable a client
::: -h, help Show this help dialog
::: -u, uninstall Uninstall pivpn from your system!
::: -up, update Updates PiVPN Scripts
::: -bk, backup Backup VPN configs and user profiles```
Para agregar un nuevo usuario, escribiremos el siguiente comando:
ubuntu@vpn:~$ pivpn -a
Agregamos un nombre para nuestro nuevo cliente
Enter a Name for the Client: wiki
::: Client Keys generated
::: Client config generated
::: Updated server config
::: WireGuard reloaded
======================================================================
::: Done! wiki.conf successfully created!
::: wiki.conf was copied to /home/ubuntu/configs for easytransfer.
::: Please use this profile only on one device and create additional
::: profiles for other devices. You can also use pivpn -qr
::: to generate a QR Code you can scan with the mobile app.
======================================================================
A continuación, podemos agregar rápidamente el nuevo usuario a nuesto dispositivo movil generando el código QR y posteriormente, con la aplicación de WireGuard, escaneando el código que se imprime por pantalla.
Para ello ejecutaremos el siguiente comando:
ubuntu@vpn:~$ pivpn -qr
:: Client list ::
1) wiki
Please enter the Index/Name of the Client to show: 1
::: Showing client wiki below
=====================================================================
█████████████████████████████████████████████████████████████████████
█████████████████████████████████████████████████████████████████████
████ ▄▄▄▄▄ █ ▀▀██▀ ▀█▀▄█ █▀▄█▀▀▄▄▀ ▄▀▄▄█▄▀▄▄█▄▀█ ▄▀▄█▀█ █ ▄▄▄▄▄ ████
████ █ █ █ ▀ █ ██ ▄▀▀▄██ █▄ █▄▄ █▀▀▀▄▀█▄█ █▀▄ ▄▀▀ ▄ █ █ █ ████
████ █▄▄▄█ █▀█ ███▀ █▀▄▀▄▄▀▀▀█▄█ ▄▄▄ ██ █▀▄▀▄▀ ▄ ▀█▄ ▄██ █▄▄▄█ ████
████▄▄▄▄▄▄▄█▄▀▄█ ▀▄█ ▀ █ ▀ █ █▄█ █▄█ ▀ █ ▀▄█▄▀ ▀ █ █ █▄█▄█▄▄▄▄▄▄▄████
████ █▀▄▄▄▀▀█▀▄█▄▄ ▀▄▀▀ ▄ ▀▄ ▄ ▄ ▀▄▄ ▄▄▄▀ ▀ ██▄▀▄ ▀▀▀▀ █ ▄▄ ████
██████▄▄▄▀▄█ ▀████▄ ▄█▄██ ▀█▀ ▄████ █ ██▀▄▄ ▄▄▄▄█▀█ ▀█ █▀████
████ █▄▄▀▄▄██▄ ▄█▀█▄▄▄▀ █▀▄▀▀ ▀ ▄▄▀█ ██ ▀ █▄█▄ █▄█▀ ▄▄█▄▀▀█▀▀████
████▄▀ ▀█▄▄▀▀▄ ▄▀▄ ▀▀█▄▄█▄ █▄▄█▀▄█ █▀█ ▄ ▀ ▄ ▀███ ▀█▀ ▀█▄▄▀█▄▄█████
████▄ █▄█▄▄▀▀▀█ █▀▀▀▀▄▄▀▀▀█▄ ▀ █▀▄█▄█▀ ▄▀▄█▄▄▄▀ █ █▄ █▄▄▄▀▀█▀█████
████ ▀██▄█▄▄ ▀█ ██▀▄██▄▄█▄▀▀█ █ ▄▄▄▀▄▀█▄▄██▄▀▀██▀▀▀▀▀▀ █▀ █▄▀▄▄█████
████ █ ▄ ▀▄██ ██ ▀▀▄▄██ █▀▄█ ▀█▀ █▄ ▀▀ ▄██▀▀█▀▀▄ ▄▀ ▄▀ ▄ ▀▀████
████▄▄▀ ▄▄▄▄████▀█▀ ▄█ ▀█ ▄▀▀ ▄ ▀▀▄█▄ █▀█▄▀▀▀██▄▀█▄█▄▄ ▀█▄▀█ ▄ ████
█████▀▀▄█▀▄██▀ █▄▄▀ ▀ ▄▄ █▄▀▀▀▀█▀ ▀▀▄█▄▀▄█▄▀▀█▄ █▀ ▄▀█ ▀▄█▄ ▀████
████ ██ ▄ ▄▀▄██▄▀ ▀▄▄▀█▀ █▀▀▀▄█ ▄ ▀▀ ▄ ▄█▄█ ▀▄▄█▄ █ █ ▀▄ ▄█▀█ █▀████
████ ██▀ ▄▄▄ ▀█ ▀█ ▄▄▄▀▀▀▀ ▀▀ ▀ ▄▄▄ ██ ▄▄▀▄▄▀▄▄ ▀▄▄▀▀ █ ▄▄▄ ▄█▄█████
████ ▀█▀ █▄█ ▄▄ █ ▀▀██ █▀█ ▄▀██ █▄█ ▄██▄ ▀▄▀▄▄█▀ ▄ ▀ █ █▄█ ▄▄ █████
████▀ █ ▄ ▄▄ ▀ █▄▄▀▄█▀▄█▄▄▄▀▄▀▄█ ▄▄ ▄▀▀▄▀█ █▄▄▄▀▄█▄ ▄█▄▄▄ ▄█ ▄ ████
████ ▀██▀▄▄ ██▄▄▄▄▀ ▄█ ▀ █▄ ▀▄▀▄▀▄▄▄█▄█▄▄▀▄▀▀█ █▀██▄ █▀ ▀▀▄▀▄████
████▄▀ ▀▀▄▄▄██▀▀█▄ █ ▀▄▀▀ ▀ ▄▀█ ▀█ ▀▄██▀▀ ▀ ▀▀▀▀ ▄▀█ ▄▀▀▄ ▀ ▀████
████ ▄█ █▄█▄▄██▀▀▄▀ ▀ ▄▀▄▀ █▄▄▀█▀▄█▀ █▀ ████▀ ▀ ▄█▀▀ ▀ ▄▀▄▀ █████
████ ▄█▀█▄▄▄ █ ▄ ██▄▀▀ ▀▀▀█ ▀ ▄ █ ▀▄ ▀▄ ▄ ▀ ▀▀ █ ▄▀█ ▄▄█ ████
█████▄ █ ▄▀▄▀ ▀▀ ▀▄▀█▄█▄ ██▄▄ ██▄▀█ ▄▀█▀██▄ ▄██▄ █▄▄ █ ▄ ▄▄ ▀█████
████▀███ ▀▄▄▄▀ ▀▀▄▀ ▄ ▄▀ █▀▀ ▀ ███▄ ▄ ██ █▄█▄ ▄▄█▀▀ ▄▀▀▄█▀ █▀▄████
████▀▄▄ ▄█▄▀▄ ▄▀█▄▀█ ▄▄▄█▄ ▀▀ █ █▄██▄ ▄ ▄▀▄▄▀▄██ █ ▀▀▀ █▀▄▀▄████
████▄▀▀ ▄ ▄▀▄▄▄▄▄▀ ▀▀▀██▄▀██ █▀▄ ▀▀▄▄ ▀▀ ▄ ██▄ █▀██ ▀▄█▄▀▀▀█▄▄▀▄████
████▀▀ ▄ ▄▄ ▄██▀ ▀█▄█▄█▄██▄ █ █ ▀▄ █▀ ▄▀██▀█ ▄▀▀▀ █▄█ █▄█▄██▄▄▄████
████▄▄▄▄██▄▄ █▄▄ ▄▀█ █▀█ ▄█▄█▄▀ ▄▄▄ ▄ █ ▀▀▄▀▀▀█▀▄▀▄▄▀ ▄▄▄ ▀███████
████ ▄▄▄▄▄ █▀█▀ ▀▀▀█▄▄█ ██▀▀▀█▀ █▄█ █ ▀▄▄▀█▀█ ▀███▀█▄ █▄█ ▄ ▄█████
████ █ █ █▄█▀▄█ █▀█▀ ▄▄█ ▀▄ ▀ ▄▄ ▄ ▀▄ ▄█ ▀▄▀▀▄ ▄▀▄▀▄▀▀ ▄▀ ▄▀████
████ █▄▄▄█ █▀▄▄▄█▀ █ ▀▀ ▄▀ █▀ ██ █ █ ▀▀█ ▀▀█ ▄▄▀▄▀▄█ ▀▀██ ▄ █████
████▄▄▄▄▄▄▄█▄███▄███▄▄▄█▄▄█▄█▄▄▄█▄███▄█▄█▄▄▄▄█▄▄▄██▄▄█▄██▄▄▄▄█▄▄▄████
█████████████████████████████████████████████████████████████████████
█████████████████████████████████████████████████████████████████████
=====================================================================
También podremos descargar el archivo de configuración para utilizarlo en otros dispositivos como Windows o Linux.
Para ello utilizaremos el cliente TTY MobaXterm, que hace uso de una carcacterística que nos permite navegar fácilmente por los directorios del servidor remoto, pudiendo cargar y descargar archivos desde nuestro equipo local.
Para ello lo primero que haremos será conectarnos, introduciendo la IP del servidor, el usuario, el puerto y la clave privada tal y como se muestra en la imágen.
Acto seguido, procederemos a dirigirnos a la carpeta que se muestra en la imagen:
Y sobre el archivo de configuración que generamos anteriormente, hacemos click derecho y presionaremos en la opción "Download"
El archovo podremos descargarlo en la carpeta deseada:
Una vez tengamos nuestro archivo de configuración, vamos a proceder a instalar el agente WireGuard en nuestro equipo, para ello, podremos hacer click en el siguiente enlace: https://www.wireguard.com/install/
En este caso, hemos procedido a descargar el agente para Windows.
Una vez instalado, presionaemos sobre el botón de "Import tunnel from file" y seleccionaremos el archivo .conf que hemos descargado anteriormente de nuestro servidor.
Para finalizar, estableceremos la conexión VPN presionando sobre el botón "Activar"
PIVPN también ofrece la posibilidad de configurar el servidor VPN con el protocolo OpenVPN. Para ello, en la pantalla 7 del instalador de PIVPN, seleccionaremos la opción OpenVPN.
A continuación, seguiremos los pasos tal y como se muestran en las imágenes.
Si el usuario cuenta con un dominio/FQDN y quiere agregarlo como métido de conexión en vez de utilizar una IP pública, deberá presionar en "Yes" y agregarlo a continuación.
Para este ejemplo utilizaremos directamente la IP pública del servidor.
Una vez reiniciado el servidor, procederemos a realizar la configuración de OpenVPN
Para agregar un nuevo usuario, escribiremos el siguiente comando:
ubuntu@vpn:~$ pivpn -a
Agregamos un nombre para nuestro nuevo cliente
Enter a Name for the Client: wiki2
How many days should the certificate last? 1080
Enter the password for the client: xxxx
Enter the password again to verify: xxxx
A continuación, el servidor mostrará la siguiente información indicando la ruta donde se guardará las claves para poder conectarnos con el cliente VPN:
* Notice:
Using Easy-RSA configuration from: /etc/openvpn/easy-rsa/pki/vars
* Notice:
Using SSL: openssl OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)
-----
* Notice:
Keypair and certificate request completed. Your files are:
req: /etc/openvpn/easy-rsa/pki/reqs/wiki2.req
key: /etc/openvpn/easy-rsa/pki/private/wiki2.key
Using configuration from /etc/openvpn/easy-rsa/pki/15e4e30d/temp.951a170b
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :ASN.1 12:'wiki2'
Certificate is to be certified until Feb 17 11:02:56 2027 GMT (1080 days)
Write out database with 1 new entries
Data Base Updated
* Notice:
Certificate created at: /etc/openvpn/easy-rsa/pki/issued/wiki2.crt
Client's cert found: wiki2.crt
Client's Private Key found: wiki2.key
CA public Key found: ca.crt
tls Private Key found: ta.key
========================================================
Done! wiki2.ovpn successfully created!
wiki2.ovpn was copied to:
/home/ubuntu/ovpns
for easy transfer. Please use this profile only on one
device and create additional profiles for other devices.
========================================================
Para poder descargar las claves, utilizaremos cliente TTY MobaXterm, que hace uso de una carcacterística que nos permite navegar fácilmente por los directorios del servidor remoto, pudiendo cargar y descargar archivos desde nuestro equipo local.
Para ello lo primero que haremos será conectarnos, introduciendo la IP del servidor, el usuario, el puerto y la clave privada tal y como se muestra en la imágen.
Acto seguido, procederemos a dirigirnos a la carpeta que se muestra en la imagen:
Y haremos click derecho sobre el archivo .ovpn y presionaremos la opción de descargar.
Una vez tengamos nuestro archivo de configuración, vamos a proceder a instalar el agente OpenVPN en nuestro equipo, para ello, podremos hacer click en el siguiente enlace: https://openvpn.net/client/
En este caso, hemos procedido a descargar el agente para Windows.
Una vez instalado, procederemos a conectarnos a la VPN. Para ello importaremos el archivo .ovpn que hemos descargado del servidor.
Una vez importado el archivo, podremos cambiar el "Profile Name" para poder identificar correctamente nuestra VPN en caso de contar con varias.
Acto seguido presionaremos en "Connect"
Ahora se nos pedirá la contraseña que suministramos durante la creación del usuario en el servidor VPN. Una vez intoducida, si es correcta, se iniciará automáticamente la conexión.
Si queremos conectarnos desde dispositivos móviles como smartphones o tablets, bastará con descargar la aplicación de OpenVPN e importar el archivo .ovpn.